@homoran sagte in Smartmeter-Adapter Umgang Bitte um Hilfe:
und warum nicht hier?
Richtiger Hinweis (weil es mobil eher schwierig ist).
Hier das Script:
var cronH = "0 * * * *";
var cronD = "59 23 * * *";
var cronW = "0 0 * * 1";
var cronM = "0 0 1 * *";
var idHAGTotH = "javascript.0.Stromzähler.tmp.Total-h";
var idHAGTotD = "javascript.0.Stromzähler.tmp.Total-d";
var idHAGTotW = "javascript.0.Stromzähler.tmp.Total-w";
var idHAGTotM = "javascript.0.Stromzähler.tmp.Total-m";
var idHAGTotal = "smartmeter.0.#korrekter Datenpunkt#.value"; /*Hier eigenen Datenpunkt einpflegen*/
var idHAGZielH = "javascript.0.Stromzähler.Hour";
var idHAGZielD = "javascript.0.Stromzähler.Day";
var idHAGZielW = "javascript.0.Stromzähler.Week";
var idHAGZielM = "javascript.0.Stromzähler.Month";
var debug = false;
var DPArray = [idHAGTotH, idHAGTotD , idHAGTotW, idHAGTotM, idHAGZielH, idHAGZielD, idHAGZielW, idHAGZielM];
var DPUnit = "kWh";
DPArray.forEach(function(wert, index, array) {
var DPType = wert.split(".");
var DPDescr = "Power consumption of " + (DPType[DPType.length - 1]);
if(index > 3) DPUnit = "Wh";
createState(wert, 0, {
name: DPDescr,
desc: DPDescr,
type: 'number',
unit: DPUnit,
role: 'value'
});
});
function haupt (VorId, ZielId) {
var nVorwert = getState(VorId).val;
var nAktuell = getState(idHAGTotal).val;
var nDiff = ((nAktuell * 10) - (nVorwert * 10)) * 100;
setState(ZielId, nDiff, true);
if(debug) log("Aus: " + nAktuell +" - "+ nVorwert + " = " + nDiff);
var shandler = on ({id: ZielId, change: 'any'}, function(data) {
setState(VorId, (nAktuell*10)/10, true);
unsubscribe(shandler);
});
}
// Wiederholungen
// -----------------------------------------------------------------------------
schedule(cronH, function () {
haupt(idHAGTotH, idHAGZielH);
});
schedule(cronD, function () {
haupt(idHAGTotD, idHAGZielD);
});
schedule(cronW, function () {
haupt(idHAGTotW, idHAGZielW);
});
schedule(cronM, function () {
haupt(idHAGTotM, idHAGZielM);
});