Okos otthon - ESP8266 - MQQT + WEB Relayboard

Ugy vettem eszre hogy tobben erdeklodtetek a lakas automatizalas es a lehetseges megoldasok irant. Az alabbiakban szeretnek segiteni azoknak akik igazabol nem tudjak hogyan induljanak el, vagy nincs idejuk, kedvuk, energiajuk tobb doksit osszeolvani, hogy valami hasznalhatot tudjanak osszerakni.
Ime egy kis utmutato amivel egy $5-os nodeMCU-bol es egy szinten kb $5-os relayboardbol egy nyolc csatornas vezerlo epitheto.

Az alabbi publikus bitbucket repoba belepakoltam a szukseges segedprogramokat amivel a nodeMCU flash-eleheto es repoban talalhato firmware ratoltheto. Szinten itt a repoban talahato egy LUA gyujtemeneny ami az alabbiakat tudja:
- A node 8 GPIO-prtjat ellenorzi (ki,be) kapcsolja ezaltal vezerheto a relayboard.
- MQTT protokollon keresztul 30mp -ent lejelenti a relek allapotat. ( $ALAP_TOPIK/status )
- MQQT protokollon keresztuk fogad utasitasokat ( $ALAP_TOPIC )
- Futtat egy egyszeru kis webservert ami POST es GET utasitasokat fogad. POST utasitasra modositja a rele allapotat, a GET-re valaszul egy json-ban vagy interaktiv modon megjeleniti az allapotot.

MQTT-r hasznalva az alaptopikba kuldott uzenettel lehet egy adott relet vezereleni (pl 31 - 3-as rele BE, 70 - 7-es rele KI) Az allapot lehet 0 vagy 1, a releszam mindig az elso karakter.

A wbserver tud http://IP_CIM/ vagy http://IP_CIM/json api-t. Weben keresztul pl:

$ curl -X POST --data "Relay: 61" http://IP_CIM/json
"Relay_1" : 0,
"Relay_2" : 0,
"Relay_3" : 0,
"Relay_4" : 1,
"Relay_5" : 0,
"Relay_6" : 1,
"Relay_7" : 0,
"Relay_8" : 0
}

vagy pedig:

$ curl -X POST --data "Relay=31" http://IP_CIM

RelayControl_1

Status

Relay_1 : [OFF]ON

Relay_2 : [OFF]ON

Relay_3 : OFF[ON]

Relay_4 : [OFF]ON

Relay_5 : [OFF]ON

Relay_6 : [OFF]ON

Relay_7 : [OFF]ON

Relay_8 : [OFF]ON

*** A fenti POST tulajdonkeppen egy klickelheto gombokat tartalamazo formot ad vissza, de az itt nem jelenitheto meg :) ***

Mindossze annyit kell tenni hogy a nodeMCU-t meg kell flashelni a mellekelt firmware-el, az ESplorer-t hasznalva ra kell tolteni az _OSSZES_ LUA fajlt es elinditani az A_init.lua -t Ha megfeleloen mukodik akkor az A_init.lua atnevezheto init.lua-ra igy a node automatikusan inditja reboot utan a dolgokat.
Van egy global_vars.lua file amiben be lehet allitani a WIFI adatokat, az MQTT broker adatokat (ip, port, account).
Az MQTT es a WEB funkcionalitas ki es bekapcsolhato az enable_mqtt es enable_web valtozok 0 vagy 1-re allitasaval. Mukodhetnek parhuzamosan is.
Brokernek hasznalhato helyileg futtathato mosquitto broker vagy mukodik a cloudMQTT brokerrel is.

A kod nem nagy dolog, es biztos vagyok benne , hogy lehetne szebb is, de en nem programozo, inkabb amolyan integrator, devops-os vagyok, ugy hogy nem haragszom meg ha optimalisabb megoldasokat javasoltok. Hibakezeles szinten nem sok van benne - ez csak amolyan indito segitseg.

Repo link:

git@bitbucket.org:lmarton/nodemcu_pub.git

*** Kiegeszites:
A fenteieket hasznalva konnyeden megvalositaho az alabbi: Home Assitanban letre kell hozni egy MQTT gombot, ami utasitasokat ad
PL:

switch:
- platform: mqtt
name: "Bedroom Switch"
state_topic: "home/bedroom/relayboard/status"
command_topic: "home/bedroom/relayboard"
payload_on: "31"
payload_off: "30"
optimistic: false
qos: 0
retain: true

Ha a Home Assitantot kombinaljuk az HA-bridge-al, akkor a switch elerheto lesz az Apple HomeKit alatt es innen mar mukodik a "Hey SIRI, turn on bedroom switch". Alexa-hoz a Philips Hue emulalt bridge kell es akkor mar az Amazon Echo is tudja vezerelni. (Nalam megy mindketto)

*** En ezekkel hasznalom:
Releboard
NodeMCU
Tap .. A releknek kell az 5 volt es szinten 5 V-rol taplalom a nodeMCU-t is - van rajta lehetoseg. Igy nem kell mokolni mindefele USB cucokkal es a nodeMCU magaben nem tudja meghajtani a 5V-os releket.

Hozzászólások

Ez az apple homekit engem is érdekelne...
Meg az is, hogy mikor jutnak már tul a demok(nem a tiedre értem) az egy relé kapcsolgatásán, meg az okosizzókon(izzó sincs a házban), amire speciel nekem SOHA nem volt szükségem, ellenben szellőzőrendszert PWM-mel kontrollálni -25fokban, padlófűtést szabályozni, impulzuskimenetekre, meg egyéb logikára lenne szükség: egy gombnyomás, kétgombnyomás, hosszu gombnyomás és mást mást csináljon.... Vagy locsolórendszer, vagy napkollektor.
Pl kint vagyok a kertben, kihuzalozok egy nyomogombot, vagy a fenti nodemcu vasra teszek nyomogombot, telefon nincs nálam, és elérhető közelségbe rá tudnék logikákat kötni. egygombnyomásra kinyitja a kaput, kettőre a nagykaput, hosszu gombnyomásra a garázst. Vagy tipikusan életszerű a redőny logika, sima elektromos redőnyöket lehetne ilyennel kezelni, és nem kéne még százezeré saját agy. csak relékimenet.

------------------------
Jézus reset téged

Megoldhato :)
Veszel egy Raspi-t, ratoltod a Home assistantot. Veszel 1-2-3 NodeMCU-t. A egyikre ratoltesz egy LUA-t ami a GPIO-t figyeli es MQTT-n jelenti a gomb allapotat. A logikat teheted magaba a NodeMCU-va vagy a HA-ba.
Tehat gomb lenyomva message: GOMBLE, felengedve GOMBFEL... Ha ez mondjuk 2 mp alatt 2x ismetlodik akkor az ismetelt lenyomas es garazskaput jelent. A HA-t ez apaljan kuldi a message a garazskapura kotott 2. nodeMCU-nak hogy tessek a 3. relet bekapcsolni es mar nyilik is a kapud. A gomble.gomfel -t ha elkuldod mindig MQTT-n akkor a HO-ba olyan logikat pakolsz amit akarsz...

Nalam ez azert nem csak releket kapcsolgat hanem ossze van integralva futesrendszerrel, mas-mas gyartok kulonfele eszkoveivel "including the kitchen sink"... Ugyanaz a logika vezerli a szobafutest (radiatorokra kotott HomeMatic termoszatikus readitorszelep) meg a releket amik az elektromagneses padlofutest nyitjak. A padlofutes nyito NodeMCU pl a fenti kodot futtaja... A ki-be kapcsolast a HA algoritmus vegzi egy termosztat homerseklete alapjan.

„mikor jutnak már tul a demok(nem a tiedre értem) az egy relé kapcsolgatásán,… ”

Már régen túljutottak. A githubon van egy néhány projekt, amit megnézhetsz. Az egyszerűbbek csak egy két dolgot figyelnek és kapcsolgatnak. Egy kezdő könnyedén megérti működésüket. Bonyolultabbak is vannak, amiből egy kezdő kb. semmit sem ért meg első olvasásra. Ha már a „demókon” túljutott, akkor ezek is érthetőek lesznek.

Másrészt a rendszer szempontjából mindegy, hogy az érzékelők adatai alapján a világítást kapcsolóm ki/be, vagy a fűtést/locsolást/… Ha a kazán vezérelhető, akkor be is illeszthető a rendszerbe.

„okosizzókon(izzó sincs a házban)”

Egyrészt normál izzó|kompakt|LED|… is kapcsolható/vezérelhető. A zárójeles részre: gyertyával vagy petróleumlámpával világítasz este? Vagy sötétedéskor lefeküdtök. :-) Ha petróleumlámpát használsz, érdekelne, hogy hol szerezed be a petróleumot. Nekem is van két ilyen lámpám, de nincs hozzá „üzemanyagom”.

valojában az a kihivás, hogy szakosan be legyen dobozolva, stabil legyen, áramszünet után OTT FOLYTASSA AHOL ABBAHAGYTA a logika, stbstb. Runtime lehessen paramétereket tekergetni a fűtésnél, runtime lehessen a redőnymozgatásnál időket állítani.
persze mi a cél. lehet kokecolni, hogy összevásárolgatok szenzorokat, és bugyuta scriptekkel behuzok egy relét, just works, jojaz. de ezeken tul vagyok. abszolut nem lett robosztus. többet akartam. A robosztusság kialakítása alatt meg nagyon sokat lehet tanulni.


------------------------
Jézus reset téged

Valoban a robusztussag az egyik legfontosabb parameter. De tevedes azt hinned, hogy random boltban megvasarolt Samsung SmartThings vagy philips HUB, vagy teszoleges HUB tobbet nyujt - jah szebb a doboza...

Azert ha komolyan csinalja valaki lehet ezt robusztussa tenni (nalam rackszekrenyben HP microserveren van a logika, monitorozva minden eszkoz, SMS, Pushover alertekkel statuszkepernyon latom mindg mindennek az allapotat.) Ezek a kis kutyuk valoban olcso eldobhato dolgok (mondjuk meg egyet sem kellet kidobnom) de pont az aruk miatt ezek olcson skalazhatoak, csereszabatosak. Es azert a HomeAssiatant, OpenHab, FHEM, Domoticz es tarsait eros tulzas "random scripteknek" nevezni. A vasat amit meg ala teszel meg kell tervezni. Igen lehet osszesegeben koltottem ra annyit mint ha vettem volna egy HUB-ot, de az eletben nem lett volna ilyen nyilt, ennyire monitorozott es ennyire sokoldalu, arrol nem is beszelve hogy igy egy helyrol megy minden. Plex/TV multimedia, hazautomatika, Futes, puffertartaly, napkollektor rendszer, vizteres kandallo, kamerarendszer, kapunyito, redonyvezerlo, garazsnyito, vilagitas, riaszto, presence detection, scheduling, ejszakai vilagitas, tavoli kapunyitas stb. Es mindez ugy van megolva hogy mukodik minden koszoni szepen hagyomanyos modon is es ha elhasal a microserver akkor max nem nyilik automatikusan a garazskapu ha beerek az utcaba es kezzel kell a villanykapcsolot megboknom. De akkor mar ugyis tudok rola mert fuggetlenul monitorozom a microservert is es egy SMS modemem csak azert van hogy ha minden bedoglik akkor kuld egy SMS-t. Mondjuk az egy egyszeru RASPI-n fut, de sok dolga nincs. Viszont az is automatizalva van es ha kuldok ra egy SMS-t megadott tartalommal akkor az egesz hobelevancot beleertve az UPS-t is powercycle-zni tudom.