Watson IoT Platform - MQTT - CleanSession 확인

처음으로 Watson IoT Platform을 사용해 보자는 분들을 위한 가이드입니다.
Watson IoT Platform 사용하기 에서 IoT 앱을 준비했습니다.
MessageSight 이동 에서 MQTT 브로커로 MessageSight를 준비했습니다.
Node-RED를 로컬 환경에서 실행
Watson IoT Platform - MQTT - Node-RED에서 pub/sub 에서 Node-RED에서 pub/sub 수 있도록 했습니다.

CleanSession = false (durable subscription) 기능 확인


  • MQTT의 CleanSession=false(durable subscription) 기능에 의해, 구독자(수신자)는 접속시에 CleanSession=false를 지정함으로써, 자신이 비접속중에 전달된 메시지에 대해서도 재접속시에 수신한다. 수 있습니다.

  • Node-RED 흐름을 복사하는 방법을 참조하여 다음 플로우를 복사하고 MQTT 노드의 주소를 환경에 맞 춥니 다.

  • CleanSession=false 확인
    [{"id":"42b340e4.dc4bd","type":"mqtt-broker","z":"375326d0.fda38a","broker":"192.168.100.100","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"418d3097.c29d28","type":"mqtt out","z":"375326d0.fda38a","name":"","topic":"/abc/def/ghi","qos":"","retain":"","broker":"42b340e4.dc4bd","x":250,"y":520,"wires":[]},{"id":"fec77fc6.405f2","type":"inject","z":"375326d0.fda38a","name":"","topic":"","payload":"こんにちは","payloadType":"str","repeat":"","crontab":"","once":false,"x":100,"y":520,"wires":[["418d3097.c29d28"]]}]
    
    


  • 다음 프로그램을 사용하여 구독합니다.

  • CleanSession=false 확인
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import paho.mqtt.client as mqtt
    
    topic = "/abc/def/ghi"
    clientID = "subTester"
    broker = "192.168.100.100"
    
    def on_connect(client, userdata, flags, rc):
        print("connected")
        client.subscribe(topic)
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+str(msg.payload))
    
    mqttc = mqtt.Client(clientID,clean_session=0)
    
    mqttc.on_connect = on_connect
    mqttc.on_message = on_message
    
    mqttc.connect(host=broker, port=1883, keepalive=60)
    
    mqttc.loop_forever()
    
    
  • 이 프로그램을 실행하여 MQTT 브로커에 연결했습니다. /abc/def/ghi 주제에 구독하십시오.
  • Node-RED 흐름에서 /abc/def/ghi 주제로 메시지를 보내 메시지가이 프로그램 (구독자)에 의해 수신되는지 확인하십시오.
  • 다음으로 이 프로그램을 종료합니다.
  • 다시 Node-RED의 플로우를 이용해 (필요에 따라서 inject 노드로부터 송신되는 캐릭터 라인을 「안녕하세요」등에 갱신하는 등 해), /abc/def/ghi 토픽에 메세지를 송신합니다.
  • 위의 구독자 프로그램을 다시 실행하여 다시 연결할 때 저장된 메시지가 수신되는지 확인합니다.
  • 좋은 웹페이지 즐겨찾기