Home Assistant와 MQTT로 센서 자동화 구축
Home Assistant와 MQTT 연동 과정을 초보자 시각에서 단계별로 설명하며, ha mqtt 센서 설정과 home assistant mqtt 자동화 예제를 포함한 실무 중심 설명
목차
소개
홈 오토메이션에서 센서 데이터를 안정적으로 수집하고 자동화에 연결하려면 MQTT가 유용하다. 이 글은 home assistant mqtt 연동 전체 흐름을 처음 접하는 사람도 이해하기 쉽게 정리한다. 핵심은 브로커 설치, HA 설정, 센서 토픽 설계 그리고 자동화 적용 순서다.
필요한 준비물
- Home Assistant 설치 환경(라즈베리파이, VM, NAS 등)
- MQTT 브로커(예: Mosquitto) 설치 공간
- 센서 또는 장치(MQTT 지원 혹은 게이트웨이)
- 간단한 YAML 편집 가능성
MQTT 브로커 설치와 기본 설정
Mosquitto 설치(간단 안내)
라즈베리파이 기준으로 Mosquitto를 사용하면 설정이 쉽다. 설치 후 사용자 계정과 비밀번호를 생성하고 포트 1883을 열어 둔다. 보안이 필요하면 TLS를 적용한다.
브로커 테스트
브로커가 정상 동작하는지 확인하려면 MQTT 클라이언트로 토픽을 발행하고 구독해 본다. 예를 들어 로컬에서 토픽을 발행하면 동일 토픽을 구독한 클라이언트가 메시지를 받는다.
mosquitto_pub -h 192.168.1.10 -t home/sensor/temperature -m "23.5"
mosquitto_sub -h 192.168.1.10 -t home/sensor/temperature
Home Assistant 설정
MQTT 통합 연결
Home Assistant에서는 통합(Integrations) 메뉴에서 MQTT를 추가하거나 configuration.yaml에 직접 설정할 수 있다. 통합을 통해 브로커 주소, 포트, 사용자 정보를 입력하면 HA와 MQTT가 연결된다. 아래는 configuration.yaml에 직접 추가하는 예시다.
mqtt:
broker: 192.168.1.10
port: 1883
username: your_user
password: your_password
discovery: true
discovery_prefix: homeassistant
discovery를 활성화하면 일부 장치는 자동으로 등록된다. 그러나 커스텀 센서는 직접 ha mqtt 센서 설정이 필요하다.
MQTT 센서 설정 예제
직접 센서를 등록하려면 sensor 항목에 MQTT 플랫폼을 사용한다. 주제(topic)와 값을 파싱하는 방법을 지정한다.
sensor:
- platform: mqtt
name: "온도 센서 거실"
state_topic: "home/sensor/livingroom/temperature"
unit_of_measurement: "°C"
value_template: "{{ value_json.temperature }}"
qos: 1
expire_after: 300
위 예제는 센서가 JSON 형태로 온도를 보낼 때 사용한다. 단순 값이면 value_template 없이 state_topic만으로 동작한다.
home assistant mqtt 자동화 예제
센서 값을 바탕으로 자동화를 만들면 집을 더 똑똑하게 운영할 수 있다. 다음 예제는 거실 온도가 22°C 이하일 때 난방 스위치를 켜는 자동화다.
automation:
- alias: '거실 온도 낮음 시 난방 켜기'
trigger:
- platform: numeric_state
entity_id: sensor.온도_센서_거실
below: 22
action:
- service: switch.turn_on
target:
entity_id: switch.livingroom_heater
자동화에서 entity_id는 설정한 센서 이름을 사용한다. sensor 엔티티명이 한글인 경우 시스템에서 자동 변환될 수 있으니 개발자 도구에서 정확한 엔티티 아이디를 확인한다.
MQTT 토픽 설계와 페이로드 권장 방식
- 토픽 트리: home/device_type/device_id/attribute 형식을 권장
- JSON 페이로드 사용으로 여러 속성 전송 가능
- retain 플래그는 상태 재시작 시 필요하면 사용
- QoS는 신뢰도 고려해 0~2 중 선택
토픽 예:
home/sensor/door/front/state -> "open" 또는 "closed"
home/sensor/livingroom/temperature -> "{\"temperature\":23.5, \"battery\":95}"
발행 예:
mosquitto_pub -t home/sensor/door/front/state -m "open" -r
디스커버리 사용과 수동 등록 비교
discovery를 사용하면 많은 장치가 자동 등록되어 편리하다. 반면 세밀한 제어와 이름 규칙을 유지하려면 수동으로 ha mqtt 센서 설정을 하는 것이 좋다. 혼용해서 사용하는 것도 가능하다.
문제 해결과 체크리스트
- 브로커 접속 정보가 정확한지 확인
- 포트와 방화벽 설정 확인
- 토픽과 페이로드 형식이 HA 설정과 일치하는지 점검
- 엔티티 아이디는 개발자 도구에서 확인
- retain 메시지로 오래된 상태가 남아 있는지 검사
운영 팁과 보안 권장사항
- 브로커 접근은 내부망으로 제한하고 외부 노출 시 TLS 및 인증을 적용
- 민감 정보는 토픽에 직접 노출하지 않음
- 로그 레벨을 적절히 설정해 문제 발생 시 원인 추적을 쉽게 함
- OTA 또는 자동 갱신 스크립트로 시스템 일관성 유지
마무리
이 글은 home assistant mqtt 연동 과정을 단계별로 설명하고 ha mqtt 센서 설정과 home assistant mqtt 자동화 예제를 제공했다. 브로커 설치부터 센서 설계, 자동화 적용까지 실무에서 바로 활용 가능한 흐름을 제시하므로 초기 구성과 운영에 참고 자료로 활용하기 용이하다.