NEWS
How-To: Eurotronic Spirit Zigbee mit Conbee II
-
@danny_v1 Moin, wo hast du die "bunten" bezogen? Gruß
-
@Kilik ich habe alle von amazon. Hab heute auch mal eurotronic angeschrieben ob es da einen Unterschied gibt, bzw welche davon die neueren sind. Mal sehen wann und ob die sich melden.
-
Ich habe auch die nicht bunte Verpackung mit fein geriffelter Mutter. Ich kann aber über deconz das Attribut 0x0012 occupied heating set point setzen und das hat auch eine Änderung auf dem Display des Thermostats zur Folge. Kann man das irgendwie per REST API setzen?
-
@Strberg Kannst Du das auch direkt über iobroker setzen im Datenpunkt? In der Anleitung die ich benutzt hab steht auch der curl Befehl drin mit dem es über Rest-API klappten sollte. Den könnte man ja dann über ein Skript setzen.
-
@danny_v1 Wenn ich den Datenpunkt im iobroker setze, ansieht es zwar so aus, als würde der Wert übernommen werden, aber am Display des Thermostats bleibt der alte Wert eingestellt und nach ein paar Minuten wird auch im iobroker wieder Wert, der auf dem Thermostat eingestellt ist, angezeigt.
Über die Deconz Software ändert sich der Wert auf dem Thermostatdisplay sofort, also muss es doch irgendwie möglich sein den Wert zu setzen.
-
@Strberg Versuchs mal mit:
curl -X PUT -d '{"heatsetpoint":1700}' http://localhost/api/<API-KEY>/sensors/<ID>/config
über die konsole oder so. (1700 sind 17°C, <API-KEY> steht im deconz Adapter und <ID> ist die Nummer des Thermostat im deconz.0 Ordner. Wenn das geht könntest Du dir dann ein kleines Blockly zusammen bauen um den Wert zu setzen.
-
@danny_v1 Das hatte ich schon versucht. Die API wird hier wohl genau so angesprochen, wie es der deconz Adapter im iobroker tut. Das Verhalten ist das gleiche. Der Datenpunkt im iobroker wird verändert, das Thermostatdisplay zeigt keine Änderung und nach einer Weile wird der Wert wieder vom Thermostat überschrieben auf den Wert, der auf dem Thermostat eingestellt ist.
Die Frage war eher, ob ich über die Rest API irgendwie direkt das Attribut 0x0012 zugreifen kann.
Das Problem scheint aber inzwischen auch bei anderen aufgetaucht zu sein. Im GitHub gibt es einen thread dazu. Ich weiß nicht, ob ich den Link dazu posten darf.
(GitHub->Dresden-Elektronik->deconz-Rest-plugin ->[Device Support Request] Eurotronic Spirit ZigBee #1098 -
@Strberg sagte in How-To: Eurotronic Spirit Zigbee mit Conbee II:
@danny_v1 Das hatte ich schon versucht. Die API wird hier wohl genau so angesprochen, wie es der deconz Adapter im iobroker tut. Das Verhalten ist das gleiche. Der Datenpunkt im iobroker wird verändert, das Thermostatdisplay zeigt keine Änderung und nach einer Weile wird der Wert wieder vom Thermostat überschrieben auf den Wert, der auf dem Thermostat eingestellt ist.
Die eigentlichen Fragen sind:
- Wenn du den Wert am Thermostat verstellst, ändert sich dann der Wert im ioBroker ?
- Wenn du per deconz GUI versuchst den Wert anzupassen, wird er dann geändert ? (Nachtrag: Um den Wert anzupassen solltest du im "Thermostat" Cluster den "occupied heating set point" anpassen. Die Anzeige des Thermostates sollte sofort umspringen, auch wenn der Wert im ioBroker sich erst nicht ändert)
Ich habe zu Testzwecken das bei mir gestern konfiguriert und bisher damit keine Probleme.
Die Frage war eher, ob ich über die Rest API irgendwie direkt das Attribut 0x0012 zugreifen kann.
Nein, das wird meines Wissens nicht nach aussen gegeben
Das Problem scheint aber inzwischen auch bei anderen aufgetaucht zu sein. Im GitHub gibt es einen thread dazu. Ich weiß nicht, ob ich den Link dazu posten darf.
(GitHub->Dresden-Elektronik->deconz-Rest-plugin ->[Device Support Request] Eurotronic Spirit ZigBee #1098Warum solltest Du den Link nicht posten dürfen ? Ich mach das immer.
A.
-
@Asgothian sagte in How-To: Eurotronic Spirit Zigbee mit Conbee II:
Die eigentlichen Fragen sind:
- Wenn du den Wert am Thermostat verstellst, ändert sich dann der Wert im ioBroker ?
Ja, nach ein paar Minuten ändert sich der Wert im iobroker auf den Wert, den ich am Thermostat eingestellt habe.
- Wenn du per deconz GUI versuchst den Wert anzupassen, wird er dann geändert ? (Nachtrag: Um den Wert anzupassen solltest du im "Thermostat" Cluster den "occupied heating set point" anpassen. Die Anzeige des Thermostates sollte sofort umspringen, auch wenn der Wert im ioBroker sich erst nicht ändert)
Ja das klappt, auch im iobroker wird der neue Wert dann sofort angezeigt. Nur wenn ich versuche, den Wert aus dem iobroker heraus zu schreiben, klappt das nicht.
Warum solltest Du den Link nicht posten dürfen ? Ich mach das immer.
Ich bin neu hier im Forum und habe die Regeln ehrlich gesagt nicht wirklich gelesen. Hier der Link:
https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1098 -
@Strberg Weiß ja nicht ob man irgendwie auf die Firmware zugreifen kann, also die Version von den funktionierenden auslesen und die Version dann irgendwie auf die nicht funktionierenden zu spielen.
-
@danny_v1 Bisher sind keine Flashfiles für das Thermostat im Umlauf. Aber ich denke derzeit muss man abwarten, wie sich die sache entwickelt. Im GitHub Thread wird nach einer Lösung für das Problem gesucht. Im Prinzip müsste sich das ja über die deconz Rest-Api regeln lassen. Derzeit scheint das Hauptproblem zu sein, die beiden Thermostatversionen zu unterscheiden, weil beide identische Werte im Basic-Cluster zurückgeben.
-
@Strberg Gut dann heißt es also abwarten und ggf. die nicht funktionierenden Thermostate zurückschicken. Hab bis jetzt auch noch keine Antwort auf meine Anfrage bei Eurotronic erhalten
-
Ist es denn nicht möglich, via REST-Api den Wert (Occupied Heating Setpoint --> 0x0012) händisch zu schreiben? Der Deconz-Adapter schreibt den Heatsetpoint offenbar in die "falsche" Adresse (Current Temperature Setpoint --> 0x4003), denn bei den anderen Firmware-Versionen hat das funktioniert (habe selber eins, bei dem es funktioniert, in 0x4003 zu schreiben (damit auch im Deconz-Adapter)). Bei den anderen Thermostaten kann ich nur händisch im Deconz-Gui den Thermostatwert via 0x0012 ändern.
Via REST-Api-Chrome-Plugin sehe ich in der Config nur den "Heatsetpoint" und hier schreibt er offenbar leider in die 0x4003 rein. Hat jemand schon eine Lösung?
-
@r0b1zZle Nein, das ist nicht möglich. Die restAPI stellt die Datenpunkte zur Verfügung und die Umsetzung auf die Datenpunkte des Thermostaten sind in der Software fest codiert.
A.
-
@Asgothian Dazu habe ich die entsprechende *.cpp gefunden (hier).
Im Code steht folgendes:
case 0x0012: // Occupied Heating Setpoint { if (sensor->modelId().startsWith(QLatin1String("SPZB"))) // Eurotronic Spirit { // Use 0x4003 instead. } else { qint16 heatSetpoint = attr.numericValue().s16; item = sensor->item(RConfigHeatSetpoint); if (item && item->toNumber() != heatSetpoint) { item->setValue(heatSetpoint); enqueueEvent(Event(RSensors, RConfigHeatSetpoint, sensor->id(), item)); configUpdated = true; } } sensor->setZclValue(updateType, ind.srcEndpoint(), THERMOSTAT_CLUSTER_ID, attrId, attr.numericValue()); }
Das heißt, dass er die Bezeichnung "SPZB" abfragt und dann in 0x4003 schreibt. Wenn ich jetzt einfach die if-Abfrage rausnehmen würde, müsste es klappen, weil alles notwendige bereits implementiert ist. Frage ist, wo liegt die *.cpp und muss ich das neu kompilieren?
-
@r0b1zZle sagte in How-To: Eurotronic Spirit Zigbee mit Conbee II:
Frage ist, wo liegt die *.cpp und muss ich das neu kompilieren?
- Wo liegt es - bei deconz im GitHub
- Musst du das kompilieren: ja. Anleitung gibt es auch bei deconz.
A.
-
@Asgothian Bin dabei, habe erfolgreich kompiliert und rüber geschoben. Jetzt reboot und dann testen. Ich melde mich. Bei Bedarf reiche ich gleich eine Anleitung dazu nach.
-
@r0b1zZle wenn das funktioniert, wäre ich an einer Anleitung sehr interessiert!
-
Also, es ist leider doch nicht ganz so einfach. Ich hoffe, dass nach dem Überschreiben der Binaries des Rest-Api-Plugins nicht noch ein weiterer Schritt notwendig ist, damit die API die neuen Binaries nutzt (habe jetzt einfach immer den Raspi rebootet). Denn es ändert sich einfach gar nichts, egal was ich im Code ändere. Leider kann man das auch nicht debuggen. Muss ich mich die Tage noch einmal ran setzen und genau schauen, was da los ist.
-
Mittlerweile bin ich überfragt, was das Problem ist. Ich kann den kompletten Code löschen, kompilieren, die Binaries vom REST-Plugin überschreiben, neustarten und trotzdem kann ich mit der REST-Api das eine Thermostat weiterhin ganz normal steuern. Irgendwie kommen die Änderungen nicht an und ich weiß nicht warum. Vielleicht findet sich hier ja jemand, der genau weiß, was zu tun ist. Ich kann leider auch nur raten und ausprobieren, für mehr reicht meine Kenntnis leider nicht aus. Sorry
PS: Scheinbar muss man nach jeder Änderung das Thermostat wieder neu anlernen, damit die Änderungen wirksam werden. Außerdem ist mir aufgefallen (wurde auch hier diskutiert), dass man jeden einzelnen Eintrag in den jeweiligen Clustern des Thermostats separat per Hand noch einmal auslesen muss. Jetzt steht auch ein sinnvoller Wert in "swversion" drin, wo vorher gar nichts stand. Ich teste weiter