WiFi-s termosztát ESP8266-al (DIY)
2018. október 14. írta: eNeS

WiFi-s termosztát ESP8266-al (DIY)

A világítás automatizálása után a fűtésvezérlésem felé fordítottam a figyelmemet. Régóta keresek megoldást, amivel leválthatnám az elemes, hurcolható, RF termosztát érzékelőmet, ami, ha hatótávon kívül ér, nyilván nem tud kikapcs parancsot küldeni, így tovább megy a fűtés a végtelenségig...

Rászántam némi időt, hogy megpróbáljam dekódolni a 868Mhz-en folyó kommunikációt, amivel a mostani termosztát és hordozható kezelője kommunikál, de bár rész-sikereket elértem, a csomagok visszajátszásába beletört a bicskám, így feladtam. Rájöttem, hogy a WiFi-vel könnyebben boldogulok, inkább kukázom a régit és készítek egy saját relés termosztátot ESP8266-al!

Találtam egyébként olyat, ami majdnem jó is lett volna, a Computherm B300 (korábban BBoil) egészen korrekt, árban mondjuk kétszer annyi, mint amennyit szánok rá, viszont ESP8266 ketyeg benne, így cserélhető a firmware rajta. Ám akárhogy nézegettem, néhány apróság hiányzik a számomra róla, pl néhány gomb-kezelőszerv, illetve egy kijelző, csak azért, hogy helyileg is lehessen állítani, használni, akár wifi, net, stb nélkül. Úgyhogy mégis a saját modul készítése mellett döntöttem. Véletlenül találtam is az e-bayen hasonló, DIN sínre szerelhető dobozt, elegáns fekete színben, kijelző és a gomb is került, már csak mindezt össze kellett hozni.
(Közben szembe jött egy másik Computherm modell, az E280, ami már kijelzős, viszont semmi információm nincs róla, mi ketyeg benne, és nem szánok ekkora összeget a kísérletezésre, ha esetleg mégsem ESP alapú, ha valakinek van információja a belsejéről, érdekelne!)

Lelövöm a poént, külsőre a végeredmény ilyen lett, ilyesmi lebegett a szemeim előtt a projekt kezdetekor is:

thermo_1.jpg

Az előlapon fent egy 1.3"-os OLED kijelző látható, jobbra tőle három membrános nyomógomb. (ez utóbbi praktikusan így készen kapható, az alja öntapadós) Az igazsághoz tartozik, hogy az 1.3"-os, hiába nagyobb, mint a 0.96"-os változat, de mivel a felbontása ugyanaz a 128x64 pixel, így nem mondanám, hogy szebb az általa kirajzolt kép...

Felpattintva a dobozt látható, hogy a felső részébe került integrálásra egy zöld kétoldalú protolapra egy NodeMCU ESP8266 lapka, ami az egész kütyü szíve. Az OLED kijelző I2C csatlakozáson van rákötve a bekötési rajz szerinti megfelelő lábakra. A NodeMCU alatt látható szalagkábel a gomboktól érkezik, balra tőle a kék és piros kábelek az 5V/GND tápot adják az alsó protolapra integrált DC tápegységről.

thermo_inside.jpg

A DC tápegység egy HLK-PM01, stabil 5V DC kimenettel. Bemenetére köthető a 230V, természetesen kell egy nullvezeték és egy fázisvezeték (jobbra lent látható fehér sorkapocs) a fázist a lent látható fekete kapcsolóval lehet leválasztani, ha valamiért áramtalanítani kell az eszközt, illetve áthalad egy üvegbiztosítékon és egy túlfeszültség ellen védő varisztoron is, mielőtt a HLK-PM01-be ér.

thermo_inside_2.jpg

A balra látható méretes 30A-es 250VAC relé segítségével lehet a kazán indítókontaktusát beadni. (vagy régi típusú kazánnál, aminek nincs ilyen bemenete, akár közvetlenül a tápellátása is köthető ide) Tudom kissé túlméreteztem, mivel egyrészt a kazánom nem erről kapja a tápellátását, másrészt a lakásban a biztosítéktáblán is csak 16A biztosítékok vannak... de problémát nem okoz. Egy jelentős előnye van, 5VDC mechanikus relé létére egy külön JD+ bemeneten be lehet neki adni az 5VDC-t, és ettől függetlenül lehet használni a normál sorkapcsain ekkor 3.3V-os jelszinteket, amiket az ESP8266 modulok tudnak. (lásd a bekötési ábrát)
Bal szélen pedig egy AM2320 hőmérő került kivezetésre. (már csak a fekete színe miatt is ez látszott kézenfekvőnek) A belső kábeleket kötegelő helyett gyors megoldással, melegragasztóval rögzítettem, hogy ne kóricáljanak mindenfelé, míg nyitva a fedele. Az I2C két kábele, a relévezérlő 1 kábele, és a 3.3V táp is a fenti panelről érkezik. Az 5V és a GND helyben van lent, a tápegység szolgáltatja direktben.

