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




