Instructables article: ESP8266 Multisensor
Valamikor réges-régen egy messzi.. no szóval nem tegnap volt, de már készítettem ESP segítségével DIY multiszenzort. Ennek újratervezése, és új házba helyezése lett jelen projekt, a hamvaiból újraéledő főnixmadár.
Első és legfontosabb különbség, hogy rájöttem arra, miszerint mozgásérzékelőt leginkább mozgásérzékelőből lehet készíteni. Mit jelent ez? Szereztem egy aránylag olcsó, mozgásérzékelős éjszakai irányfényt, szétkaptam és újrahasznosítottam a műanyag házát. Természetesen a választék igen széles, többet is kipróbáltam, mire ez végül elnyerte a tetszésemet. Volt ami képen ígéretesnek tűnt, de amikor megérkezett, az alakja miatt bebizonyosodott, hogy a térfogata kevés az általam kívánt eszközök számára, volt aminek a belső kialakítása nem volt jó, volt aminek a felfogatása, illetve a teljes gömb alakból adódóan a tápcsatlakozó igen hülyén nézett volna ki rajta.
Íme a győztes:
No persze nem így nézett ki érkezés után, bár kívülről nem látszik sok eltérés az USB betápon, és a kissé idegenül ható DHT22-n kívül.
Í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 (*) | 712 Ft |
5x7cm protolap (*) | 100 Ft |
5V1A hálózati töltő, USB (*) | 360 Ft |
2m MicroUSB töltőkábel (*) | 500 Ft |
HC-SR501 (*) | 230 Ft |
RCWL-0516 (*) | 200 Ft |
16V 100uF elektrolit kondenzátor | 10 Ft |
10K ellenállás | 2x30 Ft |
microUSB DIP panel (*) | 200 Ft |
DHT22 (*) | 750 Ft |
4.7K ellenállás | 10 Ft |
BH1750 (*) | 275 Ft |
Piezo buzzer (*) | 270 Ft |
300 ohm ellenállás | 10 Ft |
WS2812 1-bit (*) | 275 Ft |
Donwei Motion Sensor (*) | 750 Ft |
Összesen: | 4712 Ft |
Elvi 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 | WS2812B DI láb |
D1 | GPIO5/SCL | BH1750-SCL |
D2 | GPIO4/SDA | BH1750-SDA |
D3 | GPIO0 | - |
D4 | GPIO2 | - |
A0 | TOUT | - |
D0 | GPIO16/WAKE | - |
D5 | GPIO14 | SR501 OUT |
D6 | GPIO12 | RCWL OUT |
D7 | GPIO13 | DHT22 DATA |
D8 | GPIO15 | Buzzer + |
Az eredetileg "Donwei Motion Sensor Battery Powered Night Light" (0.6W) néven futó éjszakai irányfény 750-1200Ft közötti áron beszerezhető:
9x9 cm alapterületével kicsit szélesebb, mint a korábbi egyszerű fekete műszerdoboz, viszont egészen formatervezett kütyü. Szinte már sajnáltam szétszedni. :)
A tetején mit ad isten, pontosan akkora lencséjű mozgásérzékelő van, mint a HC-SR501, illetve az oldala félig átlátszó, így pl a fényérzékelő elrejthető mögé.
Szétpattintva látható a panel a mozgásérzékelővel, és a mellé integrált LED világítás. Ezekre persze nincs szükségem, ezért kivettem, és eltettem későbbre. :) Az is egyértelművé vált, hogy az elemtartónak mennie kell, túl sok helyet foglal.
A műanyag vastagabb volt, mint gondoltam, így küzdöttem vele egy sort, mire sikerült kivésnem az elemtartót, de megoldottam. Ezt követően némi tervezgetés után az új belső összeállt:
És miután minden a helyére került: (bekötési rajz szerint)
Talán a fenti képet látva már érthető, hogy miért nincs középre igazítva a DHT22, illetve nyilván azért nem tudtam alulra tenni, mert a bejövő USB csatlakozónak, a radaros RCWL-nek és a forrasztásoknak az alján elég sok hely kellett. Felülre nem teszünk hőmérőt, mivel a meleg felfelé száll, így maradt valamelyik oldal.. első körben 90 fokkal elforgatva akartam felhelyezni, de az előlap görbületei, illetve az alappanel magassága miatt ennek beforrasztása elég lehetetlen feladattá vált, ezért maradtam a képen is látható, "fekvő" helyzetnél. Ha valaki ennél jobban el tudja helyezni, hajrá, mutassa. :)
No de, aki már olvasta korábban ezt a blogot nem fog meglepődni azon, hogy a firmware az ESPEasy lett!
ESPEasy eszközbeállítások:
Az első két eszköz egyike a PIR, a másik a radaros mozgásérzékelő adatlábára van kötve, ezek 0 állapotban vannak alapból, amit mindkét esetben egy-egy 10k-s ellenállás segítségével GND-hez kötöttem, hogy ne lebegjen. Mozgás esetén 1-re vált az értékük. Ezeket a Rules szabályrendszer segítségével a 6. Dummy eszközben tárolt "State" nevű változóban összegzem, ha mindkettő szerint mozgás van, akkor a State értéke 1, ha mindkettő 0 értéket vesz fel, akkor a State értéke 0 vagyis nincs mozgás... ezt pedig MQTT-n továbbítom. (szoftveresen kombinált, digitális, WiFi-s mozgásérzékelő) A hőmérő és luxmérő beállítása egyszerű a korábbiak alapján. (annyit csaltam, hogy a BH1750 a félátlátszó burkolat mögé történő elhelyezés miatt kisebb értékeket ad vissza, nagyjából a felét gyors tesztek szerint, így 2-vel megszoroztam az általa adott Lux értéket) A hőmérő lineáris korrekciója is megadható Formula segítségével, ehhez egy kinevezett referencia-hőmérő szükséges a vizsgálni kívánt magasságba helyezve az adott helyiségben. A System Info eszközben az RSSI-nél az alábbi transzformációs formulát használtam, hogy a kapott érték Domoticz kompatibilis legyen: ((%value%+90)/5)+1
Az aránylag új eszköz a Neopixel LED, amit az előző cikkemben már bemutattam, használata egyszerű a hely és a tápigény miatt 1 db-os modul mellett döntöttem, ami a hangjelzés mellett tud információt adni tetszőleges RGB színekkel. (a buzzer ugye a GPIO-15re van kötve, mint kimenet, ehhez nem kell külön plugin, ha már egy Switchet használunk legalább, használata a tone és rtttl parancsokkal egyszerű ujjgyakorlat azok számára, akik már átrágták magukat a korábbi blogbejegyzéseken)
A LED használatára még konkrétan nincs felhasználási ötletem, de idővel biztosan lesz. A zümmögővel a jelenleg a bejárati ajtó nyitás/csukását jeleztetem vissza.
És akkor a végső, komplett, működő szabályrendszer:
on System#Boot do
taskvalueset,6,1,0
taskvalueset,6,2,0
NeoPixel,1,0,0,0
event,checkmotion
endon
on MQTT#Connected do
event,checkmotion
endon
on pir#Switch do
event,checkmotion
endon
on radar#Switch do
event,checkmotion
endon
on checkmotion do
if [pir#Switch]>0 and [radar#Switch]>0 and [motion#State]<1
taskvalueset,6,1,1
Publish domoticz/in,{"idx":55,"nvalue":1.00,"svalue":"On", "RSSI": [RSSI#RSSI]}
endif
if [pir#Switch]<1 and [radar#Switch]<1 and [motion#State]>0
taskvalueset,6,1,0
Publish domoticz/in,{"idx":55,"nvalue":0.00,"svalue":"Off", "RSSI": [RSSI#RSSI]}
endif
endon
on playalert do
TaskValueSet,6,3,%eventvalue%
TaskValueSet,6,4,1
timerSet 2,1
endon
on playsound do
TaskValueSet,6,3,0
TaskValueSet,6,4,%eventvalue%
timerSet 2,1
endon
On Rules#Timer=2 do
if [motion#BSND]=1.00
rtttl,15:d=4,o=6,b=140,8e,8c,8e,8c,8e,8c
endif
if [motion#BSND]=2.00
rtttl,15:d=4,o=5,b=100,32p,d,8c,32p,c
endif
if [motion#BSND]=3.00
rtttl,15:d=8,o=5,b=160,f#,f#,f#,d
endif
if [motion#BREP]>0
TaskValueSet,6,3,( [motion#BREP]-1)
timerSet 2,15
else
TaskValueSet,6,4,0
endif
EndOn
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.
aniauto 2019.05.07. 15:35:11
Teljesen, kezdőként és amatőrként összeraktam, köszönöm a leírást !
Jah és persze működik is :)
Most szeretném majd Domoticz alá behuzni.
Egyetlen kérdésem lenne, mégpedig hogy a "Rules" szabályrendszert hova a bánatomba kell beírni ?
Mint mondtam, zöldfülű kezdő :)
Köszönöm
eNeS 2019.05.07. 17:24:42
aniauto 2019.05.08. 14:18:58
Zoltán Sándorfi 2019.05.17. 01:34:16
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal