Eurotronic Spirit Zigbee mittels Conbee II und iobroker

Ich beschäftige (und ärgere) mich seit einiger Zeit leidenschaftlich mit “Heimautomatisierung” und aller einhergehender Probleme. Nach allerlei “Licht-Automatismen” (welche ja den typischen Einstieg in dieses Thema darstellen, habe ich ein Black-Friday Angebot auf Amazon genutzt und einen “Smarten Heizkörper-Thermostat” gekauft um das nächste größere Thema bei der Heimautomatisierung an zu gehen:

Eurotronic Spitit Zigbee

Ich habe vor kurzem meine laufende iobroker-Installation von meiner bisherigen Hardware, einem Raspberry 2B+ auf einen leistungsstärkeren “Rock64” von Pine64 (mit 4GB RAM) umgezogen. Hierbei habe ich gleich auch meine Hardware für das Zigbee Netzwerk gewechselt.

Vorher benutzte ich einen Zigbee-Sniffer welcher eigentlich auch recht anstandslos lief, allerdings etwas Einbußen in Thema “Reichweite” und “Stabilität” hatte. Daher wollte ich mal ein “nicht-frickel-Produkt” verwenden und habe mir den “Conbee II” Stick von dresden-Elektronik bestellt:

ConBee II – USB Gateway

Erste Versuche und Tests mit dem Stick erwiesen sich als vielversprechend! Die Installation ist gut beschrieben und lief reibungslos. Die “Web-Oberfläche” welche sich über den Port 80 erreichen lässt (http://localhost) ließ sich gut konfigurieren und sieht auch noch ansprechend aus. Alle meine Zigbee Sensoren (eigentlich ausschließlich Xiaomi Aqara) ließen sich sofort und auch erstaunlich schnell mit dem Stick verbinden.

Ich sagte “Alle”? Nicht ganz. Das o.g. Heizungsthermostat erschien leider nicht in der Web-Oberfläche und der Pairing-Vorgang konnte anscheinend auch nicht erfolgreich abgeschlossen werden. Nach einiger Recherche auf GitHub und so manchen Foren stellte ich recht schnell fest, dass die Entwicklung der Software bzgl. o.g. Heizungsthermostat noch nicht ganz abgeschlossen ist und dass der Stick, (obwohl er das Thermostat unter “Supported Sensor” auflistet) dieses nicht ohne ein ganz spezielle Prozedere verwenden kann.

Nach vielen Fehlversuchen und knapp 2 Tage mit Rumprobieren, möchte ich hier nochmal festhalten, welches Vorgehen letzten Endes zum Erfolg geführt hat.

Die Lösung des Heizungs-Problemes:

Die absolut wichtigste Erkenntnis war, dass es mehrere “Arten” gibt, den Stick zu betreiben. Unter anderem ein Deamon (Service) der den Stick betreibt und dessen Web-Oberfläche zur Verfügung stellt. Es gibt allerdings auch eine Desktop-Anwendung hierzu (deCONZ). Nach erfolgreicher Installation wird automatisch der service “deconz.service” im Hintergrund gestartet, wodurch die deconz-web-app unter dem Port 80 erreichbar ist (localhost:80). Zur Einrichtung des Heizungs-Thermostats ist allerdings die GUI-Desktop-Anwendung “deCONZ” notwendig. Diese kann jedoch nicht parallel zum Web-Service laufen!! (Beim Verbindungs-Screen wird zwar der Stick angezeigt, allerdings klappt eine Verbindung mittels “connect” nicht!)

  1. Das “beta”-Repository installieren “deconz” updaten/installieren wie hier beschrieben
  2. Einloggen in der Web-Oberfläche, Sensoren > neue Sensoren Suchen/Anmelden
  3. Start des Pairing-Vorganges am Thermostat.
    1. – Batterie entnehmen und wieder einsetzen
    2. – Alle 3 Tasten gleichzeitig drücken und halten (10 Sek.)
    3. – Es wird “reS” angezeit wodurch das Thermostat neu startet
    4. – Nach dem Neustart wird “PiR” (Pair) angezeigt
    5. – Es sollte nach ca. 1-2 min. die LED am Thermostat grün zu blinke anfangen
  4. sudo systemctl stop deconz.service (Dadurch wird der Service, der das USB-Device belegt beendet, es ist dann allerdings auch die Web-Oberfläche nicht mehr erreichbar)
  5. sudo systemctl start deconz-gui.service Dadurch sollte die App auf dem Desktop starten.
  6. “Connect” sollte nun funktionieren (kann sich mit dem USB Device verbinden)
  7. es ist ein neu erstellter Node in der grafischen Übersicht vorhanden (Evtl. mit “hex-namen”)
  8. auf der rechten Seite der grafischen Darstellung, sollten 2 Kreise sein, den rechten davon anklicken.
  9. im darauf erscheinenden Popup Fenster nun “0000 Basic” anklicken
  10. auf der linken Seite “cluster” auswählen (Reiter), falls dieser nicht vorhanden ist, muss er erst über das Menü “Editor” eingeblendet werden
  11. bei dem “Basic-Cluster” auf “read” klicken. Dadurch sollten div. Werte geladen werden
  12. sudo systemctl stop deconz-gui.service Dadurch sollte die App auf dem Desktop geschlossen werden
  13. sudo systemctl start deconz.service Dadurch ist die Web-Oberfläche wieder erreichbar. Es sollte nun “Sensor verbunden” angezeigt werden. -> Ready.
  14. ab sofort, sollte das Gerät auch im iobroker-adapter erscheinen. (dieser muss ggf. aktualisiert werden, min. V.1.2)

Einbindung und Verwendung im iobroker

Stand 02.01.2020: Man kann leider den “heatsetpoint” (noch) nicht setzen. Dieser Wert ist quasi die “Soll-Temperatur”.
Dies muss im moment noch über die REST-API durchgeführt werden:

curl -X PUT -d '{"heatsetpoint":1700}' http://localhost/api/<API-KEY>/sensors/<ID>/config

Ich habe hierzu ein Java-Script geschrieben, welches ein Datenpunkt namens “javascript.0.scriptEnabled.Virtual.Solltemp_Heizung_Schlafzimmer” überwacht. Wenn sich dieser “ändert, oder neu geschrieben wird” wird der neue Wert in o.g. curl Befehl integriert und auf der Komandozeile abgesetzt.

var VALUE,API_KEY,ID;

on('javascript.0.scriptEnabled.Virtual.Solltemp_Heizung_Schlafzimmer', async function (obj) { 
    console.log("Setze neue Zieltemperatur im Schlafzimmer")
    API_KEY="xxxxxxxxx"  //bitte aus Adapter-Instanz Konfiguration entnehmen"
    ID="2"                //ID, welche dem Element zugeordnet wurde z.B. deconz.0.Sensors.2
    VALUE=obj.state.val
    exec("curl -X PUT -d '{"+'"'+"heatsetpoint"+'"'+":"+VALUE+"00}' http://localhost/api/"+API_KEY+"/sensors/"+ID+"/config");
});

Der Wert “ID” als auch der API_Key muss allerdings manuell (einmalig) eingetragen werden. Der zu überwachende Datenpunkt muss natürlich auch angelegt werden (vom typ “Zahl”).

So läuft das Thermostat. Ich kann Werte auslesen und setzen…

Jetzt heißt es warten, bis das Gerät auch komplett uns sauber in die Software integriert wurde.

Viel Spaß beim basteln!

Matthias

17 Kommentare

  1. Hallo,

    kann ich die Einrichtung wie von dir beschrieben auf einem zweiten raspi vornehmen, dann den Stick abziehen und am eigentlichen iobroker raspi einstecken und das Thermostat funktioniert dann? Hintergrund, der iobroker raspi läuft headless und ich kann dort keine gui starten.

    Danke für deine Hilfe, Grüße
    Bernd

    1. Hi Bernd,

      ich fürchte, das wird nicht funktionieren, da die Einstellungen ja (lokal) gespeichert werden. Was ich mir vorstellen kann, ist dass du die Conbee Setting-Dateien ausfindig machst und 1:1 überträgst. Allerdings ist es bei diesem Kopfstand dann wohl leichter realisiert, dass du dir auf dem Ziel-Raspi eine GUI installierst und mittels VNC drauf gehst.

      Gruß
      Matthias

      1. Hi Matthias,

        vielen Dank für deine schnelle Antwort, klasse :). Dann versuche ich mal den Weg mit VNC oder mit ssh und X Umleitung.

        Viele Grüße
        Bernd

  2. Hi, super Anleitung! Ich habe vier Thermostate zum laufen gebracht aber eins zickt etwas rum, es wird gefunden und verbindet sich auch im iobroker aber die Daten werden nicht aktualiesiert und die Werte die ich über iobroker setze kommen auch nicht am Thermostat an. Ein löschen im deconz gui hat leider auch nichts gebracht (es wird dann immer gleich wieder gefunden). Gibt es einen Weg das Thermostat noch mal komplett neu anzulernen?

    1. Hi Danny, leider habe ich dieses Setup nicht mehr in Betrieb und kann es daher nicht wirklich testen. Ich wage mich aber zu erinnern, dass dies schon möglich ist, allerdings kann ich nicht mehr sagen “wie”.
      Matthias

  3. Hallo,
    danke für die Anleitung.
    Damit bin ich schon mal so weit gekommen, dass das Thermostat in der deCONZ GUI angezeigt wird.
    Allerdings habe ich keinen Datenpunkt im iobroker unter “deconz.0->sensors”.
    Ich hab den iobroker schon neu gestartet, den RaspBee natürlich auch, den deconz-Adapter gestoppt ….
    Ich kann auch den Sollwert über die deconz-GUI ändern (0x0012), allerdings den Namen nicht (heisst bei mir 0x9254, würde ich natürlich gern ändern).
    Hast du einen Tipp was ich noch machen könnte, damit das Thermostat als Datenpunkt im iobroker angezeigt wird? Und einen weiteren Tipp, wie ich den Namen ändern kann?
    Vielen Dank!

    1. Hi Rolf, leider habe ich diese Konstellation nicht mehr im Einsatz, wodurch ich bei mit nichts mehr “testen” kann. Soweit ich mich allerdings erinnere, musste ich den deconz-Adapter neu “verbinden”. Dadurch wird die Liste der Sensoren auch aktualisiert. (Dies geht im iobroker direkt im Adapter-Setting von deconz.
      Den Namen in der Deconz-Oberfläche müsste man ändern können, genau so wie in den Objekten im iobroker (wenn er denn mal angezeigt wird).

      Matthias

  4. Hi Matthias,
    eine Superanleitung! Ich hatte zwar schon das Thermostat sichtbar in deCONZ, aber ich konnte keine heatsetpoints setzen. Das hat nun geklappt. Da ich überhaupt keine Ahnung vom Programmieren habe musste ich erst einmal die Syntax verstehen. Aber nun hat es funktioniert:) und ich kann mit iobroker und vis den heatsetpoint setzen. Ich versuchte das ähnlich mit den Schedulern hinzubekommen. Aber da fehlt es mir wohl an Wissen. Dies hinzubekommen.
    Vielleicht wäre das ja eine lohnenswerte Aufgabe für dich:)
    Grüße
    Rainer

    1. Hi Rainer, freut mich, dass dich die Anleitung weitergebracht hat! Ich habe dieses Setup leider selbst nicht mehr am laufen und durch Fritz-Thermostate (DECT) ersetzt.
      Daher werde ich leider mit den Schedulern nicht recht weiterhelfen können 🙂

      Trotzdem aber viel Erfolg dabei.
      Matthias

  5. Hallo Leute,
    ich kann die Deconz-GUI nicht starten, weil mein Raspberry keine Console hat. Melde mich immer nur von Windows-Client über SSH am Rechner an. Gibt es hierzu eine Lösung?
    Danke, viele Grüße Andreas

  6. Lösung gefunden unter
    https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/raspbian-stretch-desktop-und-xrdp-nachinstallieren
    Damit wird eine kleiner grafischer Desktop für die Console installiert. Anschließend kann man sich einfach mit Windows-RDP mit der Console verbinden und man hat einen grafischen Desktop des Raspberry.
    Jetzt nur den den deconz.service stoppen und die deconz-gui start. Bei mir ging es nicht über den Service. Mit dem Kommanto
    deCONZ –http-port={Euer geünschter Port, bei mir 8082} –dbg-error=1 –dbg-info=1
    kann die GUI auch manuell gestartet werden.

  7. Vielen Dank an Matthias. Mit Deiner Anleitung hat es wirklich gut geklappt. Musste auch wirklich die deconz-beta verwenden, sonst funktioniert es nicht.

    1. Hallo Peter! Benutzt du dann auch einen Deconz-Stick? Oder einen Zig-Bee Sniffer? Als ich das damals in Betrieb genommen habe, ging es leider mit dem Zigbee-Adapter noch nicht… wäre interessant zu wissen ob es mittlerweile klappt… dann könnte ich mir das 2te Programm sparen, das parallel zum iobroker werkelt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.