Kedves Blogolvasó!
Ebben a leírásban megmutatom, hogy hogyan készítek egy NodeMcu 433Mhz Sniffer-t, amit Home Assistant alá integrálok. Konyhanyelven: csináltam egy 433 Mhz-es vevő-t, ami a Home Assistant alá betolja a 433Mhz-es nyitásérzékelőim, és a csengő státuszát.
A snifferhez felhasznált eszközök:
RXB6 – 433 Mhz Szuperheterodin vevő
Kapcsolási rajz:
A száraz műszaki leírás után pár szóban arról, hogy miért ezt a megoldást választottam. Az ok egyszerű, nálam egyirányú kommunikáció van a 433mhz-es eszközök irányából. Nem kapcsolok 433 Mhz-en lámpát, nem nyitom vele a garázs kaput, ezért nem érte meg vennem egy Gateway-t. Bár egyébként, ha kapcsolnék sem biztos, hogy vettem volna Gateway-t, mert olcsóbb építeni.
Első körben egy másik 433Mhz-es vevővel próbálkoztam. A sima 433Mhz adó-vevő páros vevőjét akartam használni vevőnek, de sajnos az elég gyengének és zajosnak bizonyult. Egyszerűen ezeknek az elemes eszközöknek az adója, annyira gyenge jelet sugároz, hogy azt csak egy szuperheterodin vevővel lehet tökéletesen begyűjteni. A tapasztalatom az volt, hogy 2 méter távolság után az adó eszköz által sugárzott jelsorozat fele kiesett, így pedig teljesen használhatatlan volt. Egy erősebb jelet sugárzó eszköz pl. egy távirányító jelét simán veszi 30-50 méterről. Viszont ez jelen esetben nem segített a helyzeten, de menjünk is tovább.
Home Assistant integráció
Gondolom ha NodeMcu már mindenki kitalálta, hogy ESPhome-mal készül el a bináris a 433Mhz Sniffer-re. Szerencsére ESPhome alá tökéletesen integrálták az RC-Switch könytárat, és ennek köszönhetően nagyban megkönnyítik mindenki dolgát, aki 433Mhz-es eszközöket akar integrálni Home Assistant alá.
NodeMcu 433Mhz Sniffer – ESPhome kód
esphome: name: nodemcu_433mhz_tracker platform: ESP8266 board: nodemcuv2 wifi: ssid: "*****" password: "*****" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Nodemcu 433Mhz Tracker" password: "******" captive_portal: # Enable logging logger: # Enable Home Assistant API api: password: "******" ota: password: "******" # Example configuration entry remote_receiver: pin: number: D8 inverted: True mode: INPUT_PULLUP dump: - rc_switch tolerance: 50% filter: 250us idle: 4ms buffer_size: 2kb binary_sensor: - platform: remote_receiver id: front_door_open internal: true rc_switch_raw: code: '000010100000101001110011' protocol: 6 filters: delayed_off: 100ms - platform: remote_receiver id: front_door_closed internal: true rc_switch_raw: code: '000010100000101001111001' protocol: 6 filters: delayed_off: 100ms - platform: template name: Bejárati ajtó device_class: door lambda: |- if (id(front_door_open).state) { // front dooris open return true; } else if (id(front_door_closed).state) { // front door closed return false; } else { return {}; } - platform: remote_receiver id: livingroom_window_open internal: true rc_switch_raw: code: '110111010110111101110011' protocol: 6 filters: delayed_off: 100ms - platform: remote_receiver id: livingroom_window_closed internal: true rc_switch_raw: code: '110111010110111101111001' protocol: 6 filters: delayed_off: 100ms - platform: template name: Nappali ablak device_class: door lambda: |- if (id(livingroom_window_open).state) { // livingroom window open return true; } else if (id(livingroom_window_closed).state) { // livingroom window closed return false; } else { return {}; }
Első körben érdemes azzal kezdeni, hogy csak az eszközök állapotjelét gyűjtjük be. Ehhez elég ez a kódrészlet:
remote_receiver: pin: number: D8 inverted: True mode: INPUT_PULLUP dump: - rc_switch tolerance: 50% filter: 250us idle: 4ms buffer_size: 2kb
Ezt a részletet én személy szerint benne is hagytam a config fájlban, mert a későbbi bővíthetőséget megkönnyíti. A feltöltés után ha belenézünk a logba, akkor valami ilyesmit kell látnunk:
Ezeknek a rádiójeleknek a forrása nem nálam található. Ezek csak a környező házakból elkapott jeltöredékek. Nem szeretném kielemezni a rádiójeleket, de azért látható, hogy nálam az azonos márkájú azonos gyártmányú nyitásérzékelők jelei mennyiben hasonlítanak egymásra decimális formában.
Nyitásérzékelő 1:
00001010000010100111 | 0011 -> nyitott
00001010000010100111 | 1001 -> zárt
Nyitásérzékelő 2:
11011101011011110111 | 0011 -> nyitott
11011101011011110111 | 1001 -> zárt
Egyébként ha mindent jól csináltunk, akkor az eredmény sem sokáig várat magára. Kódfeltöltés után az Entitások között egyből megjelennek a nyitásérzékelők, és csak hozzá kell őket adni a lovelace-hez:
Egy kicsit jobban bő lére tudnám ereszteni ezt a cikket, az általam használt, és egyébként a webshopban forgalmazott 433 Mhz-es nyitásérzékelő bemutatásával, de úgy gondolom, hogy ez egy másik rövid cikket megér. Ezért a beüzemeléshez szükséges kapcsolás és az ESPhome konfigurációval én le is zárom ezt a bejegyzést, és visszatérek majd egy másik cikkel, ami konkrétan az általam használt eszközt mutatja be.
Ha tetszett a leírás Like-old facebook oldalunkat, hogy értesülj a további hasonló leírásokról!
Mikrokontroller Blog és Webáruház – Facebook