NEWS
Betriebsstundenzähler funktioniert nicht
-
@Homoran
Doch den sehe ich ja. Deswegen weiß ich ja dass es nicht funktioniert. Nur woher kommen die Daten die in die Systemvariable geschrieben werden. Ich würde die Variable gerne mal sehen was da drinne steht.Ich habe direkt bei dem Gerät geguckt ob da irgendwelche Daten drinne stehen . Und da steht nichts mit Datum oder Uhrzeit
-
@Martin-0 sagte:
Ich gehe ja mal davon aus dass das irgendein Datum mit Zeit sein muss
Nein, das ist eine reine Zahl: Minuten Betriebszeit kumulativ (so wie ich die Script-Variable benannt habe).
@Martin-0 sagte in Betriebsstundenzähler funktioniert nicht:
Nur woher kommen die Daten die in die Systemvariable geschrieben werden. Ich würde die Variable gerne mal sehen was da drinne steht.
Du bringst einige Begriffe durcheinander: Variablen sind Script interne Zwischenwerte, die man nicht sieht. Systemvariablen sind virtuelle Datenpunkte einer HomeMatic CCU. Die Betriebsminuten sollen in einen eigenen Datenpunkt geschrieben werden, dessen Wert man im Tab "Objekte" sehen kann.
@Martin-0 sagte in Betriebsstundenzähler funktioniert nicht:
Ich habe direkt bei dem Gerät geguckt ob da irgendwelche Daten drinne stehen .
Welches Gerät ?
-
@paul53
Ich frage mich wo der die Daten her nimmt um diese Betriebszeit zu berechnen.
Ich habe einen eigenen Datenpunkt angelegt der ja auch schon beschrieben wurde aber auf einmal wird er nicht mehr beschrieben.Mit dem Gerät meine ich den Schaltaktor.
Irgendwo muss doch gespeichert werden wann der das letzte Mal an war.
Sonst könnte das Script ja nichts berechnen. -
@Martin-0 sagte:
Ich frage mich wo der die Daten her nimmt um diese Betriebszeit zu berechnen.
"letzte Änderung" (state.lc) ist eine Eigenschaft des Zustands eines jeden Datenpunktes.
@Martin-0 sagte in Betriebsstundenzähler funktioniert nicht:
Mit dem Gerät meine ich den Schaltaktor. Irgendwo muss doch gespeichert werden wann der das letzte Mal an war.
Wechsle im Tab "Objekte" mal in die Statusansicht, dann siehst Du den Zeitpunkt des letzten Schaltens des Aktors.
-
-
-
@paul53
Wie wechselt man denn zu der Anzeige? -
-
@paul53
Da sind überall Daten drin
Sonst lösche ich das Skript und schreib es noch mal -
@Martin-0 sagte:
Sonst lösche ich das Skript und schreib es noch mal
Poste vorher mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
-
@paul53
Was ist die letzte Zeile? -
@Martin-0 sagte:
Was ist die letzte Zeile?
Wenn du in die Javascript-Ansicht wechselst, siehst Du unten eine ewig lange Zeile mit XML-Code. Die Zeile lass bitte weg.
-
@paul53 ```
code_texton({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout4 = setTimeout(function () { Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd); timeout = setTimeout(function () { setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10); }, 10000); }, 5000); }); on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true); }); on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout6 = setTimeout(function () { Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord); timeout3 = setTimeout(function () { setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10); }, 10000); }, 5000); });
-
var timeout2, timeout4, Einschaltdauer_West, timeout6, Einschaltdauer_S_C3_BCd, Einschaltdauer_Nord, timeout, timeout3; on({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout4 = setTimeout(function () { Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd); timeout = setTimeout(function () { setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10); }, 10000); }, 5000); }); on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true); }); on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; timeout6 = setTimeout(function () { Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord); timeout3 = setTimeout(function () { setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10); }, 10000); }, 5000); });
-
Das war nix
-
var Einschaltdauer_S_C3_BCd, Einschaltdauer_West, Einschaltdauer_Nord; on({id: 'hm-rpc.0.JEQ0063840.1.STATE', change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Einschaltdauer_S_C3_BCd = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Einschaltdauer_S_C3_BCd); setState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd"/*Betriebsstundenzähler Süd*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_Süd").val*10)/10); }); on({id: "hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, change: "lt", ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Einschaltdauer_West = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Einschaltdauer_West, true); setState("hm-rpc.0.JEQ0063840.2.STATE"/*Bewässerung West.STATE*/, Math.round(getState("javascript.0.Bewaesserung.Betriebsstundenzähler_West").val*10)/10, true); }); on({id: "hm-rpc.0.JEQ0063840.3.STATE"/*Bewässerung Nord.STATE*/, val: false, ack: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Einschaltdauer_Nord = ((obj.state ? obj.state.lc : "") - (obj.oldState ? obj.oldState.lc : "")) / 60000; setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Einschaltdauer_Nord); setState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord"/*Betreibstundenzähler Nord*/, Math.round(getState("javascript.0.Bewaesserung.Betreibstundenzähler_Nord").val*10)/10);
So
-
- Bei "Bewässerung West" wird in den falschen Datenpunkt geschrieben.
- Man kann nicht erst den nicht gerundeten Wert in einen Datenpunkt schreiben, diesen anschließend wieder auslesen und anschließend den gerundeten Wert zurück schreiben, da das Schreiben asynchron erfolgt, d.h. noch nicht fertig ist, wenn der Wert wieder eingelesen wird.
Richtig: Den Wert der Variablen gerundet in den Datenpunkt schreiben:
Meinen Vorschlag hast Du offenbar ignoriert.
-
@paul53
Es läuft einwandfrei.
Danke