본문으로 건너뛰기
블로그›2026. 8. 28.

Node-RED MQTT 메시지로 온도 제어하기

Node-RED MQTT 메시지로 온도 제어하기

값을 읽는 것까지는 앞선 글들에서 다뤘습니다. 이 글은 한 걸음 더 나아가 읽은 값에 따라 무언가를 켜고 끄는 흐름입니다.

Node-RED에서 온도를 구독하고, 기준을 넘으면 MQTT로 제어 명령을 내보내는 구성을 만듭니다.

시작하기 전에 — 자동 제어의 책임

설비를 실제로 움직이는 흐름을 만드시는 것입니다. 아래를 먼저 정하십시오.

  • 현장 인터록이 최종 판단을 하게 하십시오. Node-RED 명령이 안전 조건을 건너뛰면 안 됩니다.
  • 통신이 끊겼을 때 어떻게 할지 정하십시오. 마지막 명령이 무한정 유지되는 것이 위험한 경우가 많습니다.
  • 수동 복구 수단을 남겨 두십시오.
  • 시험은 실제 부하를 분리한 상태에서 하십시오.

Node-RED는 편리하지만, PC가 꺼지면 흐름도 멈춥니다. 멈춰서는 안 되는 제어를 여기에 맡기지 마십시오. 그런 제어는 PLC 래더에 있어야 합니다.

히스테리시스를 반드시 넣으십시오

가장 흔한 실수가 기준값 하나로 켜고 끄는 것입니다.

if (온도 > 30) 켜기
else 끄기

이렇게 하면 온도가 30 근처에서 흔들릴 때 1초에도 여러 번 켜고 꺼집니다. 릴레이 접점과 설비 모두에 나쁩니다.

대신 켜는 기준과 끄는 기준을 벌려 두십시오.

if (온도 > 32) 켜기
if (온도 < 28) 끄기
그 사이에는 현재 상태 유지

이 4도의 간격이 히스테리시스입니다. 설비 특성에 맞춰 폭을 정하시면 됩니다. 반응이 느린 설비일수록 넓게 잡습니다.

Step 1. 준비

Node-RED 설치와 MQTT 브로커가 필요합니다. 온도 값이 이미 MQTT로 발행되고 있어야 합니다.

Step 2. 온도 값 수신 확인

MQTT in → debug 로 온도 값이 들어오는지 먼저 확인합니다. 여기서 값이 안 보이면 다음 단계로 가지 마십시오.

Step 3. 조건 판단 흐름 구성

switch 노드로 기준을 나누거나, function 노드에서 히스테리시스를 직접 구현합니다. 현재 상태를 기억해야 하므로 function 노드의 컨텍스트를 쓰시면 됩니다.

Step 4. 제어 명령 발행

MQTT out 노드로 제어 토픽에 값을 발행합니다. 구독 측(EASY-LINK)이 이 값을 받아 릴레이나 PLC에 씁니다.

Step 5. 동작 확인

온도를 인위적으로 올려 보며 켜짐·꺼짐이 의도대로 동작하는지, 경계에서 떨리지 않는지 확인하십시오.

잘 안 될 때 확인할 것

  1. 온도 값이 안 들어온다 — 구독 토픽 문자열과 브로커 접속을 확인합니다.
  2. 제어가 안 걸린다 — 발행 토픽이 EASY-LINK의 구독 토픽과 정확히 같은지 확인합니다.
  3. 경계에서 계속 켜졌다 꺼진다 — 히스테리시스를 넣으십시오.
  4. 값이 문자열이라 비교가 안 된다 — Number()로 변환하거나 json 노드를 붙이십시오.
  5. Node-RED를 재시작하면 상태가 초기화된다 — 컨텍스트를 파일에 저장하도록 설정하거나, 시작 시 현재 상태를 읽어 오는 흐름을 두십시오.

자주 묻는 질문

릴레이를 직접 제어하려면? 필드 I/O 릴레이 원격 제어를 참고하십시오.

인버터 주파수를 조절하는 것도 됩니까? E700·G100 인버터 제어에 정리해 두었습니다.

PLC에 맡기는 것과 무엇이 다릅니까? PLC는 멈추지 않고 응답이 확정적입니다. Node-RED는 유연하지만 PC와 네트워크에 의존합니다. 안전에 관련된 제어는 PLC, 편의 기능은 Node-RED가 원칙입니다.


도입을 검토하신다면

현장 조건에 맞는 모델 선정이나 프로토콜 적용 가능 여부가 궁금하시면 문의해 주세요. 사용 중인 PLC 기종과 수집하려는 데이터만 알려주시면 구성안을 잡아 드립니다.

관련 글

← 목록으로 돌아가기