Watson IoT Platform - MQTT - Retain 확인

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

Retain 기능 확인


  • MQTT의 Retain 기능을 사용하면 동일한 주제에 대한 최신(마지막) 메시지를 브로커에 보관할 수 있습니다.
  • Retain은 게시할 때 게시자(발신자)가 메시지별로 지정할 수 있습니다.
  • 구독자(수신자)는
  • 접속되어 있으면 발행되었을 때 바로 수신할 수 있습니다 (당연히).
  • 나중에 구독해도, 브로커내에 RETAIN (유지) 되고 있는 최종판을 구독했을 때에 수신할 수 있습니다.

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

  • Retain 확인
    [{"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":"true","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"]]},{"id":"796ea0f6.918108","type":"debug","z":"375326d0.fda38a","name":"","active":true,"console":"false","complete":"false","x":630,"y":520,"wires":[]},{"id":"9520efe5.348c9","type":"mqtt in","z":"375326d0.fda38a","name":"","topic":"/abc/def/ghi","broker":"42b340e4.dc4bd","x":450,"y":520,"wires":[["796ea0f6.918108"]]}]
    
    


  • 우선 디폴트의 Retain를 false 로 해 배치해, inject 노드의 좌측의 버튼을 누르면, Debug 노드로부터 메세지가 출력되는 것을 확인합니다.
  • 그런 다음 mqtt out 노드의 Retain을 true로 설정하여 메시지를 한 번 보내십시오 (inject 노드의 왼쪽 버튼을 누르십시오).
  • 다음으로, 오른쪽의 mqtt in 노드를 열어 무엇인가 편집(예를 들어 노드의 Name 란에 이름을 입력하는 등) 해, 재배치하면,


  • 이 시점에서 Debug 출력에 저장된 Retain 메시지가 전달되는지 확인하십시오.

  • Retain 메시지를 브로커에서 삭제하려면 동일한 주제에 공백 페이로드를 보내면 삭제됩니다.
  • 아래와 같이 inject 노드의 송신 메세지를 공백으로 변경해, 배치합니다.
  • 배포 후 위와 유사한 작업으로 mqtt in 노드를 편집하고 다시 배포해도 이전에 유지 된 Retain 메시지가 더 이상 전달되지 않았는지 확인합니다.
  • 좋은 웹페이지 즐겨찾기