MQTT Publisher 상자 만들기 그 2

소개


  • MQTT Publisher 상자 만들기 」의 계속입니다.
  • TLS 연결을 지원해 보았습니다.

  • TLS MQTT Publisher 상자



    마지막 상자를 복사하여 TLS MQTT Pub 상자를 만듭니다.

    설정 항목


  • 포트를 8883으로 변경
  • Topic의 경로에 tls를 추가 (전회와의 구별을 위해서만입니다)
  • Certificate 매개 변수 추가

  • Certificate는 인증서의 파일 이름을 지정합니다. test.mosquitto.org를 사용하려면 이쪽에서 다운로드하십시오.



    사용할 인증서를 다음 위치에 배치합니다.



    파이썬 코드



    코드는 이런 식으로 합니다. 마지막으로 거의 변하지 않습니다. crt_file 을 취득해, 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()
    

    Choregraphe로 연결



    이것은 이전과 거의 같습니다.



    Subscriber 쪽



    Subscriber도 거의 같습니다.

    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()
    

    동작 확인



    Subscriber 실행



    PC에서 실행하고 주제에 대한 메시지를 받기 위해 기다립니다.
    $ python tls_sub.py
    

    Publisher 실행



    Choregraphe에서 프로그램을 실행하고 메시지를 보냅니다.

    결과 표시



    Publisher -> Broker -> Subscriber와 메시지가 전달되어 Subscriber 측에서 표시되었습니다.
    $ python tls_sub.py
    topic: my/topic/tls/pepper, payload: TLS Hello World from Pepper, qos: 0, retain: 0
    

    통신 내용 확인



    일단 SSL/TLS가 되어 있거나 패킷을 캡처해 봅니다. 내용의 세부 사항까지는 보지 않지만, 무엇인가 SSL/TLSv1 로 교환하고 있는 것 같은 것을 알 수 있습니다.



    감상


  • Topic 은 밖에서 건네줄 수 있도록 해 두는 편이 좋은 생각이 듭니다.
  • 다음은 Sub 상자를 수행합니다.
  • 그러나 3/31에서 Choregraphe가 만료됩니다 (울음
  • 좋은 웹페이지 즐겨찾기