본문으로 건너뛰기

MQTT 노드 자세히 사용하기

게이트웨이는 자체 HiveMQ 브로커를 같은 머신에 띄워두고 있습니다(default 포트 1883, TLS 1884). 외부 SCADA / 클라우드 IoT 와 연결할 때 표준 패턴.

2026.05+ 박스의 broker 연결 정보
  • Broker URL: tcp://127.0.0.1:1883 (plain) / ssl://127.0.0.1:1884 (TLS)
  • Username / Password: app.propertiesmqtt.server.user / mqtt.server.password — 양산 박스는 박스마다 random (/etc/kopens/credentials.txt 에서 확인). entrypoint 가 HiveMQ auth.properties 자동 sync.
  • MQTT 5 지원 (HiveMQ 2025.4): retained / will / session expiry / shared subscriptions full feature.
  • Sparkplug B 와 같은 broker 공유 — 동시에 spBv1.0/# 구독해서 모니터링 가능.

1. 노드 종류

노드용도
mqtt in토픽을 구독 — 메시지가 도착할 때마다 흐름이 시작됨
mqtt out메시지를 발행 (publish)

2. Broker(서버) 설정 — 한 번만 만들면 모든 노드에서 공유

mqtt in 또는 mqtt out 노드를 더블클릭 → Server 칸 우측 연필 아이콘 → 새 broker 설정.

항목권장 값
ConnectionServer127.0.0.1 (게이트웨이 자체 HiveMQ) 또는 외부 브로커 IP
Port1883 (TLS 시 8883)
Client ID비우면 자동 생성. 운영 환경에선 고정 ID 권장 (edge-<게이트웨이ID>-flow1 등)
Keep alive60 초 권장
Use TLS외부 클라우드 연결 시 ON
SecurityUsername/Password브로커 인증 사용 시
MessagesLWT (Last Will)edge/<id>/status 토픽 + payload offline — 게이트웨이가 갑자기 죽을 때 자동 알림
MessagesBirth연결되면 edge/<id>/statusonline 을 retain 발행

3. 발행(mqtt out) — 시나리오: 모든 태그값을 클라우드로

inject (1s) ──▶ 태그값 읽기 ──▶ change (topic 만들기) ──▶ mqtt out

change 노드:

동작PropertyTo
Setmsg.topicplant/${msg.payload.tag_id}/value (J-Expression ${...} 또는 mustache)
Setmsg.payload{ "ts": $millis(), "v": msg.payload.value, "q": msg.payload.value_read_status } (JSONata)

mqtt out 노드 설정:

항목
Topic(비워둠 → msg.topic 사용)
QoS1 (한 번은 도착 보장) — 평범한 텔레메트리는 0 도 OK
Retainfalse (실시간 값) — 상태성 데이터라면 true

4. 구독(mqtt in) — 시나리오: 외부에서 들어온 명령으로 태그 쓰기

mqtt in (plant/+/cmd) ──▶ change (tagId/value 추출) ──▶ 태그값 쓰기

mqtt in:

항목
Topicplant/+/cmd (와일드카드 + = 한 단계)
QoS1
Outputparsed JSON object — payload 가 자동으로 객체화됩니다

change:

동작PropertyTo
Setmsg.tagIdmsg.topic.split('/')[1] (JSONata)
Movemsg.payload.valuemsg.payload(그대로 쓰기 노드에 넣기)

이렇게 하면 외부 SCADA 가 plant/TAG_VALVE_01/cmd 토픽에 {"value":"1"} 만 publish 하면 게이트웨이가 PLC 에 그 값을 씁니다.


5. 자주 빠지는 함정

증상원인 / 해결
메시지가 한 번도 안 옴토픽 와일드카드(#/+) 오타. MQTT Explorer 같은 별도 툴로 토픽 트리 확인
클라이언트가 자꾸 끊김Client ID 충돌(다른 클라이언트가 같은 ID 로 접속) — 고유 ID 부여
Retain 메시지가 무한히 쌓임같은 토픽에 매번 retain true publish. retain 은 상태성 (online/offline, 마지막 알람) 에만 사용
메시지 순서가 이상QoS 0 의 한계. 순서 중요하면 QoS 1+

6. 다음 단계