Itt a fűtési szezon és elgondolkodtam, hogy milyen jó lenne a Computherm Q8RF termosztátom állapotát látni a HomeAssistantban, esetleg még vezérelni is azt, így nem kellene hozzányúlnom a fűtési rendszerhez, mégis integrálva lenne az okosotthon rendszerembe.
Ismét a googlet hívtam segítségül, hátha valaki már megoldotta helyettem ezt a problémát is, nekem csak össze kell építenem. Igazam volt :) És milyen nemzetiségű lehetne, aki már megoldotta? Hát Magyar! Hurrá, ha elakadásom lenne, kérdezhetek is az anyanyelvemen Tőle. Kicsit tovább keresgélve, meglett a blogja is, ahol részletesen leírta a folyamatot, amit ajánlok mindenkinek olvasásra, nagyon jó sorozat!
- https://ardu.blog.hu/tags/Computherm_Q8RF
- https://github.com/denxhun/ComputhermRF/blob/master/README.md
A project anyagigénye az alábbiak szerint alakul (árban kb. 3.000.- jó magyar forint):
- ESP 8266 Wemos D1 mini
- HopeRF RFM119W-868S1 ezzel NEM működik!!!
- HopeRF RFM117W-868S1
- HopeRF RFM217W-868S1
![]() |
![]() |
![]() |
RFM117W-868S1 | RFM217W-868S1 | ESP8266 |
Szóval megvan a library, amit használnunk kell és megvannak a hardware elemeink is. Első körben nézzük meg a példakódokat és próbáljuk megfejteni hozzá a bekötést. Az alábbi eredményre kell jutnunk:
RFM117W-868S1 pin | RFM217W-868S1 pin | ESP8266 pin |
VDD | VDD | 3V3 |
GND | GND | GND |
- | DATA | D1 |
DATA | - | D2 |
CLK | - | - |
- | CLK | - |
- | SDA | - |
- | CSB | - |
Ehhez a projecthez sokak bánatára az Arduino IDE programot fogom használni és ebben fogok egy alap működést összeollózni. Be kell ismernem, hogy lusta vagyok, egyszerűbb meglévő kódok felhasználásával összerakni egy működő dolgot, mint nulláról megírni. Abban az esetben, ha nincs más választásom, marad a kódolás nulláról, de ebben az esetben több példakód egymásba illesztésével is megoldható a feladat.
De mi az első feladat?
Működésre bírni a vevő egységet és megnézni, milyen kommunikáció megy az éterben, mit üzengetnek a termosztátok a központnak. Ha ez megvan, akkor mqtt-n beküldöm az adatokat a HomeAssistantnak és megjelenítem a felületen. Web felületet az ESP-be nem rakok, nem lesz wifi és mqtt manager oldal sem, úgyis HA alatt szeretnék látni mindent.
Szóval, nincs más hátra, töltsük le az ArduinoIDE alkalmazást és installáljuk a gépünkre, majd indítsuk is el. Ha ez sikeresen megtörtént, installáljuk a megfelelő alaplapot (ESP8266 és a projecthez tartozó függőségeinket). Először az alaplap managerben adjuk hozzá az ESP8266 boardot:
- 1, Fájl --> Beállítások
- 2, További Alaplap-kezelő URL-ek: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- 3, Eszközök --> Alaplap: --> Alaplap-kezelő
- 4, ESP8266 --> Telepítés
- 5, Az alaplap információk ezennel telepítésre kerültek
- 6, állítsuk be, hogy a fordításokhoz a WEMOS D1 alaplapot használja a program (vagy amit beszereztünk)
Ezennel sikeresen beállítottuk az Arduino IDE programot, hogy a Wemos D1 minire tudjunk benne programot írni, fordítani és feltölteni rá. Következő lépésben szükségünk van azokra a libekre, amiket használni szeretnénk. Először installáljuk hozzá denx computherm lib-jét.
- Vázlat --> Könyvtárak tartalmazása --> Könyvtárak kezelése...
- Keressünk rá a computherm szóra, majd a találati listában megjelenő Library-t telepítsük.
Sikeres telepítést követően keressük meg a példák között a Computherm sendert, hogy kipróbáljuk a példa programot. Ezt azért nem érdemes kihagyni, mert nem fog működni a fordítás...
Ha az ArduinoIDE-ben rányomunk az ellenőrzés gombra, sajnos a fordítás sikertelen lesz, mert a példakód egy nem létező fájlra hivatkozik, ami ebben a formában nem teljesen igaz. A problémát az okozza, hogy a példakódban a hivatkozott fájl nevében vannak nagy betűk, míg a fájl neve csupa kisbetű.
Ezt szerencsére könnyen orvosolhatjuk, ha
- átnevezzük a fájlt (ezt szoktam tenni, mert általában a példát kapom elő, ha szeretnék valamit)
- átírjuk a kódban csupa kisbetűsre
Ezt követően, ha újra ellenőrizzük a kódunkat, már sikeresen lefordul.
A tervezett működésünkben szerepel, hogy MQTT-n szeretnénk a státuszokat küldeni (majd a vezérlő utasításokat fogadni), ezért telepítenünk kell a PubSubClient library-t is a fent bemutatott módon:
Mostanra eljutottunk oda, hogy megvan minden elő követelményünk, hogy az eltervezett kódot összeollózzuk a példakódokból. Ehhez felhasználom a PubSubClient, a Sender és a Receiver példákat.
A kód elején kell megadni a WiFi és MQTT kapcsolódási adatokat. Fixen beégetem a kódba, mivel nem terveztem konfigurációs oldalt a rendszerhez (minél gyorsabban meglegyek), de akinek van affinitása, talál rá példákat a neten vagy az arduino libjei között is (az egyik kedvencem tzapu WiFiManager lib-je).
Itt kerül definiálásra az a két lába is az ESP-nek, amire az adó és vevő egységünket kötöttük. A kódban GPIO-ra hivatkozunk, ami nem egyezik meg a lábak melletti nevekkel.
ComputhermRF rf = ComputhermRF(5, 255);
Az első 5-ös a GPIO5-öt jelenti, ami a Wemos D1 mini (ESP8266) modul D1-es lába, ahova a vevőt kötöttük. A második, 255 pedig azt, hogy az adót most nem használjuk, mivel először a vevőt szeretnénk feléleszteni/kipróbálni és illeszteni a HA-hoz. A kép végén látható, hogy a küldő/sender rész ki is van kommentezve a kódban, így a fordító figyelmen kívül fogja hagyni (mintha ott se lenne).
Egy kis magyarázat a setup részhez is, hogy mégis tudjuk, mit csinál a kód. Itt kerül beállításra a soros port, ahol majd a debug üzeneteket fogjuk megkapni, elindul a wifi, ami kapcsolódik a beállított AP-hoz a megadott jelszóval, beállításra kerül a wifi kliens ném, amivel megtaláljuk majd a rouertünkben, ezekről a soros porton tájékoztat majd minket (serial.print). Kapcsolódik az MQTT szerverhez a megadott adatokkal, majd erről is ír státuszokat a soros porton és feliratkozik a topicra. Végezetül inicializálásra kerül a 868,35MHz-es vevő modulunk.
A callback rész az MQTT üzenetek kezelését végzi egyelőre, amit ki is ír a soros portra, hogy lássuk, mi történik az ESP oldalán.
A loop rész maga a főprogram. Lényeges változtatást itt tettem a kódba, mert a topic-ot, ahol az üzenetek kerülnek kiküldésre, módosítom, hogy a HA oldalán egyszerűbben kezelhető legyen, melyik termosztát üzenetéről van szó. Úgy módosul, hogy a végéhez hozzárakom az azonosítóját a termosztátnak és abba a topicba küldöm bele, hogy on vagy off a státusz. Tehát ez lesz a topic: wifito868gw/computherm/termosztát.address
Ha minden kódrészt átírtunk, ami szükséges, ellenőrizzük a kódunkat, hogy megfelelően lefordul -e. Ha nem, akkor ellenőrizzük, mit rontottunk el. Ilyen lehet, ha a sorok végéről kitöröljük a ; karaktert vagy a kapcsolódási adatok megadásakor véletlenül töröljük valamelyik idézőjelet.
Nincs más hátra, mint a kódunk feltöltése a wemosra. Ehhez egy USB kábellel kössük rá a modulunkat a számítógépünkre.
Állítsuk be, melyik porton található (hol látja a windows/linux/max).
Ha ezzel megvagyunk, kattintsunk a feltöltés ikonra. A folyamatot az ablak alján látható sávban követhetjük nyomon.
Sikeres feltöltést követően az ArduinoIDE soros monitorját indítva megnézhetjük, mit kommunikál az ESP modulunk. Azon üzenetek jelennek meg itt, amiket kiírattunk a kódban. Indítsuk el a soros monitort
Eszközök --> Soros monitor
A logban látható, hogy az ESP kapcsolódik a WiFi hálózathoz (ott a kliens neve és MAC címe is, hogy a routerben megtaláljuk), majd az MQTT brokerhez, végül elindul az 868,35MHz-es RF vevő. Itt látszik, hogy a termosztátok bizonyos időközönként küldik az aktuális állapotukhoz tartozó üzenetet a központ felé. Az már látszik, hogy a későbbiekben ez fejtörést fog okozni, hogy ha a HA alól kiadom az ON üzenetet, akkor a termosztát ezt felül fogja bírálni egy OFF üzenettel, így pediodikusan ismételgetnem kell majd, de ez egy későbbi probléma, most nézzük mit is látunk még itt.
Az address az egyedi azonosítója a termosztátnak, ami érdekesség számomra, hogy az egyik nálam két azonosítót küld magáról, de státuszban ugyanazt. Ha rányomunk a termosztáton, hogy fűtsön a kazán, megjelenik a logban is az ON üzenet.
A Wemos D1 oldalon úgy látszik, hogy sikeresen vesszük a termosztátok jeleit és továbbítjuk azt az MQTT broker felé a megfelelő topicokba. Következő lépésként konfiguráljuk a HomeAssistantot, hogy lássuk is a rendszerünkben az itt feladott üzeneteket.
Ehhez módosítani kell a configuration.yaml fájlt (ha valamelyik integrációnk nem vette eddig észre az új entitásokat). Mivel ez végülis egy kapcsoló, így a switch szekcióba helyezem el. Emlékezzünk, hogy a kódban a topic részt, ahová küldöm a státuszokat, kiegészítem a termosztát address paraméterével, így a state_topic-ot így kell megadni, tehát az utolsó 5 karaktert a soros log-ból kell kinézni. A command topic egyelőre előkészület, mivel a vezérlés még nincs megírva, de HA oldalon már előkészítem (de változhat).
switch:
- platform: mqtt
unique_id: '3f3tzmf3aygx3loc3txh3ldg3oj3wa3c'
name: 'Computherm Q8RF - Fszt 1'
state_topic: 'wifito868gw/computherm/E65FB'
command_topic: "wifito868gw/computherm"
value_template: '{{ value_json.POWER }}'
payload_on: 'ON'
payload_off: 'OFF'
state_on: 'ON'
state_off: 'OFF'
payload_available: "Online"
payload_not_available: "Offline"
qos: 0
retain: true
- platform: mqtt
unique_id: '4f4tzmf4aygx4loc4txh4ldg4oj4wa4c'
name: 'Computherm Q8RF - Fszt 2'
state_topic: 'wifito868gw/computherm/E65F7'
command_topic: "wifito868gw/computherm"
value_template: '{{ value_json.POWER }}'
payload_on: 'ON'
payload_off: 'OFF'
state_on: 'ON'
state_off: 'OFF'
payload_available: "Online"
payload_not_available: "Offline"
qos: 0
retain: true
- platform: mqtt
unique_id: '5f5tzmf5aygx5loc5txh5ldg5oj5wa5c'
name: 'Computherm Q8RF - Emelet'
state_topic: 'wifito868gw/computherm/375F7'
command_topic: "wifito868gw/computherm"
value_template: '{{ value_json.POWER }}'
payload_on: 'ON'
payload_off: 'OFF'
state_on: 'ON'
state_off: 'OFF'
payload_available: "Online"
payload_not_available: "Offline"
qos: 0
retain: true
Ha ezzel megvagyunk, lépjünk be a Home Assistantba, ellenőrizzük, hogy a konfigurációnk helyes -e, majd töltsük újra a manuálisan konfigurált entitásokat. Ha mindent jól csináltunk, akkor az entitások alatt megjelennek a termosztátjaink.
Próbából egy entitások kártyára felraktam ezeket az entitásokat, hiszen a be- és kikapcsolás üzenetek fogadása már működik, a rendszerben megjeleníthető.
![]() |
![]() |
Ebben a részben eljutottunk odáig, hogy beszereztük a szükséges modulokat, a vevő egységet összekábeleztük az wemos d1 (esp8266) modulunkkal, megírtunk egy alap programot, ami kapcsolódik a WiFi hálózatunkra, olvassa a vevő által vett jeleket (felhasználva denx fáradtságos munkáját), elküldi mqtt-n a brokernek, majd megjelenítettük azt a Home Assistant-ban.
A következő részben felélesztjük az adó modult is, hozzákötjük a Wemos-hoz és a HA alól megpróbáljuk bekapcsolni a kazánunkat az egyik termosztát nevében.
Végezetül a teljes Arduino kódot itt találod. Letöltés után a fájl kiterjesztés végéről törölni kell a .txt-t (csak így tudtam feltölteni)
UPDATE: egy kolléga megépítette Computherm Q7RF termosztáthoz is a vevő egységet és azzal is együtt működik, így akiknek ilyen eszközük van, a leírást követve integrálni tudja azt az okos otthon központjába. Az adó részről még nem érkezett visszajelzés.