NEWS
[gelöst] Fritz dect - drei Heizungsthermostate mit einem Widget steuern
-
Hallo zusammen,
bin leicht am verzweifeln mit dem Skripten. Folgendes möchte ich gerne realisieren.
Ich habe in einem Raum "Wohnzimmer" drei Heizungsthermostate (Heizung1, Heizung2, Heizung3) die ich gerne mit folgendem hqwidget steuern möchte:
~~http://forum.iobroker.net/download/file.php?id=17986" />
Leider bietet das Plugin "fritz dect" nicht die Möglichkeit Heater Groups zu steuern, dann wäre das sehr komfortabel ohne skript möglich.
Folgendes soll das skript können:
1. eingestellte Soll-Temperatur rechts anzeigen (wo NaN°C im Screenshot steht)
2. über das drehen am Widget soll die Soll-Temperatur aller Heizkörper geändert werden
3. die Ist-Temperatur soll in der Mitte (wo 19°C im Screenshot steht), es reicht hier den Wert der Heizung1 anzuzeigen, der Mittelwert wäre natürlich delux
Hoffe es kann mir jemand helfen?~~
4571_widget.jpg -
Sodele, es hat ein bissle gedauert, aber ich habe es hinbekommen
<u>Raumtemperatur ermitteln (Mittelwert aller 3 Heizungsthermostate)</u>:
Zuerst hab ich mir ein Objekt angelegt, in dem die Raumtermperatur gespeichert wird:
Mit folgendem Skript wird dann von jedem Heizungsthermostate die aktuelle Temperatur ausgelesen und der Mittelwert berechnet und im oben angelegten Objekt gespeichert
`// durchschnittliche Temperatur aller Thermostate ermitteln // Ids aller Thermostate (Wert .temp) im Raum Wohnzimmer var liste = ["thermostatId1.temp","thermostatId2.temp","thermostatId3.temp"]; //Listener für Wert .temp aller Thermostate on({id: liste}, function(){ // Mittelwert berechnen var middletemp = 0; for (var i=0; i<liste.length;i++) {/middletemp="middletemp" +/getstate(liste[i]).val;/}/liste.length;/objekt/var/setzen,/wird/im/vis/widget/verwendet/setstate("hzg.0.wz.roomtemp",/middletemp);/console.log("objekt/'hzg.0.wz.roomtemp'/set/to:/"/})<e=""></liste.length;i++)>` <u>~~[u]~~**~~[b]~~VIS mit HQwidget:[/b]**[/u]</u>: Im vis habe ich für den Schalter die thermostatId1.targettemp hinterlegt. Bei Ist ID habe ich das Objekt für die Raumtemperatur hinterlegt.  Das Thermostat mit der Id 'thermostatId1' fungiert als Master-Thermostat. D.h. wenn sich dort die targetTemp ändert, werden alle anderen Thermostat ebenfalls auf diesen neuen Wert verändert. Das bringt den Vorteil, dass man direkt am Master-Thermostat per Hand die Temperatur ändern kann und alle anderen Thermostate werden dann auch gleich mit verändert. Realisiert habe ich das über folgendes Skript: `~~[code]~~// TargetTemp für alle Thermostate festlegen, sobald TargetTemp vom Master-Thermostat ändert var masterTargetTempId = "thermostatId1.targettemp"; var slavesTargetTempIds = ["thermostatId2.targettemp", "thermostatId3.targettemp"]; // Listener für Wert .targettemp des Master Thermostat on({id: masterTargetTempId}, function(){ // TargetTemp vom Master Thermostat lesen var targetTemp = getState(masterTargetTempId).val console.log("Master targetTemp changed to: " + targetTemp); // TargetTemp für alle Slaves setzen for (var i=0; i<slavestargettempids.length;i++) {/setstate(slavestargettempids[i],/targettemp);/console.log("slave/'"/+/slavestargettempids[i]/"'/targettemp/changed/to:/"/}/})<e=""></slavestargettempids.length;i++)>`[/i][/i][/code][/i]
-
Darf ich fragen welche Heizkörperthermostate du benutzt?
-
Eurotronic Comet 300 und Fritz!DECT 301
-
Die Heater Groups sind übrigens in der Version 0.1.0 vom fritzdect nun drin.
Hat mich einiges an Nerven gekostet, aber nun brauchts kein Script mehr.
Wenn keine Probleme mehr gemeldet werden, werde ich ihn demnächst auf npm veröffentlichen.