[PYTHON] Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm

Annahme

Umgebung

Programmstruktur

PubSub Abbildung 1.png

Programm

――Das Folgende ist ein Programm, das auf Raspberry Pi ausgeführt werden soll.

MQTTpub_test1_qiita.py


from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import os
import json
import time

CLIENT_ID = "mqtt_pub1"
IOT_ENDPOINT_URL = "XXX-XXX.XXX.ap-northeast-1.amazonaws.com"
IOT_ENDPOINT_PORT = 8883

PATH = os.getcwd()
ROOT_CA_PATH = PATH + "/XXX-CA1.pem"
PRIVATE_KEY_PATH =  PATH + "/XXX-private.pem.key"
CERTIFICATE_PATH =  PATH + "/XXX-certificate.pem.crt"

KEEP_ALIVE_TIME = 60

TOPIC = "rasp3-mono/timestamp"

myMQTTClient = AWSIoTMQTTClient(CLIENT_ID)
myMQTTClient.configureEndpoint(IOT_ENDPOINT_URL, IOT_ENDPOINT_PORT)
myMQTTClient.configureCredentials(ROOT_CA_PATH, PRIVATE_KEY_PATH, CERTIFICATE_PATH)

myMQTTClient.configureOfflinePublishQueueing(-1)
myMQTTClient.configureDrainingFrequency(2)
myMQTTClient.configureConnectDisconnectTimeout(10)
myMQTTClient.configureMQTTOperationTimeout(5)

def GetTimeStamp():
  return time.time()

if __name__ == '__main__':
  myMQTTClient.connect(KEEP_ALIVE_TIME)

  num = 0
  while num < 10:
    message = {}
    message['num'] = num
    message['time'] = GetTimeStamp()
    payload = json.dumps(message)
    print("payload=", payload)
    myMQTTClient.publish(TOPIC, payload, 1)
    num += 1
    time.sleep(5)

MQTTsub_test1_qiita.py


from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import os
import json
import time

CLIENT_ID = "mqtt_sub1"
IOT_ENDPOINT_URL = "XXX-XXX.XXX.ap-northeast-1.amazonaws.com"
IOT_ENDPOINT_PORT = 8883

PATH = os.getcwd()
ROOT_CA_PATH = PATH + "/XXX-CA1.pem"
PRIVATE_KEY_PATH =  PATH + "/XXX-private.pem.key"
CERTIFICATE_PATH =  PATH + "/XXX-certificate.pem.crt"

KEEP_ALIVE_TIME = 60

TOPIC = "rasp3-mono/timestamp"

myMQTTClient = AWSIoTMQTTClient(CLIENT_ID)
myMQTTClient.configureEndpoint(IOT_ENDPOINT_URL, IOT_ENDPOINT_PORT)
myMQTTClient.configureCredentials(ROOT_CA_PATH, PRIVATE_KEY_PATH, CERTIFICATE_PATH)

myMQTTClient.configureOfflinePublishQueueing(-1)
myMQTTClient.configureDrainingFrequency(2)
myMQTTClient.configureConnectDisconnectTimeout(10)
myMQTTClient.configureMQTTOperationTimeout(5)

def customCallback(client, userdata, message):
    dict_message = json.loads(message.payload)
    print("num = {}, Time Difference = {}".format(dict_message['num'], time.time() - dict_message['time']))

if __name__ == '__main__':
  myMQTTClient.connect(KEEP_ALIVE_TIME)

  num = 0
  while num < 12:
    myMQTTClient.subscribe(TOPIC, 1, customCallback)
    num += 1
    time.sleep(5)

Ausführungsbeispiel

Ausgabebeispiel_Abbildung 2.png

Vergleich

  1. Testen Sie die Verbindung zu AWS IoT Message Prober über WLAN
  2. Testen Sie die Verbindung zum AWS IoT-Nachrichtenbroker über iPhone Tethering (4G).

――Wenn ich 30 Mal Pub / Sub ausgeführt habe, war das Ergebnis der Zeitverzögerung wie folgt. 比較_図3.png

――Die Zeitverzögerung hängt von der Kommunikationsumgebung ab und dient nur als Referenz. ―― Wie oben erwähnt, wurde der Verbindungstest mit dem Pub / Sub-Programm abgeschlossen.

Recommended Posts

Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm
Einfache Verbindung zwischen Raspberry Pi und AWS IoT
Senden Sie Daten von Raspberry Pi mit AWS IOT
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Führen Sie das AWS IoT Device SDK für Python auf Raspberry Pi aus
MQTT auf Raspberry Pi und Mac
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
AWS IoT Device Alive Monitoring
Erstellen Sie ein IPSec-Gateway-VPN mit CentOS 8 und openSUSE (Raspberry Pi) - 2 StrongSwan VPN-Verbindungsbestätigung
Raspberry Pi 3 x Julius (Lese- und Grammatikdatei)
MQTT Radicon Car mit Arduino und Himbeere
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Bearbeiten und debuggen Sie den Code in Raspberry Pi mit der SSH-Verbindungsfunktion von VSCode
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi - 2 StrongSwan VPN-Verbindungsbestätigung
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 2) ~ ESP32-Einstellung L Chika
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Überwachen Sie die Temperatur mithilfe der Cloud-IoT-Plattform Raspberry Pi + Alibaba
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Installation von Docker auf Raspberry Pi und L Chika
Installieren Sie pyenv auf Raspberry Pi, um Python zu verwalten
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Verwenden Sie raspberryPi und Julius (Spracherkennung). ③ Wörterbucherstellung
Erstellen Sie Ihre eigene IoT-Plattform mit raspberrypi und ESP32 (Teil 3) ~ ESP32-Einstellungen Analoger Temperatursensor
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens