NEWS
How-To: Eurotronic Spirit Zigbee mit Conbee II
-
@adsfa kannst du denn nun den „heatsetpoint“ setzen? Also so dass er tatsächlich auch als neuer Sollwert (Display am Thermostat) übergeben wird?
Wenn ich den heatsetpoint ändere, wird der Wert zwar im iobroker geändert, das nächste Update des Sensors überschreibt aber wieder den „alten“ Wert, der auf dem Thermostat per Hand eingestellt ist.
Der Wert auf dem Display ändert sich nie. Das kann ich nur direkt in der Deconz-Software bei den Attributen ändern, nicht aber aus dem iobroker heraus.
-
@Strberg ja das funktioniert.
Nach einem Update kämpfe ich aber mit der Simple-Thermostat Karte... Bei der normalen Thermostat Karte kann ich den Wert in der UI verändern, bei der Simple-Thermostat Karte keine Chance
-
Hallo,
es gibt eine sehr gute Anleitung (weiß nicht ob ich den link hier posten darf? Ansonsten nach "eurotronic spirit zigbee conbee 2" -> erster Treffer).
Ich habe nun 5 dieser Thermostate, aber nur 4 funktionieren, heatsetpoint und alles ander lässt sich an diesen Thermostaten einstellen. Das 5. funktioniert leider nicht, heatsetpoint läßt sich nicht über iobroker setzen. Das scheint aber am Thermostat zu liegen, ich habe festgestellt es gibt da mehrere Versionen, erkennbar an der Verpackung und an der Befestigungsmutter. Die Thermostate in der bunten Verpackung haben eine grob geriffelte Befestigungsmutter, diese funktionieren einwandfrei, das eine in der nicht so bunten Verpackung hat eine fein griffelte Befestigungsmutter und funktioniert nicht.
-
@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.