NEWS
[Frage] Dauer der Öffnung anzeigen (mit blockly?)
-
Hallo zusammen,
ich möchte gern in vis die Dauer eines aktuellen Zustandes anzeigen. Im Konkreten ist es ein TFK, dessen Status ich mir in Vis anzeigen lasse. Ist dieser auf "offen", möchte ich gerne die Zeit in Minuten anzeigen lassen, die der Kontakt schon offen ist. Wird der Kontakt geschlossen, soll die Messung stoppen (und die Anzeige in vis verschwinden). Der Wert muß nirgens gespeichert oder archiviert werden.
Ich würde es gerne mittels blockly lösen, da ich mich damit mal langsam beschäftigen will (muß
)
Danke Euch und Grüße
Andreas
-
Dafür gibt es ein widget "basic timestamp" und "als Interval" auswählen. Darüber könnte man ein widget legen zum Verdecken des unteren widget bei nicht "offen".
-
Hallo,
hier gibts es eine Skript Lösung und ganz unten auch eine http://forum.iobroker.net/viewtopic.php?f=23&t=737&start=40#p63514.
http://forum.iobroker.net/viewtopic.php … =40#p43649
Pix
-
Hallo Pix,
im angeführten fred geht es aber um countdown Zähler. Ich möchte allerdings nicht herunterzählen, sondern hochzählen. Also quasi: XX Minuten und XX Sekunden seit TFK offen.
Oder verstehe ich hier was falsch?
Das widget kann ich mir erst heute Abend anschauen. Timestamp klingt aber eher nach Uhrzeit, oder?
Grüße Andreas
-
Hallo Pix,
im angeführten fred geht es aber um countdown Zähler. Ich möchte allerdings nicht herunterzählen, sondern hochzählen. Also quasi: XX Minuten und XX Sekunden seit TFK offen.
Oder verstehe ich hier was falsch? `
Kannst es dir umbauen, dass es hochzählt.` > Das widget kann ich mir erst heute Abend anschauen. Timestamp klingt aber eher nach Uhrzeit, oder?
Grüße Andreas `
Ja, normalerweise. Kannst im widget aber "Interval" anklicken, dann sieht es so aus:
-
so müsste es funktionieren (ohne Deckelung der Zeit):
var idHM_trigger = "hm-rpc.0.MEQ01234567.1.STATE"; // Auslösender Aktor // ab hier nix mehr anpassen on(idHM_trigger, function(obj) { if (obj.state.val) setState(countTrigger, true); }); createState('countTrigger', false); var minutes; var seconds; var sekunden = 0; var zeit; var m; var s; var timer; function count() { sekunden = sekunden + 1; zeit = setTimeout(function(){ count() }, 1000); ausgabe(); } function stop() { clearTimeout(zeit); } function ausgabe() { minutes = Math.floor(sekunden / 60); seconds = sekunden % 60; if( minutes < 10) { m = "0" + minutes} else { m = minutes} if( seconds < 10) { s = "0" + seconds} else { s = seconds} timer = m + ":" + s; } on('countTrigger', function (obj) { if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val == 1) { count(); } });
Das Stoppen und die Variable "timer" musst du dann an enen Button hängen bzw in einem entsprechendem Widget anzeigen lassen in VIS