Az is látható, hogy nem spóroltam a melegragasztóval.. ennek ellenére a ragasztásra nagy teher nem nehezedik, mert ahogy összepattan a ház fedele, azt a nagy méretű relé nagyjából ki is tölti, így addig sem igazán lötyögött, míg le nem ragasztottam, de így mégis stabilabb. :)

Alkatrészlista:

Eszköz Bruttó ár
NodeMCU ESP8266 Development Board (*) 822 Ft
HLK-PM01 5VDC 3W tápegység (*) 690 Ft
Biztosíték foglalat, NYÁK-ba forrasztható 5x20mm 65 Ft
Üvegcsöves biztosíték, N400mA, 250V AC, normál sebességű kioldás, 5x20mm 20 Ft
275V varisztor 95 Ft
Protolap 5x7 cm (*) 200 Ft
5x7cm kétoldalú protolap (*) 200 Ft
107x87x59mm Plastic Electronics Project DIN Rail PLC Box (*)  928 Ft
1x3 Matrix Array Key Membrane Switch Keypad 36x55mm (*) 290 Ft
5V 250VA/30A relémodul (*) 775 Ft
Bekapcsoló gomb / rocker switch (*) 40 Ft
2 csatlakozós beforrasztható csavaros terminál (*) 34 Ft
AM2320 I2C hőmérő szenzor (*) 435 Ft
1.3" I2C OLED kijelző SH1106 (*) 1166 Ft
Összesen:  5760 Ft

 

Cirka a Google Nest árának tizedébe kerül a kütyü, persze ez nem fogja kitalálni mikor érkezel haza, és hogy éppen milyen hőfokra állítsa magától a házat a hét aktuális napján, és nem is néz ki olyan jól, de távolról is bekapcsolható, illetve az ember saját házautomatizáló szervere akkor és annyi fokra állíthatja a termosztátot, amennyire bekonfiguráltuk, akár időtől, akár bármely más, nekünk tetsző feltételtől függően. De hogy ne menjünk túl messzire, a 17ezer forintos WiFi-s Computherm-hez képest szerintem semmivel sem rosszabb.

ESP lábkiosztás:

Láb cimke Alternatív megnevezés Rákötött eszköz
TX GPIO1/D10 -
RX GPIO3/D9 Menü gomb
D1 GPIO5/SCL OLED SDA (könnyebb fizikai bekötés miatt direkt felcserélve!) + AM2320 SDA
D2 GPIO4/SDA OLED SCL (könnyebb fizikai bekötés miatt direkt felcserélve!) + AM2320 SCL
D3 GPIO0 -
D4 GPIO2 -
A0 TOUT -
D0 GPIO16/WAKE -
D5 GPIO14 Relé IN
D6 GPIO12 Balra gomb
D7 GPIO13 Jobbra gomb
D8 GPIO15 -

 

Amint látható az I2C D1 és D2 lábakat felcseréltem (a zöld protolap túloldalán pont így jött ki jól az OLED kijelző csatlakozóihoz a sorrend), ez különösebb problémát nem okoz, mivel csak szoftveres I2C-t tud az ESP modul, és szabadon átdefiniálható, így át is állítottam az ESPEasy "Hardware" menüjében.

Először az ESPEasy Frame OLED pluginját akartam használni, de aztán rájöttem, hogy a funkciókat egy kicsit jobban egymáshoz kellene kötni, amihez a kijelzés nem tudna elég rugalmasan változni, ezért végülis a termosztát funkciókat egybegyúrtam a gombkezeléssel és a kijelzővel, és ebből lett egy új plugin: P168 ThermoLED

Vizuálisan így áll össze a kijelzés:

thermo_disp.jpg

