여러 Raspberry Pi 간에 메시지 연동

현재 우리 집에는 여러 대의 Raspberry Pi (Pi Zero w, wh)가 있으며, node-red-dashboard를 이용하여 WiFi 접속한 스마트폰에서 브라우저를 통해 조작하고 있습니다. 그러나 대수가 증가함에 따라 다시 보드를 여러 개 관리하는 것은 번잡했습니다. 거기서 dashboard를 기동하는 것은 1대로 해, 그 이외는 이 1대와의 메세지 제휴로 조작하기로 했습니다. 메시지 연계의 설정은 Node-RED상의 조작만으로 가능하므로, 자택에 복수대의 라즈파이를 가지고 통합적으로 관리하고 싶은 분은 꼭 시험해 보세요.

MQTT 브로커 도입



dashboard를 시작하는 한 대에 MQTT 브로커를 도입합니다(단 하나만). 도입 순서는 여기 에 알기 쉽게 구분되어 있습니다. 고맙게 참조하겠습니다.

MQTT 브로커 노드 배치



먼저 MQTT 브로커 노드를 배치합니다.
다음과 같은 설정입니다.


MQTT OUT 노드 배치



다음은 MQTT 브로커 노드를 배치하는 라즈파이의 IP 주소를 192.168.1.10으로 설명합니다. 적당히 자신의 IP 주소로 읽어 주세요. 메시지를 수신하는 측은 동일한 프라이빗 네트워크상(예를 들면 IP주소:192.168.1.20등)에 있으면 좋고, 수신측의 IP주소는 본건의 설정에는 불필요합니다.

우선 메시지 송신측의 라즈파이(192.168.1.10)에는 MQTT OUT 노드를 배치합니다(아래의 위로부터 세번째의 「mqtt」라고 쓰여진 노드).


"새로운 mqtt-broker 추가"의 오른쪽에있는 버튼을 클릭하면 다음 화면이 나타납니다.


서버와 포트를 설정하고 클릭하십시오. (설정할 IP 주소는 MQTT 브로커를 시작하는 서버의 IP 주소이므로 나중에 설정하는 MQTT IN 노드에서도 동일한 설정을 합니다.)
- 서버: 192.168.1.10
- 포트: 1883

이전 화면으로 돌아가서 주제에 다음을 설정합니다.
- 주제: test
※ 나중에 설정하는 MQTT IN 노드에서도 같은 주제를 설정하는 것으로, 이 MQTT OUT 노드로부터 송신되는 메세지를 IN 노드로 수신할 수 있습니다.

MQTT IN 노드 배치






MQTT OUT 노드의 서버 설정이 끝나면, 서버 란에는 「192.168.1.10:1883」을 선택할 수 있다고 생각하므로, 여기를 선택해, 토픽에는 이하를 설정합니다.
- 주제: test
※ MQTT OUT 노드의 설명에 기재한 대로, 메시지 연계하고 싶은 IN 노드와 OUT 노드의 토픽이 일치하고 있으면 좋기 때문에, 토픽으로서 설정한 test는 적절히 치환해 주세요.

이것으로 노드 준비가 종료됩니다.

메시지 연계



MQTT OUT 노드에 메시지를 입력하면 MQTT IN 노드에서 수신할 수 있습니다. 받은 메시지는 msg.payload에 저장되므로 후속 처리에서 사용할 수 있습니다. 이번에는 MQTT OUT 노드를 MQTT 브로커가 기동하고 있는 라즈파이에 배치했습니다만, 같은 프라이빗 네트워크상에 있으면 어느 단말간에서도 메세지 제휴가 가능해, 그 때 설정하는 서버도 방금 전과 같습니다. 그래서 한번 서버 설정을 해 버리면, 이후는 토픽의 일치하는 OUT과 IN을 준비하면 OUT에서 IN에 메시지를 연계하는 것이 가능합니다.

요약



오랫동안 썼지만 포인트는 다음과 같습니다.
1. MQTT IN 노드와 MQTT OUT 노드 모두 MQTT 브로커가 시작되는 라즈파이의 IP 주소를 지정합니다.
2. 주제를 일치시킴으로써 필요한 메시지만 수신 가능.

참고로 한 사이트



1분만에 IoT 환경 구축! Node-RED에서 MQTT 브로커를 시작하는 절차

좋은 웹페이지 즐겨찾기