NEWS
Flot-Adapter - Differenzwertanzeige
-
Hallo,
ich würde mir gerne per Flot-Adapter die Differenz zweier aufeinanderfolgender Werte eines Datenpunktes anzeigen lassen. Das Problem ist, dass die Absolutwerte des entsprechenden Datenpunktes sehr hoch sind und sich nur geringfügig ändern (z.B. die Betriebsstunden meines Brenners). Ich fände es toll, wenn der Flot-Adapter eine weitere Auswahlmöglichkeit unter "Chart Type" mit dem Parameter "Differenz" aufweisen würde.
Vermutlich gibt Flot das aber wohl nicht her, oder? Vielleicht hat ja jemand eine Lösung per Javascript für mich?!
Gruß,
Thorsten
-
Hallo Thorsten,
probier mal so:
/* Skript Differenz Brenner errechnet die Differenz zwischen dem aktuellen und dem letzten Wert des Brenners http://forum.iobroker.net/viewtopic.php?f=20&t=6899 17.06.2017 erstellt */ var idBrenner = "ID_DES_BRENNERS"; // <------- ID eintragen var idDifferenz = "javascript.0.Brenner.Differenz"; // wird erstellt, ist für flot createState(idDifferenz, { name: 'Brenner: Differenz', desc: 'Differenz zwischen aktuellem und letztem Wert', type: 'number', min: 0 }); on(idBrenner, function(data) { var aktuell = data.state.val, letzter = data.oldState.val; var diff = aktuell - letzter; setState(idDifferenz, diff); });
Paar Fragen zum Verfeinern:
Welchen History Adapter verwendest du? SQL, Influx?
Sind die Messerte Ganzzahlen oder Dezimalzahlen?
Gruß
Pix
-
Mein Vorschlag: Jedesmal, wenn der Brenner ausschaltet, wird die aktuelle Laufzeit ermittelt. Die kann gut in Flot dargestellt werden.
var idBrenner = "ID_DES_BRENNERS"; // <------- ID eintragen var idLaufzeit = "javascript.0.Brenner.Laufzeit"; // wird erstellt, ist für flot createState(idLaufzeit, { desc: 'Laufzeit des Brenners', type: 'number', min: 0, unit: 'h' }); on({id: idBrenner, val: false}, function(dp) { var auszeit = dp.state.lc; var einzeit = dp.oldState.lc; var diff = (auszeit - einzeit) / 3600000; setState(idLaufzeit, diff); });
-
Hallo pix und paul53,
vielen Dank für Eure wieder mal hervorragende Unterstützung. Werde das heute Abend mal ausprobieren und mich melden.
@pix:
Die Brennerlaufzeit wird als Integer-Wert ohne Nachkommastelle in Stunden ausgegeben; ist also relativ grob. Als History-Adapter verwende ich den SQL-Adapter in Verbindung mit einer MariaDB-Datenbank meiner Synology DiskStation.
Gruß,
Thorsten