Projekt RFLink ma już swoje lata i wiąże się z zakupem dedykowanej bramki.
http://www.rflink.nl/blog2/easyha
Bazuje jednak na bibliotekach Arduino i odnalazłem projekt w oparciu o ESP8266 i ESP32 z komunikacją MQTT:
Jak nie skorzystać skoro w domu stacja pogodowa z radiowymi czujnikami temperatury i wilgotności. Na dodatek czujniki znajdują się na liście obsługiwanych urządzeń.
Pozostało zaopatrzyć się w jakiś odbiornik radiowy. Tu nie ma większego znaczenia co użyjemy. Ja zakupiłem zestaw STX882 ASK nadajnik + odbiornik SRX882 za całe 12,50 PLN.
Projekt wymaga kompilacji własnego pliku bin. Z pomocą VSC i PlatformIO IDE udało się skompilować plik pod płytkę Wemos D1 mini.
firmware.bin (673,0 KB)
Program posiada bardzo przyjemny i prosty webowy interfejs. To z niego dokonujemy całej konfiguracji, łącznie z przypisaniem GPIO i konfiguracją MQTT.
Po poprawnym podłączeniu odbiornika radiowego do D1 mini - zaczęły płynąć odczyty z moich czujników temperatury i wilgotności do brokera MQTT pod tematem dom/ESP00/msg
Pod taką postacią:
20;0A;F007_TH;ID=45b30;TEMP=0017;HUM=86;BAT=OK;
20;09;F007_TH;ID=45f82;TEMP=00f1;HUM=42;BAT=OK;
Do tego odszukany w czeluściach warsztatu czujnik ruchu G-Hama TYPE: RF302PIR:
20;0B;EV1527;ID=0203fa;SWITCH=01;CMD=ON;
Pozostało stworzyć encje w HA. Tu wielkie podziękowania dla mojego mistrza szablonów @Stravi
Jak zawsze Dawid służył swoją wiedzą i chęcią pomocy. I tak powstały cztery sensory:
#czujniki RF433
- platform: mqtt
name: "RF_nord_temperatura"
state_topic: "dom/ESP00/msg"
unit_of_measurement: "°C"
value_template: >-
{% if "45b30" in value -%}
{% set temp = value.split(';')[4][5:] -%}
{% if (temp[:1] | int) > 0 -%}
{% set temp = "-" + temp[1:] -%}
{%- endif -%}
{{temp |int(base=16) /10 }}
{% else %}
{{states('sensor.RF_nord_temperatura')}}
{%- endif -%}
- platform: mqtt
name: "RF_nord_wilgotnosc"
state_topic: "dom/ESP00/msg"
unit_of_measurement: "°C"
value_template: >-
{% if "45b30" in value -%}
{{value.split(';')[5][4:] }}
{% else %}
{{states('sensor.RF_nord_wilgotnosc')}}
{%- endif -%}
- platform: mqtt
name: "RF_strych_temperatura"
state_topic: "dom/ESP00/msg"
unit_of_measurement: "°C"
value_template: >-
{% if "45f82" in value -%}
{% set temp = value.split(';')[4][5:] -%}
{% if (temp[:1] | int) > 0 -%}
{% set temp = "-" + temp[1:] -%}
{%- endif -%}
{{temp |int(base=16) /10 }}
{% else %}
{{states('sensor.RF_strych_temperatura')}}
{%- endif -%}
- platform: mqtt
name: "RF_strych_wilgotnosc"
state_topic: "dom/ESP00/msg"
unit_of_measurement: "%"
value_template: >-
{% if "45f82" in value -%}
{{value.split(';')[5][4:] }}
{% else %}
{{states('sensor.RF_strych_wilgotnosc')}}
{%- endif -%}
oraz czujnik binarny (PIR):
#czujnik PIR RF433
- platform: mqtt
name: PIR_RF
state_topic: dom/ESP00/msg
device_class: motion
force_update: true
off_delay: 10
value_template: >-
{% if "0203fa" in value -%}
{{ "ON" }}
{% else %}
{{states('binary_sensor.pir_rf')}}
{%- endif -%}
“inkludowane” do odpowiednich plików konfiguracji HA.
Proponuję wykonać własne próby z tym co się ma pod ręką. Otwarte protokoły radiowe wykorzystywane są w wielu różnych produktach i często się powtarzają.