준비물
- GPIO 핀헤더 작업이 된 ESP8266 또는 ESP32 기반 모듈 (이하 모듈)
- RF433Mhz 수신기 (SRX882)
- RF433Mhz 송신기 (STX882)
작업과정
1. 모듈의 GPIO0번-GND를 쇼트 후(펌웨어업로드모드로 진입) 전원 인가
2. https://tasmota.github.io/install/ 에서 Tasmota Sensors Firmware로 Flash 작업 수행
3. RF433Mhz 수신기(SRX882)를 점퍼선 등을 이용해 모듈과 연결
- 4개의 핀헤더 부위가 있음 VCC, CS, DATA, GND
-- VCC = 모듈의 5V핀에 연결
-- CS = VCC와 같이 연결되도록 함. (SRX882의 VCC와 CS를 연결)
-- DATA = 모듈의 GPIO4번(D2)에 연결
-- GND = 모듈의 GND핀에 연결
4. RF433Mhz 송신기(STX882)를 점퍼선 등을 이용해 모듈과 연결
- 3개의 핀헤더 부위가 있음 VCC, DATA, GND
-- VCC = 모듈의 5V핀에 연결
-- DATA = 모듈의 GPIO5번(D1)에 연결
-- GND = 모듈의 GND핀에 연결
5. Tasmota를 WiFi 연결 및 MQTT설정 후, 위 단계에서 지정한 GPIO모듈 설정
- D2 GPIO4 = RFrecv 선택
- D1 GPIO5 = RFSend 선택
6. RF리모콘 등 RF433 신호를 송신할수있는 장치에서 눌러보면, Tasmota Console에서 다음과 같이 메시지 수신됨.
{"Time":"2022-11-04T14:16:07","RfReceived":{"Data":"0xXXXXXX","Bits":24,"Protocol":17,"Pulse":500}}
7. HomeAssistant에 설정되어있는 MQTT 서버로 Autodiscovery 를 위해 아래의 코드를 지정된 topic에 publish함.
- 지정된 topic의 예시
homeassistant/sensor/rfbridge/signal/config
- publish 대상 메시지의 예시
{
"name" : "RfBridge Signal",
"unique_id" : "rfbridge_signal",
"~" : "tele/tasm01",
"state_topic" : "~/RESULT",
"value_template" : "{{ value_json.RfReceived.Data }}",
"json_attributes_topic" : "~/RESULT",
"availability" : [
{
"payload_available" : "Online",
"payload_not_available" : "Offline",
"topic" : "~/LWT"
}
],
"device" : {
"identifiers" : [
"Tasm01"
],
"manufacturer" : "Tasmota",
"model" : "NodeMCU",
"name" : "RfBridge",
"sw_version" : "12.2.0"
}
}
8. MQTT Publish message 후에, Home Assistant에서 추가된 디바이스 확인 가능
9. Home Assistant 개발자 도구에서 추가한 장비(예제에서는 sensor.rfbridge_rfbridge_signal)에서 모듈에서 수신된 RF433 데이터를 확인할 수 있음
10. 수신된 RF433 데이터를 기반으로 자동화 구성.
- 예시: 텔레그램으로 메시지 발송
automation:
- id: Automation__RfBridge_Button_Pressed
alias: RfBridge Button Pressed
mode: queued
trigger:
- platform: state
entity_id:
- sensor.rfbridge_rfbridge_signal
action:
- service: telegram_bot.send_message
data:
message: "Button {{ trigger.to_state.state }} pressed"
[참고] 위의 경우, 의도하지 않은 동작이 발생할 수 있음. Home Assistant의 동작발동조건(trigger)는 변경에만 응답함. 즉 동일한 메시지포맷의 RF433신호가 반복적으로 들어올 경우, 첫번째 RF433 신호에만 반응하고, 다음 신호는 상태(state)가 변경되지 않았기에 반응하지 않음. 이를 정교하게 하기 위한 방식으로는 해당 자동화의 동작(action) 마지막을 mqtt.publish 서비스를 한번 더 호출하여, topic을 초기화해주는 방식으로 처리할 수 있음. (만약, 자동화를 Data:0xXXXXX로 조건을 설정하였을 경우, Data:0x0000형태로 임의의 값을 입력하는 방식으로 구성)
[참고2] 마찬가지로, Tasmota 모듈이 네트워크 연결이 해제된 경우(unavailable 또는 unknown) sensor값이 이전 상태의 Data값으로 복원되기에 자동화 발동 조건에 따라 의도하지 않게 실행이 될 수 있음. 따라서 오프라인에서 복구되는 경우를 제외한 자동화로 아래와 같이 변경할 수 있음.
automation:
- id: Automation__RfBridge_Button_Pressed
alias: RfBridge Button Pressed
mode: queued
trigger:
- platform: state
entity_id:
- sensor.rfbridge_rfbridge_signal
attribute: Time
condition: |-
{{ trigger.to_state.state not in ( "unavailable", "unknown" )
and
trigger.from_state.state != "unavailable"
}}
action:
- service: telegram_bot.send_message
data:
message: "Button {{ trigger.to_state.state }} pressed"
'OpenSource > HomeAssistant' 카테고리의 다른 글
HomeAssistant File Editor 애드온(addon) 401 : Unauthorized 오류 해결 (0) | 2024.09.11 |
---|---|
Home Assistant 통합구성요소 - MJPEG IP Camera 설정 방법 (0) | 2024.05.06 |
Home Assistant Core 2024.5. 업데이트 노트 (번역) (0) | 2024.05.05 |
WT32-ETH01 ESP32 2CH RELAY Module(TabSpace TSE-ER011) Tasmota Firmware 업데이트 가이드 (0) | 2024.05.02 |
Home Assistant tasmota_irhvac climate 카드 온도조절 안될때 해결방법 (0) | 2024.01.19 |