Gerade in der kalten Jahreszeit laufen Heizungen auf Hochtouren. Doch was wäre ein Smart Home, wenn man die Heizung nicht ebenfalls automatisch oder einfach per Klick am Smartphone steuern würde? Dadurch, dass neue Thermostate mit Bluetooth ausgestattet sind (eQ-3) und immer günstiger werden, wird es umso interessanter diese per Raspberry Pi und einer Hausautomatisierungssoftware wie OpenHAB zu steuern.
Zunächst werden wir in diesem Tutorial ein solches eQ-3 Bluetooth Thermostat an unsere Heizung anschließen, anschließend einen generellen Verbindungstest am Raspberry Pi starten und zu guter Letzt in unser Smart Home einbinden, sodass wir es über das OpenHAB UI steuern können.
Thermostat Zubehör
In diesem Tutorial habe ich folgendes Zubehör verwendet:
- Raspberry Pi (min. 3B)
- Micro SD Karte (mindestens 16 GB)
- USB Ladegerät und USB Kabel zum Laden
- Eqiva Bluetooth Thermostat (alternativ hier bei ebay)
- Werkzeug zum Montieren (Rohrzange)
Falls du nicht eines der verlinkten Thermostate kaufst, achte unbedingt darauf, dass das eQ-3 Thermostat Bluetooth unterstützt, da es ansonsten nicht angesteuert werden kann.
Prinzipiell können diese Heizungsregler (eQ-3 Radiator Thermostat) auch per Smartphone aus der Nähe angesteuert werden. In unserem Smart Home möchten wir aber natürlich Zugriff auf alle Geräte von einem Ort – dem OpenHAB User Interface (HomeMatic IP Alternative). Dies ist ebenfalls per Smartphone steuerbar.
Aufbau und Montage des neuen eQ-3 Thermostat
Bevor wir starten, muss das alte Heizthermostat abmontiert werden. Drehe dazu die Temperatur voll auf. Anschließend kannst du mit Hilfe der Rohrzange das alte Heizkörperthermostat abschrauben.
Darunter befindet sich der Anschluss der Heizung. Bei allen neueren ist dies ein Anschluss der Firma „Danfoss“. Bei unserem eqiva Thermostat ist ein Adapter dafür beiliegend, der genau passen sollte (eine kleine bebilderte Anleitung liegt ebenfalls bei). Nachdem du diesen Adapter aus Plastik montiert hast, kannst du das Bluetooth Thermostat aufschrauben. Nimm davor die Schutzkappe ab und setze Batterien ein:
Für den Fall, dass du keinen Anschluss von Danfoss hast, so gibt es Hilfe im Baumarkt. Für so ziemlich alle Heizungsanschlüsse gibt es entsprechende Adapter. Entweder du bringst dein altes Heizungsventil mit oder du schaust in dieser Übersicht nach, welchen Anschluss du hast und lässt dich entsprechend im Baumarkt beraten.
Eine detailierte englische Bedienungsanleitung mit viel Hintergrundwissen findest du übrigens hier.
Installation der eQ-3 Bibliothek am Raspberry Pi / openHAB
Vorausgesetzt ist eine SD Karte mit installiertem OpenHAB 2. Falls du dies noch nicht getan hast, solltest du damit anfangen.
Für die eQ3 Thermostate gibt es auf Github verschiedene Bibliotheken, mit deren Hilfe man diese einfach per Bluetooth steuern kann.
Verbinde dich per SSH mit dem Raspberry Pi und installiere das Tool „expect“.
sudo apt install expect
Gib nun gatttool
ein und stelle sicher, dass kein Fehler angezeigt wird.
Anschließend können wir bereits nach dem eqiva Thermostat suchen. Folgender Befehl listet die MAC Adressen aller Bluetooth Geräte in der Umgebung auf:
sudo hcitool lescan
Einer der Einträge wird als „CC-RT-BLE“ gelistet. Die MAC Adresse davor ist die von unserem Thermostat. In meinem Fall ist es 00:1A:22:0F:C4:DD. Kopiere dir diese Adresse, da wir sie später an verschiedenen Stellen brauchen werden.
LE Scan ... C0:28:8D:91:9D:10 60:0D:D8:CB:CF:8C (unknown) A0:ED:CD:ED:5A:D4 (unknown) 00:1A:22:0F:C4:DD CC-RT-BLE ...
Soweit, so gut. Wir laden jetzt noch die Bibliothek von Github herunter und wagen einen ersten Test:
git clone https://github.com/artpetro/eQ-3-radiator-thermostat
Um den Status auslesen zu können, gib folgendes ein (die MAC Adresse muss angepasst werden), wodurch du direkt ein Ergebnis sehen wirst:
./eQ-3-radiator-thermostat 00:1A:22:0F:C4:DD sync Temperature: 4.5°C Valve: 0% Mode: off Vacation mode: off
In den nächsten Schritten werden wir zusätzliche Erweiterungen für OpenHAB benötigen. Wähle in deinem Browser unter http://openhabianpi:8080/paperui/index.html#/extensions Extensions aus und installiere JSONPath Transformation.
Webserver aufsetzen und PHP 7 nachinstallieren
Wir haben gesehen, dass mittels eines Skriptes die Kommunikation vom Raspberry Pi zum eQ-3 Thermostat bereits wunderbar funktioniert. Nun wollen wir das ganze auch ohne SSH verfügbar machen. Hierzu könnten wir die bereits laufende Instanz nehmen, auf der das OpenHAB 2 UI läuft. Da dies mit einer Menge Konfiguration verbunden ist, installieren wir einen kleinen Apache2 Server:
sudo apt-get install apache2
Der Webserver läuft danach bereits und du kannst dies prüfen, indem du die IP Adresse (oder http://openhabianpi) in deinen Browser eingibst.
Außerdem benötigen wir noch PHP 7.x (du kannst die Version auswählen, in meinem Fall ist es 7.2).
sudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - sudo echo "deb https://packages.sury.org/php/ jessie main" | sudo tee /etc/apt/sources.list.d/php.list sudo apt-get update
Falls du keine Raspbian Jessie Version nutzt, musst du den Befehl entsprechend anpassen. Welche Linux Version du genau hast, kannst du wie hier beschrieben, herausfinden.
Nun können wir PHP 7.2 (oder eine andere Version) mit allen Extensions installieren:
sudo apt-get install php7.2 php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-intl php7.2-mysql php7.2-xml php7.2-zip
Schaltung des eQ3 Thermostats per Webserver in OpenHAB
Im letzten Schritt nutzen wir all das auch in OpenHAB. Alle nötigen eQ-3 Bibliotheken und Voraussetzungen sind auf dem Raspberry Pi erfüllt und wir fangen nun an.
Im ersten Schritt kopieren wir das Skript, welches wir gerade getestet haben, in das Apache2 Verzeichnis und benennen es um:
sudo mv eQ-3-radiator-thermostat/ /var/www/html sudo mv /var/www/html/eQ-3-radiator-thermostat /var/www/html/eq
Nun verändern wir noch eine Zeile des PHP Skripts:
sudo nano /var/www/html/eq/php/eq3.php
Zeile 3 ersetzen wir durch folgendes:
1 |
$script = "/var/www/html/eq/eq3.exp "; |
Gespeichert wird mit STRG+O, den Editor beenden wir mit STRG+X.
Um das Skript nun testen zu können, kannst du folgende URL aufrufen und sehen, wie sich die Temperatur des Thermostats verändert (MAC Adresse anpassen):
http://openhabianpi/eq/php/eq3.php?mac=00:1A:22:0F:C4:DD&temperature=24.0&mode=manual
Statt openhabianpi kannst du auch die lokale IP Adresse nehmen. Du solltest einen Text im JSON Format sehen:
Außerdem sollte sich die eingestellt Temperatur des Heizungsregelers verändert haben.
Erstelle zunächst die Items, die wir gleich benötigen (die Namen kannst du anpassen):
sudo nano /etc/openhab2/items/thermostat.items
1 2 3 4 |
Number thermostat_wz "Thermostat Wohnzimmer [%.1f °C]" { http=">[*:GET:http://openhabianpi/eq3/php/eq3.php?mac=00:1A:22:0F:C4:DD&temperature=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:600000:JSONPATH($.temperature)]" } Switch thermostat_wz_mode "Thermostat Auto [%s]" { http=">[*:GET:http://openhabianpi/eq3/php/eq3.php?mac=00:1A:22:0F:C4:DD&mode=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:600000:JSONPATH($.mode.auto)]" } Switch thermostat_wz_boost "Thermostat Boost [%s]" { http=">[*:GET:http://openhabianpi/eq3/php/eq3.php?mac=00:1A:22:0F:C4:DD&boost=%2$s{Authorization=Basic SECRET}] <[thermostatWohnzimmer:120000:JSONPATH($.mode.boost)]" } Number thermostat_wz_valve "Thermostat Ventil [%.1f]" { http="<[thermostatWohnzimmer:600000:JSONPATH($.valve)]"} |
Nun erstellen wir noch eine HTTP Konfiguration für OpenHAB.
sudo nano /etc/openhab2/services/http.cfg
1 2 |
thermostatWohnzimmer.url=http://openhabianpi/eq3/php/eq3.php?mac=00:1A:22:0F:C4:DD{Authorization=Basic SECRET} thermostatWohnzimmer.updateInterval=120000 |
Damit wir das ganze auch einfach per User Interface steuern können, gibt es noch eine Sitemap (der Name ist frei wählbar: falls ein anderer Name gewählt wird, muss die OpenHAB URL angepasst werden):
sudo nano /etc/openhab2/sitemaps/default.sitemap
1 2 3 4 5 6 7 |
sitemap default label="SmartHome" { Setpoint item=thermostat_wz label="Thermostat [%.1f °C]" minValue=4.5 maxValue=30 step=0.5 Text item=thermostat_wz_valve Switch item=thermostat_wz_mode Switch item=thermostat_wz_boost } |
Nach dem Speichern kannst das Basic UI im Browser aufrufen: http://openhabianpi:8080/basicui/app
Falls du mehrere eQ-3 Thermostate mit dem Raspberry Pi und OpenHAB steuern möchtest, so kannst du einfach weitere Things erstellen (MAC Adresse anpassen) und die Sitemap einfach anpassen. Natürlich kannst du den entsprechenden Teil dieser Beispiel-Sitemap auch woanders einbauen und bestehende erweitern.
22 Kommentare
Hallo,
Ich würde das gerne für unser Haus umsetzten, die Frage die sich mir stellt ist, das ganze läuft ja dann per Bluetooth von raspverry aus oder ?
Wie ist da die Reichweite wenn ich eine Etage höher oder tiefer auch Heizungsregler steuern möchte ?
Danke
Hallo Marc,
sowohl der Raspberry Pi, als auch das Heizthermostat müssen Bluetooth aktiviert haben (Pi sendet, eQ empfängt). Das mit der Reichweite musst du ausprobieren, weil es auf die Wandstärke usw. ankommt. Kann man leider nicht pauschal sagen.
LG, Felix
Hallo,
Danke für deine Antwort. Ja okay das würde ich dann testen, sind denn mehr Optionen bzw Einstellungen möglich als die vier die oben zu sehen sind ?
Per App kann man ja die Zeiten ändern usw, das ist nicht möglich oder ?
Was ist der Vorteil ggü dem homematic binding?
Hi, ich habe das Problem, dass das JSON file leer bleibt…
an dieser Stelle…
./eQ-3-radiator-thermostat 00:1A:22:0F:C4:DD sync
bekomme ich bereits eine Fehlermeldung…
[13:52:02] openhabian@openhab:~$ ./eQ-3-radiator-thermostat 00:1A:22:11:93:04 sync
-bash: ./eQ-3-radiator-thermostat: Is a directory
[13:53:03] openhabian@openhab:~$
kann evtl. jemand helfen?
statt
[13:52:02] openhabian@openhab:~$ ./eQ-3-radiator-thermostat 00:1A:22:11:93:04 sync
eher
./eq3.exp XX:XX:XX:XX:XX sync
in dem Ordner in dem sich das eq3.exp script befindet.
Deine Antwort war Gold Wer, vielen dank dafür.
Bei mir Stand 14.11.2020 hatte ./eQ-3-radiator-thermostat/eq3.exp XX:XX:XX:XX:XX sync geholfen.
Hallo,
Erstmal Super Anleitung, funktioniert Super 😉
Ich würde das Thermostat nun auch Google fähig machen, nur leider bekomme ich folgende Fehlermeldung sobald ich versuche die Items einer Gruppe zuzuweisen.
Configuration model ‚thermo.items‘ has errors, therefore ignoring it: [2,63]: missing EOF at ‚<'
Gibt es dafür eine Lösung oder ist es einfach nicht machbar ?
Vielen Dank im vorraus.
Danke für den Guide, kam gerade passend zum Kauf des eq3.
Bis zum letzten Schritt bin ich erfolgreich gekommen (Anzeige der Json und Steuerung via http), nur bleibt die Basic UI leer bzw. funktionslos. OH2 läuft bei mir als Host auf einem Intel NUC mit OMV/Debian, da bin ich noch am überlegen wo der Fehler liegen könnte (Irgendwas mit den Rechten vielleicht?). Laut den OH2-Logs findet auch ein item state change statt, nur kommt am Thermostat davon nichts an, die json bleibt davon ebenfalls unberührt.
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz‘ received command 4.5
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz‘ received command 4.5
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz‘ received command 4.5
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz‘ received command 4.5
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz‘ received command 4.5
[ome.event.ItemCommandEvent] – Item ‚thermostat_wz_mode‘ received command OFF
Hey,
hab den Fehler gefunden, in Zeile 3 muss man nichts reinkopieren in der PhP.
Der Pfad des Scriptes steht schon in der oberen Zeile 🙂
nachdem ich den „doppelten“ Pfad quasi gelöscht habe, lief das Script einwandfrei ! 🙂
mein Fail….
gleicher Fehler nach wie vor, selbe wie bei dir :<
Jemand bereits ne Lösung für das Problem ?
Hey Kelvin,
hast du bereits eine Lösung ?
Ich konnte nur feststellen, dass man in Openhab noch das HTTP Binding installieren muss.
Trotzdem funktioniert es noch nicht.
VG
Hey ich hatte das gleiche Problem
und zwar ändere im Item: in der URL die Codes: > gegen , das & kannst du das amp; weck löschen. Zudem solltest du probieren die Mac Adresse in der URL die Doppelpunkte durch einen – zu tauschen. Und das hat dann alles zum Laufen gebracht, indem ich in der PaperUI http bindigs hinzugefügt habe
in der URL die Codes: „>“ gegen „“ das „&“ kannst du das amp; weck löschen.
Hallo,
ist das richtig, dass ich dann maximal 2 Thermostate so steuern kann, da openHAB ja nur 2 Cache-Speicher zur Verfügung stellt ?
würde mich allerdings auch interessieren. ich habe vor 4 solcher Thermostate zu steuern.
Tolles Tutorial danke für den Artikel. Mir ist aufgefallen das der Pfad nicht einheitlich ist zu den Dateien im Webserver. Müsste es nicht heißen:
sudo mv /var/www/html/eQ-3-radiator-thermostat /var/www/html/eq3 ?
Der Ordner wird später immer mit dem Pfad eq3 aufgerufen wenn ich das richtig lese.
Damit OpenHab2 meine Items akzeptiert musste ich sie folgendermaßen umschreiben:
Number tWZ „T: [%.1f °C]“ { http=“>[*:GET:http://lokale-ip/eq3/php/eq3.php?mac={mac}&temperature=%2$s{Authorization=Basic SECRET}] [*:GET:http://lokale-ip/eq3/php/eq3.php?mac={mac}&mode=%2$s{Authorization=Basic SECRET}] [*:GET:http://lokale-ip/eq3/php/eq3.php?mac={mac}&boost=%2$s{Authorization=Basic SECRET}] <[tWZ:120000:JSONPATH($.mode.boost)]" }
Number tWZ_valve "T. Ventil [%.1f]" { http="<[tWZ:600000:JSONPATH($.valve)]"}
Leider funktioniert das ganze bei mir trotzdem nicht. Die Daten werden von dem Thermostat richtig geladen aber das ändern klappt leider nicht.
Schönen Tag, Ich bin gerade bei der sync angekommen, doch bei der Ausführung kommt connection failed. Habe Raspberry Pi mit Bluetooth mit dem Thermostat verbunden und weiter Komm ich nicht, wäre nett wenn mir jemand helfen könnte.
Ich bin mit dem Thermostat via Bluetooth verbunden. Habe alles soweit in der Anleitung durchgeführt.
Jedoch kann ich das Skript zum syncen nicht starten. Bei folgender Eingabe entsteht folgende Fehlermeldung:
[22:50:17] openhabian@openhab:~$ ./eq3.exp 00:1A:22:06:2A:BB sync
-bash: ./eq3.exp: Datei oder Verzeichnis nicht gefunden
Mit dem Befehl „sudo nano /var/www/html/eq/php/eq3.php“ kann ich das Skript editieren, also würde ich jetzt mal annehmen, dass das Skript definitiv vorhanden ist, oder irre ich mich?
Was kann ich tun, damit ich mich mit meinem Thermostat syncen kann?
Moin, hast du schon eine Lösung?
Sieht so aus, als ob das Skript mit der neuesten Firmware nicht mehr richtig funktioniert.
Ein Sync ruft bei mir folgendes hervor:
expect: spawn id exp4 not open
while executing
„expect -re „[0-9a-f ]*“ {
log „ok“
}“
Wo bei ein „on“ oder „off“ funktioniert
Das Tutorial scheint seit 2020 nicht mehr kommentiert zu werden. Gibt es da eine Fortsetzung in
einem anderen Tutorial?
Gruß