Ezúttal a korábban bemutatott DIY RF-WiFi bridge életképességét igazoló projekt felturbózásáról és dobozba szereléséről ejtek pár szót.
Már korábban belengettem, hogy több projektnél is elő fognak kerülni a címezhető Neopixel LED-ek (amik nagy kedvenceim lettek), ebbe példának okáért egy 8-as modul került.
Így néz ki dobozolást követően jelen projekt, a feliratozás még hátravan:
A célom egy 8 rádiós zóna állapotát helyileg megjeleníteni képes, kézileg nyugtázható másodjelző készítése volt, ami WiFi-n továbbítja is a beérkező RF jeleket MQTT-n keresztül a Domoticz számára.
Íme a szükséges eszközök listája és jelen áruk a nagy e-piacon:
Eszköz | Bruttó ár |
D1 Mini ESP8266 fejlesztői lap (*) | 678 Ft |
5x7cm protolap (*) | 100 Ft |
Nyomógomb 13mm x 2 | 2 x 10 Ft |
100x60x25mm műanyag doboz (*) | 237 Ft |
WS2812 8-bit (*) | 275 Ft |
Szintillesztő (*) | 274 Ft |
RXB12 rádiós vevő DC3.3-5V 433Mhz (*) | 240 Ft |
1 db spirálantenna (*) | 50 Ft |
DC-DC feszültségátalakító 12V->5V (*) | 200 Ft |
DC 5.5 jack tápcsatlakozó (*) | 55 Ft |
Összesen: | 2129 Ft |
Természetesen lehet direktben 5V-os dugasztápot is használni, így nem lenne szükség feszültségátalakítóra, jelen esetben egyszerűen a telepítés helyén a 12V már adott volt.
Bekötési rajz:
ESP lábkiosztás:
Láb cimke | Alternatív megnevezés | Rákötött eszköz |
TX | GPIO1/D10 | - |
RX | GPIO3/D9 | - |
D1 | GPIO5/SCL | - |
D2 | GPIO4/SDA | - |
D3 | GPIO0 | Nyomógomb |
D4 | GPIO2 | Nyomógomb |
A0 | TOUT | - |
D0 | GPIO16/WAKE | - |
D5 | GPIO14 | - |
D6 | GPIO12 | WS2812-DI |
D7 | GPIO13 | RF Data |
D8 | GPIO15 | - |
És íme a pőre igazság, így néz ki a panel szemből amit a doboz takar: (bekötési rajz szerint)
Nem állítom, hogy díjnyertes munka lenne, és megélnék a forrasztási tudásomból, viszont nem ér össze semmi olyan, ami nem kell, hogy összeérjen és működik, nekem ennyi elég. :)
És így néz ki a másik oldal, miután a fekete dobozt a megfelelő helyeken megfúrtam, hogy a két nyomógomb átférjen.
A D1 minit nem lehet eltéveszteni, a balra levő antennás RF vevőben pedig könnyen felismerhető az általam legjobb ár/érték arányúnak talált RXB12, a piros szinű panel egy szintillesztő, ami az 5V-os jelek 3.3V-ra alakítására való, a mellette levő zöld panel egy DC tápfeszültség átalakító, ami a bejövő 12V-ot a sokkal barátibb 5V-ra alakítja. (az ESP-nek és a LED sornak) Mint látható, a melegragasztó is előkerült ismét...
Érdeklődők kedvéért a bináris (4MB flash-hez): ESPEasy.4M.2018dec.zip
ESPEasy eszközök:

Az eszköz lelke a P111 RF Receiver plugin, ami az RCSwitch könyvtárat használva dekódolja a bejövő 433Mhz-es jeleket, és egy számmal reprezentálja, ami alkalmas további feldolgozásra. (erről már írtam korábban) Ezúttal nem állítottam be MQTT IDX-et a plugin beállításainál, mert a Rules szabályrendszerben fogom megadni, minden kódnak más IDX-et és állapotot.
A Neopixel plugin felel a LED-ek meghajtásáért, aminek ugye az a lényege, hogy egy adatlábon tud megcímezni több LED-et, ez esetben 8-at, amit a plugin beállításainál meg is kell adni, mint maximális számot. Az egyes LED-eket a Neopixel paranccsal tudjuk felkapcsolni.
A Dummy változók pedig a státuszok nyilvántartásáért felelnek, egyelőre csak az első 4-es blokkot használom, illetve a legutolsó LED mutatja, hogy aktív-e a kijelzés, de ez felhasználható másra is a későbbiekben persze...
A szabályrendszert ezúttal kétfelé bontottam, mert egy fájl maximum 2048 bájt hosszú lehet, és eléggé összetettre sikerült. Az egyes gomb (btn1) megnyomásával lehet aktiválni/deaktiválni a visszajelző rendszert, ha a megadott kódok ilyenkor beérkeznek, a megfelelő LED-ek pirosra váltanak 30 másodpercre, majd másodpercenként halványítja őket a "Timer2" eseménykezelő. A kék csatornát viszont meghagyja, ezzel jelezve, hogy ott mozgás volt. A kék fényeket a kettes gomb (btn2) megnyomásával lehet nyugtázni-törölni.
Rules1.txt:
on System#Boot do
NeoPixelAll,0,5,0
taskvalueset,7,1,0
taskvalueset,7,2,0
event,doack
Publish domoticz/in,{"idx":20,"nvalue":0.00,"svalue":"Off"}
Publish domoticz/in,{"idx":21,"nvalue":0.00,"svalue":"Off"}
endon
on btn1#Switch do
if [btn1#Switch]<1 and [global#State]>0
event,disablewatch
endif
if [btn1#Switch]<1 and [global#State]<1
event,enablewatch
endif
endon
On Clock#Time=All,08:30 do
event,disablewatch
endon
On Clock#Time=All,20:30 do
event,enablewatch
endon
on disablewatch do
timerset,2,0
event,doack
NeoPixel,8,0,0,0
taskvalueset,7,1,0
endon
on enablewatch do
timerset,2,1
NeoPixel,8,0,5,0
taskvalueset,7,1,1
endon
on btn2#Switch do
if [btn2#Switch]<1
event,doack
taskvalueset,7,2,0
endif
endon
on doack do
taskvalueset,5,1,-1
taskvalueset,5,2,-1
taskvalueset,5,3,-1
taskvalueset,5,4,-1
taskvalueset,6,1,-1
taskvalueset,6,2,-1
taskvalueset,6,3,-1
taskvalueset,6,4,-1
timerset,1,1
endon
on Rules#Timer=1 do
NeoPixelAll,0,0,0
endon
on motion1 do
if [global#State]>0
taskvalueset,5,1,20
endif
endon
on Rules#Timer=2 do
if [firstp#1]>-1
NeoPixel,1,[firstp#1],0,4
taskvalueset,5,1,([firstp#1]-1)
taskvalueset,7,2,1
endif
if [firstp#2]>-1
NeoPixel,2,[firstp#2],0,4
taskvalueset,5,2,([firstp#2]-1)
taskvalueset,7,2,1
endif
if [firstp#3]>-1
NeoPixel,3,[firstp#3],0,4
taskvalueset,5,3,([firstp#3]-1)
taskvalueset,7,2,1
endif
if [firstp#4]>-1
NeoPixel,4,[firstp#4],0,4
taskvalueset,5,4,([firstp#4]-1)
taskvalueset,7,2,1
endif
if [global#State]>0
timerset,2,1
endif
if [global#Level]>0 and [global#State]>0
NeoPixel,8,0,0,4
endif
if [global#Level]<1 and [global#State]>0
NeoPixel,8,0,4,0
endif
endon
Extra még, hogy az "event,motion1" parancs meghívásával lehet a legelső LED-et aktiválni, ami nem rádiós, hanem WiFi-s mozgásérzékelő zóna, és egy másik ESP modul küldi WiFi-n keresztül ennek. Ütemezés is van beépítve, 20:30-kor bekapcsol a figyelő és 8:30-kor pedig kikapcsol automatán - ez ugyanaz a funkció, amit az 1-es gomb megnyomásával is el lehet érni.
De mindez csak a kirakat, a háttérben a kódok feldolgozását és továbbítását a következő fájl tartalmazza.
rules2.txt:
on rfin#RF do
if [rfin#RF]=3008216
taskvalueset,5,2,30
Publish domoticz/in,{"idx":20,"nvalue":1.00,"svalue":"On"}
endif
if [rfin#RF]=3008210
taskvalueset,5,2,10
Publish domoticz/in,{"idx":20,"nvalue":0.00,"svalue":"Off"}
endif
if [rfin#RF]=3054346
taskvalueset,5,4,30
Publish domoticz/in,{"idx":21,"nvalue":1.00,"svalue":"On"}
endif
endon
Az rfin a P111 eszköz neve lett, amit felvettem az RF az első és egyetlen érték megnevezése benne. És ezt vizsgálja a fenti eseménykezelő, amikor az rfin#RF-re érkezik egy kód, akkor megnézi, egyezik-e egy ismert értékkel. (ezt az eseménynapló/Log-ból lehet előzetesen kinyerni!) Ha egyezés van, akkor a megfelelő Domoticz IDX-re küldi az On/Off állapotot (az első eszköz - 20 - egy két állapotú rádiós nyitásérzékelő) vagy csak az On állapotot, amit a Domoticz oldalán kell kezelnünk a (a második eszköz - 21 - egy kizárólag egyetlen kódot mozgásra szóró rádiós mozgásérzékelő) Ez utóbbinak az Off állapotra visszaállítását a Domoticz-on belül a "Kikapcsolás késleltetése" paraméterrel tudjuk megoldani. A taskvalueset parancsok pedig egyszerűen a megfelelő Dummy változókba írják, hogy az adott LED-en a vörös fény milyen intenzitással/meddig világítson.
Nem állítom, hogy egyszerű a beüzemelése, viszont ez egy működő egyirányú RF433->MQTT bridge. Kézzel tanítható, és nem szórja tele a Domoticz eseménynaplóját a szomszéd rádiós kódjaival - persze ettől függetlenül az ESP azokat is dekódolja, de nem továbbítja.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
knisa 2019.03.23. 11:31:23
Most is lenne kérdésem. Az alap RF Bridge-t használnám úgy, hogy rules-ben lennének a kódok megtanítva, a digitális jeleket már látom a rules2.txt-ben, de analóg jeleket (pl hőmérő), hogyan kell továbbítani az eszközhöz tartozó IDX-re? Köszönöm segítségedet.
eNeS 2019.03.23. 17:04:12
Publish domoticz/in,{"idx":20,"nvalue":0.00,"svalue":"25.4;60;0"}
De ennél sokkal egyszerűbb beállítani a hőmérő eszköznél az ESPEasy-ben az IDX-et, és csak az adott eszközt megfuttatni a taskrun,<eszközsorszám> paranccsal Rules-ban, mert így az ESPEasy mag gondoskodik az eszköznek megfelelő üzenetformátumról, ami tartalmazza a Wifi jelerősséget is.
pagocs 2019.03.24. 16:45:33
Ha valakit esetleg érdekel akkor ebben a témakörben csináltam egy saját MQTT Wifi gatewayt (+Domoticz driver-t) az RFLINK Gateway-hez (www.rflink.nl/blog2/) ESP32 alapon.
Illetve van egy saját RF decoder over MQTT prototype-om ami kezeli: Acurite 899 eső szezort, KERUI PIR és DOOR/WINDOW szenzort, illetve az olcsó Kinai RF kapcsolókat jelenleg.
eNeS 2019.03.24. 19:13:09
pagocs 2019.03.24. 21:24:08
eNeS 2019.03.25. 10:06:13
Hypervisor 2019.03.26. 20:40:41
Én ezzel olvastam le egy pár soros programmal a távirányítós konnektorom kódját. ESP8266 hez lib: github.com/LSatan/RCSwitch-CC1101-Driver-Lib
eNeS 2019.03.26. 22:08:12
knisa 2019.05.08. 22:38:10
Így nem tudom használni. Mit lehet ilyenkor tenni? Rosszakat kaptam?
eNeS 2019.05.09. 07:08:25
bitekmindenhol.blog.hu/2019/03/17/rf433mhz-es_nyitaserzekelo
knisa 2019.05.24. 18:43:54
Most jött meg a Kerui KR-D026 ajtó/ablak nyitás érzékelő. Nagyon szuper!
Különböző kódokat sugároz nyitáskor, záráskor, szabotázskor és elem alacsony jelzéskor.
aniauto 2020.02.26. 17:56:23
pici segitség kellene, az IR_0 ap-nak mi a belépési jelszava ?
eNeS 2020.02.26. 18:05:50
aniauto 2020.02.26. 18:38:58
ezzel viszont nem tudok mit kezdeni:
WD : Uptime 42 ConnectFailures 0 FreeMem 9464
eNeS 2020.02.26. 18:44:43
aniauto 2020.02.26. 18:48:58
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal