NEWS
Boost Zeit anzeigen
-
Hi
Habe gerade ein Widget gemacht, aus einem Kreis und dem einem Widget (number - bei mir relativ weit oben und blau). Nur wird der Wert (fast) nicht aktualisiert.
Ideen oder andere Widget?
Edit: Der Datenpunkt Boost-Time wird nicht aktualisiert.
Also wie kann ich den Countdow realisieren?
-
Der Countdown muss auf den Datenpunkt BOOST-STATE zeigen. Gestartet wird er über BOOST-MODE.
Das klappt bei mir einwandfrei.
-
Irgendwie wird bei mir Boost Time nicht aktuallisiert.
-
Nur zur Sicherheit. Du kannst die Zeit nicht extern stellen. Die Zeit wielange der BOOST läuft musst du in den Configs der Thermostate mittels der CCU einstellen. Gestartet wird der BOOST durch setzen des DP Mode auf True. Dann zeigt der DP State die verbleibende Zeit.
-
Und diese Zeit bleibt fast immer gleich. Einmal ist es bis 297 heruntergelaufen und 1x von 300 auf 12 gesprungen.
-
Hm, ich verwende dazu das Basic-Number Widget. Ansonsten habe ich auch keine Idee mehr.
-
Und diese Zeit bleibt fast immer gleich. Einmal ist es bis 297 heruntergelaufen und 1x von 300 auf 12 gesprungen. `
Ich gehe zunächst einmal davon aus, dass du über ein Homematic-Thermostat (HKT) mit CCU sprichst (da wurde nichts genaues dazu gesagt).Hier ist es so, dass das HKT nicht permanent sendet. Dies ist zum einen der 1%-Regelung (nein, keine 5% wie im Wahlrecht) geschuldet. Auf den genutzten Frequenzen dürfen Geräte maximal 1% der Zeit pro Stunde senden (das sind 36 Sekunden). Zum anderen dient es natürlich auch dazu, die Batterien des HKT zu schonen.
Durch die mehr oder weniger getaktete Übertragung ändert sich natürlich auch der Wert immer nur sporadisch (nach einer Übertragung).
Wann das passiert ist völlig undefiniert.
Das kannst du direkt in den ioBroker-Objekten überprüfen: Auch dort wird sich der Wert der Restzeit nur sporadisch ändern.
Schön sehen kann man das auch in Aufzeichnungen der CCU selbst (wenn man z.B. die Ventilstellung mitschreibt).
-
Guten Abend,
ich benutze dazu den üblichen "Counter-Script".
Folgender On startet den Counter:
on({id: 'javascript.0.Status.Heizung.Boost_Mode.Bad_EG', change: "ne"}, function(obj) { if (obj.state.val) { setState('hm-rpc.0.KEQ0576469.4.BOOST_MODE', true); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', true); // Countdown starten } else { setState('hm-rpc.0.KEQ0576469.4.BOOST_MODE', false); setState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE', getState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE').val); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', false); // Countdown stoppen } });
Folgendes Script ändert den Count:
// Countdown Heizung_Boost - Bad_EG var count,timer; function countdown(){ count--; if(count > 0) setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', count); else { setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', false ); setState('javascript.0.Status.Heizung.Boost_Mode.Bad_EG', false); } } on({id: "javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger", change: "ne"}, function(obj){ if(obj.state.val) { count = 300; // in Sekunden setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', count); timer = setInterval(countdown, 1000); // 1000 = 1 Sek. ; 60000 = 60 Sek. } else { clearInterval(timer); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', 0 ); } });
Die Objekte musst du manuell erzeugen.
Auf der View benutze ich
a) basic bulb on/off -> um Boost anzuschalten (dann auf true)
b) basic number -> um die Zahl (count) darzustellen.
Sieht dann so in vis aus:
mfg
Dieter
-
Hier ist es so, dass das HKT nicht permanent sendet. `
Der Thermostat sendet ziemlich genau alle drei Minuten.
-
Der Thermostat sendet ziemlich genau alle drei Minuten. `
Und dazwischen gibt's keine Aktualisierung im ioBroker … -
Und dazwischen gibt's keine Aktualisierung im ioBroker … `
Nein, für die Raumtemperatur ist das ausreichend. Nur bei Tasten-/Sollwertstellerbetätigung wird auch zwischendurch gesendet. -
Guten Abend,
ich benutze dazu den üblichen "Counter-Script".
Folgender On startet den Counter:
on({id: 'javascript.0.Status.Heizung.Boost_Mode.Bad_EG', change: "ne"}, function(obj) { if (obj.state.val) { setState('hm-rpc.0.KEQ0576469.4.BOOST_MODE', true); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', true); // Countdown starten } else { setState('hm-rpc.0.KEQ0576469.4.BOOST_MODE', false); setState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE', getState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE').val); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', false); // Countdown stoppen } });
Folgendes Script ändert den Count:
// Countdown Heizung_Boost - Bad_EG var count,timer; function countdown(){ count--; if(count > 0) setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', count); else { setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger', false ); setState('javascript.0.Status.Heizung.Boost_Mode.Bad_EG', false); } } on({id: "javascript.0.Countdown.Heizung_Boost.Bad_EG.countTrigger", change: "ne"}, function(obj){ if(obj.state.val) { count = 300; // in Sekunden setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', count); timer = setInterval(countdown, 1000); // 1000 = 1 Sek. ; 60000 = 60 Sek. } else { clearInterval(timer); setState('javascript.0.Countdown.Heizung_Boost.Bad_EG.countdown', 0 ); } }); ```` `
Also ich sehe da Verbesserungsmöglichkeiten. (allerdings spreche ich nicht JS, lesen geht aber)
Das Skript funktioniert nur wenn man den boost in der VIS startet, am Gerät wird es ignoriert. Und wozu diese Zeile da ist ist mir unklar
setState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE', getState('hm-rpc.0.KEQ0576469.4.SET_TEMPERATURE').val);
Da wird doch nur der Wert auf den selben Platz zurückgeschrieben.
-
Musst das script ja nicht nehmen.
Funktioniert bei mir aber einwandfrei.
Und ja, die von dir genannten Zeile ist unlogisch.
mfg
-
Bitte nicht eingeschnappt sein, wollte ja nur eine Verbesserung anbringen