A mért hőmérsékletet alapvetően az oldalára integrált AM2320-ból szolgáltatja, de mivel az egység WiFi-s, az ESPEasy-ben Dummy változóba tárolva a házban bárhol levő - online - hőmérő által mért érték beküldhető és a plugin az abban szereplő értékhez hasonlítja a Célhőmérsékletet (Setpoint). Nálam például a Domoticz abból a helyiségből küldi a termosztátnak a hőmérsékleti információkat, ahol legutóbb mozgás volt.

Kezelőszervek leírása:

thermo_displ.png

Amennyiben hűvösebb van, egyszerűen bekapcsolja a - kazán NO bemenetre kötött - reléjét, ha melegebb van, kikapcsolja. (no nem pont akkor, hiszen akkor percenként kattoghatna, a beállított hiszterézisnyi eltérésig) A fűtés aktivitását a kijelző közepén levő lángikon mutatja. A Módváltó gombbal lehet ciklikusan váltani az alábbi üzemmódok között.

A középen lent levő üzemmód-jelölő háromféle lehet:

  1. fix KI állapot - X
  2. automatikus mód - A (ebben a módban kapcsolja a relét a Setpoint-tól függően)
  3. manuális BE mód - M (ebben a módban a megadott ideig BE módban marad a relé, setpoint-tól függetlenül)

Automatikus módban a balra és jobbra gombokkal csökkenthetjük, illetve növelhetjük a célhőmérsékletet, manuális módban a hátralevő időt változtathatjuk (1-90perc között) ezekkel. Ha manuális módban lejárt a bekapcsolás ideje, akkor visszavált automatikus üzemmódba.

Önállóan is tud működni, úgy állítottam be az ESPEasy-ben a szabályokat, hogyha adott ideig nem kap a WiFi-s távoli érzékelőktől, akkor automatikusan visszaáll a saját hőmérőjének használatára, és ha "A" módban van, szükség szerint be- vagy kikapcsolja az utoljára beállított célhőmérséklethez képest a fűtést. A célhőmérséklet és az utoljára beállított üzemmód áramtalanítás után is megmarad, flash memóriában tárolja.

Célhőmérséklet beállítása 23 fokra:

http://IPCIM/control?cmd=thermo,setpoint,23

Automatikus üzemmód távoli beállítása:

http://IPCIM/control?cmd=thermo,mode,1

Manuális BEKAPCS üzemmód 5 percre:

http://IPCIM/control?cmd=thermo,mode,2,5

Fix KI állapot:

http://IPCIM/control?cmd=thermo,mode,0

Bekötési ábra:

 thermo_bekotesi.jpg

Természetesen ESPEasy került az eszközre, egy kicsit bővített firmware-el. (tartalmazza a P168 plugint)

ESPEasy eszközbeállítások:

thermo_espeasy_0.jpg

A kijelző beállításai:

thermo_espeasy_1.png

Fenti képen az látható, hogy a hőmérsékletet a "global" nevű Dummy eszköz Temp nevű változójából használja a plugin. A GPIO-k a bekötési rajz szerint vannak beállítva, és MQTT-n lejelenti 15 másodpercenként a 4 változóját. (együtt a 97-es idx alatt, pontosvesszővel elválasztva)

Rules - szabályok:


on System#Boot do
 event,loctemp
endon

on loctemp do
 TaskValueSet,3,1,[homero#Temperature]
 TaskValueSet,3,2,0
endon

on exttemp do
 TaskValueSet,3,1,%eventvalue%
 TaskValueSet,3,2,1
 timerSet 1,180
endon

on Rules#Timer=1 do
 event,loctemp
endon

on homero#Temperature do
 if [glob#external]=0
  TaskValueSet,3,1,[homero#Temperature]
 endif
endon

A fenti szabályoknál példának okáért a "http://IPCIM/control?cmd=event,exttemp=21.5" parancs segítségével időzítve beküldésre kerül a mért hőmérséklet egy külső wifis hőmérőről. (Elképzelhető persze több más megoldás is pl közvetlen ESPEasy-ESPEasy közti P2P kapcsolat, de számomra ez teljesen megfelel) Ha 180 másodpercig nem kap az egység frissítést, akkor átáll a saját hőmérőjének a használatára.

 

A bejegyzés trackback címe:

https://bitekmindenhol.blog.hu/api/trackback/id/tr6414176085

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.

Nincsenek hozzászólások.