Dans l'article précédent (http://qiita.com/yokobonbon/items/be0da968bba40b396187), j'ai expliqué qu'il était possible d'émuler facilement des appareils IoT avec Python.
Cette fois, j'aimerais surveiller facilement la vitalité de l'appareil en utilisant le mécanisme Pub / Sub d'AWS IoT.
La chose créée dans Article précédent sera utilisée, veuillez donc implémenter le contenu.
Du côté de l'appareil, on suppose que le certificat client et l'UUID de l'appareil sont spécifiés pour l'exécution. Il s'agit d'une implémentation simple qui enregistre un sujet pour la surveillance de la vie et de la mort du côté de l'appareil, et si un message y entre, il répondra.
Voici un exemple de code de 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)
La méthode d'abonnement MQTTClient surveille la rubrique «UUID / notification». Lorsqu'un message est écrit dans la rubrique, la méthode customCallback est appelée pour écrire le message dans la rubrique «UUID / événement». En conséquence, la surveillance de la vie et de la mort est simplement réalisée.
La valeur 1 dans le deuxième argument de la méthode subscribe représente la qualité de service de MQTT.
L'implémentation de l'application python fonctionne comme suit
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
Maintenant que l'appareil est prêt, vous pouvez envoyer un message au sujet à partir de la console AWS IoT. Dans la console AWS IoT, vous pouvez sélectionner «Test» pour envoyer un message à une rubrique «Publier» ou lire un message «S'abonner».
Tout d'abord, la rubrique 1234 / event sera renvoyée avec une vérification de l'état de l'appareil, alors abonnez-vous comme suit.
Ensuite, envoyez un message à la rubrique 1234 / notification que l'appareil attend:
Le côté appareil reçoit le message de rubrique et répond à 1234 / événement comme suit.
La surveillance de la vie et de la mort peut être facilement réalisée en renvoyant un message sur un autre sujet lorsqu'un message concerne un sujet spécifique. AWS IoT est génial car cela peut être réalisé par vous-même en quelques heures.
Recommended Posts