[PYTHON] AWS IoT Device Alive Monitoring

Einführung

Im vorherigen Artikel (http://qiita.com/yokobonbon/items/be0da968bba40b396187) habe ich erklärt, dass es einfach ist, IoT-Geräte mit Python zu emulieren.

Dieses Mal möchte ich die Lebendigkeit des Geräts mithilfe des Pub / Sub-Mechanismus von AWS IoT einfach überwachen.

Vorbereitung

Das in Vorheriger Artikel erstellte Objekt wird verwendet. Implementieren Sie daher den Inhalt.

Geräteseitige (Python) Implementierung

Auf der Geräteseite wird davon ausgegangen, dass das Client-Zertifikat und die UUID des Geräts zur Ausführung angegeben sind. Es handelt sich um eine einfache Implementierung, die ein Thema für die Überwachung von Leben und Tod auf der Geräteseite registriert. Wenn dort eine Nachricht eingeht, wird sie beantwortet.

Unten finden Sie einen Beispielcode für Python

class AWSIoTClient:
    def __init__(self, endpoint, rootCA, key, cert, uuid):
        self.myMQTTClient = AWSIoTMQTTClient("python-thing")
        self.myMQTTClient.configureEndpoint(endpoint, 8883)
        self.myMQTTClient.configureCredentials(rootCA, key, cert)
        self.myMQTTClient.configureOfflinePublishQueueing(-1)  # Infinite offline Publish queueing
        self.myMQTTClient.configureDrainingFrequency(2)  # Draining: 2 Hz
        self.myMQTTClient.configureConnectDisconnectTimeout(10)  # 10 sec
        self.myMQTTClient.configureMQTTOperationTimeout(5)

        self.notificationTopic = uuid + "/notification"
        self.eventTopic = uuid + "/event"

    def start(self):
        self.myMQTTClient.connect()
        print "Wating for : " + self.notificationTopic
        self.myMQTTClient.subscribe(self.notificationTopic, 1, self.customCallback)

    def customCallback(self, client, userdata, message):
        print message.payload
        callbackMessage = "{\n    I'm healthy\n}"
        client.publish(self.eventTopic, callbackMessage, 1)

def main():
    args = Args()
    client = AWSIoTClient(args.getEndpoint(), args.getRootCA(), args.getKey(), args.getCert(),
                          args.getUUID())
    client.start()
    while True:
        time.sleep(1)

Die Abonnementmethode MQTTClient überwacht das Thema "UUID / Benachrichtigung". Wenn eine Nachricht in das Thema geschrieben wird, wird die customCallback-Methode aufgerufen, um die Nachricht in das Thema "UUID / Ereignis" zu schreiben. Dadurch wird die Überwachung von Leben und Tod einfach realisiert.

Der Wert 1 im zweiten Argument der Subscribe-Methode repräsentiert den QOS von MQTT.

MQTClient API-Referenz

Die Implementierung der Python-App funktioniert wie folgt

python python-thing.py -e XXXX.iot.ap-northeast-1.amazonaws.com -r root-CA.crt -c test_thing.cert.pem -k test_thing.private.key -u 1234

Funktionsprüfung mit der AWS IoT-Konsole

Nachdem das Gerät bereit ist, können Sie über die AWS IoT-Konsole eine Nachricht an das Thema senden. In der AWS IoT-Konsole können Sie "Test" auswählen, um eine Nachricht an ein Thema "Veröffentlichen" zu senden oder eine Nachricht "Abonnieren" zu lesen.

Zunächst wird das Thema 1234 / event mit einer Integritätsprüfung vom Gerät zurückgegeben. Abonnieren Sie es daher wie folgt.

スクリーンショット 2017-01-15 18.33.17.png

Senden Sie dann eine Nachricht an das 1234 / Benachrichtigungsthema, auf das das Gerät wartet:

スクリーンショット 2017-01-15 18.32.50.png

Die Geräteseite empfängt die Themennachricht und antwortet wie folgt auf 1234 / Ereignis.

スクリーンショット 2017-01-15 18.38.19.png

abschließend

Die Überwachung von Leben und Tod kann leicht realisiert werden, indem eine Nachricht an ein anderes Thema zurückgegeben wird, wenn eine Nachricht an ein bestimmtes Thema kommt. AWS IoT ist großartig, da dies in wenigen Stunden von Ihnen selbst erreicht werden kann.

Recommended Posts

AWS IoT Device Alive Monitoring
Einfaches und einfaches IoT-Leben mit Micropython!
crond ist tot, also sprechen Sie über die Überwachung von Leben und Tod mit zabbix
Ich habe versucht, Linux (CentOS 7) mit dem Überwachungsserver Zabbix lebend zu überwachen (Ping)
Einfache Verbindung zwischen Raspberry Pi und AWS IoT
Python-Mock, um AWS IoT Device Shadow auszuprobieren
Beispiel für ein Raspberry Pi und AWS IoT-Verbindungsprogramm
[blackbird-dynamodb] Überwachung von AWS DynamoDB
[blackbird-rds] Überwachung von AWS RDS
[blackbird-sqs] Überwachung von AWS SQS
[blackbird-elb] Überwachung von AWS ElasticLoadBalancing
Ich habe AWS Iot ausprobiert
Führen Sie das AWS IoT Device SDK für Python auf Raspberry Pi aus
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack