Créez une boîte "TLS MQTT Pub" en copiant la boîte précédente.
Pour Certificat, spécifiez le nom de fichier du certificat. Si vous souhaitez utiliser test.mosquitto.org, téléchargez-le depuis ici.
Placez le certificat à utiliser à l'emplacement suivant.
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()
C'est presque la même chose que la dernière fois.
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()
Exécutez sur votre PC et attendez de recevoir un message pour le sujet.
$ python tls_sub.py
Exécutez le programme dans Choregraphe et envoyez un message.
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
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.
Recommended Posts