NEWS
Umrechnung einer Variablen von Minuten in Stunden und Minuten
-
Hallo zusammen,
ich versuche im Moment den Wert aus einer Variablen, die in Minuten angegeben ist, in eine Zeitangabe umzuwandeln, die man besser verstehen kann. Ich hab es mal so probiert, aber da bekomme ich als Antwort nur "ja"
on({id: 'modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
getState("modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer"/in Minuten/).val;
exec(value/60);
});
Danke Michael
-
versuche mal so:
on({id: 'modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer', change: "any"}, function (obj) { console.log((getState('modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer').val)/60); });
-
Das war es leider nicht. Ich habe hier snips.ai laufen, das die Ansage eben passend umändern soll.
-
Oder so:
on({id: 'modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer', change: "any"}, function (obj) { let dauer_minuten = obj.state.val; let stunden = Math.floor(dauer_minuten/60); let minuten = Math.floor(dauer_minuten%60); minuten = (minuten > 9) ? minuten : "0" + minuten; // Führende "0" console.log("Dauer: " + stunden + "Stunden " + minuten + " Minuten"); });
Für die Textansage kann man mit einer etwas diffenzierten If-Abfrage oder switch-Anweisung einen besseren Ansagetext generieren:
Dauer 125 = "Zwei Stunden und fünf Minuten"
Dauer 60 = "Eine Stunde" / "Genau eine Stunde"
Dauer 15 = "15 Minuten" oder sogar "eine Viertelstunde"
Gruß
Pix
-
Mit der Lösung krieg ich zwar die richtige Ausgabe auf die Konsole, schaff es aber nicht, das mir snips das ausgibt.
Trotzdem danke
Michael
-
Hallo,
was für einen Datenpunkt musst du denn für snips befüllen?
So vielleicht?
const idSnips = "IDDATENPUNKTSNIPSTEXTEINGABE"; // Hier die ID für Snips einstellen on({id: 'modbus.0.holdingRegisters.13012_HeatPumpeBetriebsdauer', change: "any"}, function (obj) { let text = ""; let dauer_minuten = obj.state.val; let stunden = Math.floor(dauer_minuten/60); let minuten = Math.floor(dauer_minuten%60); minuten = (minuten > 9) ? minuten : "0" + minuten; // Führende "0" text = "Dauer: " + stunden + "Stunden " + minuten + " Minuten"; console.log(text); setState(idSnips, text); });
Konstante idSnips musst du mit dem Objekt für die Snips Texteingabe befüllen.
Übrigens erfolgt dann beim obigen Skript die Ansage minütlich (oder zumindest, immer, wenn sich der Wert ändert).
Gruß
Pix
-
Ich wollte, wenn ich die Betriebsstunden über snips abfrage, das der Wert, der in der wago in Minuten eingetragen ist, umgerechnet ausgegeben wird.