Erstellen Sie ein Feld "TLS MQTT Pub", indem Sie das vorherige Feld kopieren.
Geben Sie unter Zertifikat den Dateinamen des Zertifikats an. Wenn Sie test.mosquitto.org verwenden möchten, laden Sie es von hier herunter.
Platzieren Sie das zu verwendende Zertifikat an der folgenden Stelle.
Der Code sieht so aus. Es ist fast das gleiche wie beim letzten Mal. Ich bekomme nur die crt_file und mache 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()
Dies ist fast das gleiche wie beim letzten Mal.
Abonnent ist fast der gleiche.
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()
Führen Sie es auf Ihrem PC aus und warten Sie, bis Sie eine Nachricht zum Thema erhalten.
$ python tls_sub.py
Führen Sie das Programm in Choregraphe aus und senden Sie eine Nachricht.
Die Nachricht Publisher-> Broker-> Subscriber wurde übertragen und auf der Subscriber-Seite angezeigt.
$ python tls_sub.py
topic: my/topic/tls/pepper, payload: TLS Hello World from Pepper, qos: 0, retain: 0
Versuchen Sie vorerst, das Paket zu erfassen, um festzustellen, ob es sich um SSL / TLS handelt. Ich habe mir die Details des Inhalts nicht angesehen, aber ich kann sehen, dass sie anscheinend mit SSL / TLSv1 kommunizieren.
Recommended Posts