[PYTHON] Créer une boîte de publication MQTT Partie 2

introduction

Boîte de publication TLS MQTT

Créez une boîte "TLS MQTT Pub" en copiant la boîte précédente.

Éléments de réglage

Pour Certificat, spécifiez le nom de fichier du certificat. Si vous souhaitez utiliser test.mosquitto.org, téléchargez-le depuis ici.

2015032901.png

Placez le certificat à utiliser à l'emplacement suivant.

2015032902.png

Code Python

Le code ressemble à ceci. C'est presque la même chose que la dernière fois. Je viens de récupérer le crt_file et de faire tls_set ().

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        self.framemanager = ALProxy("ALFrameManager")
        self.folderName = None

    def onUnload(self):
        import sys

        if self.folderName and self.folderName in sys.path:
            sys.path.remove(self.folderName)
        self.folderName = None

    def onInput_onStart(self, payload):
        import sys, os

        self.folderName = os.path.join(
            self.framemanager.getBehaviorPath(self.behaviorId), "../lib")
        if self.folderName not in sys.path:
            sys.path.append(self.folderName)

        import paho.mqtt.client as paho

        host       = self.getParameter("Broker Host")
        port       = self.getParameter("Broker Port")
        crt_file   = self.getParameter("Certificate")
        keep_alive = self.getParameter("KeepAlive")
        topic      = self.getParameter("Topic")
        qos        = self.getParameter("Qos")
        retain     = self.getParameter("Retain")

        mqttc = paho.Client()
        mqttc.tls_set(self.folderName + "/crts/" + crt_file)
        mqttc.connect(host, port, keep_alive)
        mqttc.publish(topic, payload, qos, retain)

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

Connectez-vous avec Choregraphe

C'est presque la même chose que la dernière fois.

2015032903.png

Côté abonné

L'abonné est presque le même.

tls_sub.py


import paho.mqtt.client as paho

def on_message(mqttc, obj, msg):
    print("topic: " + msg.topic + ", payload: " + str(msg.payload) + ", qos: " + str(msg.qos) + ", retain: " + s\
tr(msg.retain))

if __name__ == '__main__':
    mqttc = paho.Client()

    mqttc.on_message = on_message
    mqttc.tls_set("mosquitto.org.crt")
    mqttc.connect("test.mosquitto.org", 8883, 60)
    mqttc.subscribe("my/topic/tls/pepper", 0)

    mqttc.loop_forever()

Contrôle de fonctionnement

Exécuter l'abonné

Exécutez sur votre PC et attendez de recevoir un message pour le sujet.

$ python tls_sub.py

Exécutez Publisher

Exécutez le programme dans Choregraphe et envoyez un message.

Affichage des résultats

Le message Éditeur-> Courtier-> Abonné a été transmis et affiché du côté Abonné.

$ python tls_sub.py
topic: my/topic/tls/pepper, payload: TLS Hello World from Pepper, qos: 0, retain: 0

Confirmation du contenu de la communication

Pour le moment, essayez de capturer le paquet pour voir s'il s'agit de SSL / TLS. Je n'ai pas regardé les détails du contenu, mais je peux voir qu'il semble qu'ils communiquent avec SSL / TLSv1.

2015032904.png

Impressions

Recommended Posts

Créer une boîte de publication MQTT Partie 2
Créer une boîte de publication MQTT
Créer une boîte d'abonné MQTT
Créer un backend Blueqat ~ Partie 1
Créer un backend Blueqat ~ Partie 2
Créer une boîte HTTP Get
Créez un effecteur pour la visioconférence avec Spout + OpenCV + dlib (Partie 1)
Faisons une chemise IoT avec Lambda, Kinesis, Raspberry Pi [Partie 1]