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:
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.
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.
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:
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:
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:
- fix KI állapot - X
- automatikus mód - A (ebben a módban kapcsolja a relét a Setpoint-tól függően)
- 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:
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:
A kijelző beállításai:
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.
Domoticz mintakód állapot szinkronizálásra:
termcurl = 'http://192.168.1.13/control?cmd=thermo,'
if (deviceName=='Termosztát adatok') then -- IDX=97
TSetpoint, THeating, TMode, TTimeout = otherdevices_svalues['Termosztát adatok']:match("([^;]+);([^;]+)")
if (tonumber(THeating)~=1) then -- Decode incoming dataset
state='Off'
else
state='On'
end
if (otherdevices['Termosztát aktív'] ~= state) then
commandArray['Variable:skiptermorefresh']=tostring(1)
if (state=='On') then -- State changed locally
commandArray['Termosztát aktív']='On'
else
commandArray['Termosztát aktív']='Off'
end
end
if (tonumber(otherdevices['Termosztát']) ~= tonumber(TSetpoint)) then
commandArray['SetSetPoint:120']=TSetpoint
end -- domoticz setpoint holder, IDX=120
end
if (deviceName=="Termosztát aktív") then
if tonumber(uservariables['skiptermorefresh']) < 1 then
if deviceValue=='On' then -- State change request from Domoticz GUI
print("futes be")
commandArray['OpenURL'] = termcurl ..'mode,2,60'
else
print("futes ki")
commandArray['OpenURL'] = termcurl ..'mode,1'
end
else
commandArray['Variable:skiptermorefresh']=tostring(0)
end
end
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.
ssgtvik 2019.02.24. 20:39:14
Nagyon megtetszett ez a termosztát, ezért után építettem. Igaz más alkatrészekkel. Alapnak D1 mini-t használtam, ennek kiegészítőivel.
d1 mini relé, d1 mini dht, stb...Problémába ütköztem. Létezik hogy a D1 mini miatt többet fogyaszt a szerkezet? Nagyon ingadozik a hőmérséklet mérése, saját szenzorról. Időnként le is áll a hő mérése ilyenkor 0C mér.
Készítettem egy másik eszközt is. Azzal már a firmware felrakás is problémás. Állandóan megszakítja a wifi kapcsolatot AP módba, tehát be se tudom állítani, a saját wifi-t(a te wifi kapcsolatod benne van alapból). Azért gondolom a nagyobb fogyasztást, mert ha laptop usb-ről táplálom nem is mér a DHT. Egyébként 700mA tápot használok hozzá, de itt is hol mér hol nem. A te kapcsolásod 600mA tápot használ. Kérnék egy kis segítséged, hátha van valami ötleted ezzel kapcsolatban. Köszönöm.
eNeS 2019.02.25. 07:23:41
Madzsar 2019.04.04. 11:05:08
Olyan wifis termosztátot keresek, ami min/max. riasztást is megbízhatóan tud küldeni. E-mailben lenne a legjobb (gmail), de ha van olyan app, amiben stabilan működik a push üzenet, akkor talán az is jó lehet. Ismertek ilyen kész terméket?
Az alis termosztátokban láttam ilyen funkciót, de a tuya app csak akkor mutatja a riasztásokat, amikor megnyitom az appot, így viszont nem ér semmit, mert nem napokkal később szeretnék róla értesülni, hogy szétfagyott vagy kigyulladt a nyaraló...
t3v3h 2019.08.01. 11:44:34
Computherm-hez milyen firmware van? Próbáltam rákeresni, de nem dok sikerrel.
Köszi,
t
eNeS 2019.08.01. 17:58:20
t3v3h 2019.08.03. 10:02:51
t3v3h 2019.08.05. 14:31:14
szóval más irányba kell indulnom, hogy összehozzam a domticz-al.. (ha lehet egyáltalán)
Szadai Zoltán 2020.01.07. 20:59:31
Jó kis cikk, és a termosztátot is sikerült lemgyártanom ez alapján. :)
Ugyan más házba került, és kicsivel kisebb a relé, de ez elhanyagolható difi.
Azt szeretném megkérdezni, hogy a Domoticznak küldött infókat a szerver oldalon hogy dolgozod fel. Nekem egyenlőre csak az első változót sikerült felgolgozni (setpoint), de a többit nem. Ezzel sikerült megoldanod a szinkront is a szerver és a termosztát között? Azaz ha a termosztáton gombbal kapcsolod ki a fűtést, akkor az látszik a szerveren is?
eNeS 2020.01.07. 21:51:59
Szadai Zoltán 2020.01.08. 08:24:13
eNeS 2020.01.08. 19:37:01
aniauto 2020.01.11. 17:02:48
Köszi a munkádat, tervezés, építés ...
A hétvégén megépítettem :)
Egy problémám akadt, önállóan müködne, nincsen külső hőmérő.
A probléma hogy bekapcsolás után a kijelzőn megjelenik a saját érzékelő értéke, de utána nem frissül. Nem tudom mi lehet a hiba.
eNeS 2020.01.11. 18:25:24
aniauto 2020.01.11. 19:23:41
a [global#temp] forrást , temp-re ?
aniauto 2020.01.11. 19:46:11
Szadai Zoltán 2020.01.11. 22:04:58
eNeS 2020.01.12. 09:12:38
aniauto 2020.01.12. 09:26:35
Tökéletes
Szadai Zoltán 2020.02.10. 18:20:34
Lehetséges, hogy a termosztát gondol egyet, és beragad?
Azaz kap kintről hőmérsékletet, de nem kapcsolja ki a kazánt.
Lehetséges, hogy egy frissebb firmware megoldja a problémát? (próbáltam kreálni egyet, de semmi értelmes leírást nem találtam a plugin integrációhoz)
eNeS 2020.02.10. 19:12:09
Szadai Zoltán 2020.02.10. 19:17:59
too many arguments to function 'String parseTemplate(String&)'alóban nem fordul, ez a problémám. :)
too many arguments to function 'String parseTemplate(String&)'
A fura, hogy működik, de egyszercsak nem kapcsolta le a kazánt. Ma sikerült 27 fokban hazaérnem. :)
eNeS 2020.02.10. 20:12:50
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
if [homero#Temperature]>27 and [disp#heating]>0
thermo,mode,0
endif
endon
eNeS 2020.02.10. 20:14:53
Elektro_atmel 2020.09.23. 16:38:09
eNeS 2020.09.23. 20:01:09
"Termosztát adatok" - General Custom Sensor
"Termosztát" - Thermostat SetPoint
"Termosztát aktív" - Light/Switch Switch
Laza... 2020.11.20. 16:17:36
A blogod után kaptam kedvet az okosotthonhoz, az írásaid ösztönöztek arra hogy belevágjak én is egy ilyen projectbe.
Soksok dolgot megépítettem az írásaid alapján, és közben én is fejlődtem, egész jó kis rendszerem van már itthon. :)
De!
Ez a termosztát is megtetszett, a Domoticz SVT termosztátját szeretném lecserélni erre. Megépítettem, müxik is frankón, de a Domoticzba sehogyan sem tudom integrálni, ez egyszerűen meghaladja a (nem) létező tudásomat. Jó lenne ha legalább a setpoint tudna működni távolról, ennek megvalósításához kérném a segítséged. (ma x a kijelzés működik nekem :( )
Előre is köszi: Laza
eNeS 2020.11.20. 18:20:17
m1 a vége, ha mínusz egy fokot a jelenlegihez, az IP cím pedig az ESPEasy vezérlésű termosztát. Fél fokonként is lehet állítani, de nekem az egy fok jobban bevált. Végül ezeket a gombokat vagy kirakod a kedvenc eszközök közé Domoticzban, vagy egy Dashticz-szerű wallpanelen, valahogy így:
ibb.co/hmG2Gq1
Laza... 2020.11.20. 19:26:37
Még egy: Azt lehet hogy egy kapcsoló mutassa hogy éppen fűt, vagy nem fűt (mint egy kapcsoló(ikon))? Már csak ennyi hiányzik, és nagyon szupi lesz :)) Most nagyon örülök :))
eNeS 2020.11.20. 20:48:24
Elektro_atmel 2021.02.13. 15:54:52
elektro-atmel.blog.hu/2021/02/13/thermoled_plugin_atalakitva
eNeS 2021.02.13. 17:19:02
Elektro_atmel 2021.02.13. 18:24:15
elektro-atmel.blog.hu/2021/02/13/espeasy_leforditva_feltoltve
Elvileg az új kiadással fordult le, de nem kevés próbálkozásba került ez.