NEWS
[Gelöst] Sourceanalytics - Als Impulszähler nicht geeignet?
-
Moin Zusammen,
ich "kämpfe" hier seit ein paar Stunden mit dem Sourceanalytics-Adapter (v0.4.14).
Folgende Ausgangssituation:
Selbstgebauter Impulszähler mit ESP8266, der die Impulse eines Wasserzählers ( Reed-Kontakt, 1 Impuls/Liter) via MQTT an ioBroker sendet.
Damit nicht zuviel gesendet wird, übertage ich nur jeden 5ten Impuls, also nur alle 5Liter.
Diese Daten werden in einem selbst erstellten Datenpunkt gespeichert, d.h. bei jedem Senden wird immer wieder "5 Liter" in den Datenpunkt geschrieben.
Das funktioniert soweit.Diesen Datenpunkt logge ich mit dem history-Adapter, was auch funktioniert ( "Nur Änderungen aufzeichnen" nicht angehakt, da ja immer wieder "5 l" gesendet werden).


Ich hatte gehofft, daß ich anschließend den sourcanalytics-Adapter verwenden kann, um entspr. Verbrauchswerte (Tages-, Monats-, Wochnverbrauch, etc.) generieren zu können. Also für diesen Datenpunkt auch den sourceanalytics-Adapter aktiviert:

Leider juckt es sourceanalytics nicht, wenn Änderungen im Datenpunkt erfolgen.
Änderung heißt, es kommt in sourceanalytics jeweils ein neuer Eintrag mit "5 l" hinzu (natürlich mit anderem Timestamp).
Der Wert bleibt aber in sourceanalytics immer auf 0,005 m3.
Testweise hatte ich auch mal manuell die Werte in sourceanalytics editert (statt 5l,5l,5l dann 3l,4l,5l reingeschrieben),
worauf auch sofort der entpr. Verlauf im integrierten Diagramm des history-Adapters dargestellt wird.
Aber sourceanalytics zeigt weiterhin keine Regung, er zeigt nach wie vor überall nur 0,005 m3 an.Frage:
Mache ich einen generellen Denkfehler bei meinem Konstrukt, oder ist sourceanalytics nicht in der Lage,
gleiche Werte - die sich nur im Timstamp unterscheiden - zu verarbeiten? -
Moin Zusammen,
ich "kämpfe" hier seit ein paar Stunden mit dem Sourceanalytics-Adapter (v0.4.14).
Folgende Ausgangssituation:
Selbstgebauter Impulszähler mit ESP8266, der die Impulse eines Wasserzählers ( Reed-Kontakt, 1 Impuls/Liter) via MQTT an ioBroker sendet.
Damit nicht zuviel gesendet wird, übertage ich nur jeden 5ten Impuls, also nur alle 5Liter.
Diese Daten werden in einem selbst erstellten Datenpunkt gespeichert, d.h. bei jedem Senden wird immer wieder "5 Liter" in den Datenpunkt geschrieben.
Das funktioniert soweit.Diesen Datenpunkt logge ich mit dem history-Adapter, was auch funktioniert ( "Nur Änderungen aufzeichnen" nicht angehakt, da ja immer wieder "5 l" gesendet werden).


Ich hatte gehofft, daß ich anschließend den sourcanalytics-Adapter verwenden kann, um entspr. Verbrauchswerte (Tages-, Monats-, Wochnverbrauch, etc.) generieren zu können. Also für diesen Datenpunkt auch den sourceanalytics-Adapter aktiviert:

Leider juckt es sourceanalytics nicht, wenn Änderungen im Datenpunkt erfolgen.
Änderung heißt, es kommt in sourceanalytics jeweils ein neuer Eintrag mit "5 l" hinzu (natürlich mit anderem Timestamp).
Der Wert bleibt aber in sourceanalytics immer auf 0,005 m3.
Testweise hatte ich auch mal manuell die Werte in sourceanalytics editert (statt 5l,5l,5l dann 3l,4l,5l reingeschrieben),
worauf auch sofort der entpr. Verlauf im integrierten Diagramm des history-Adapters dargestellt wird.
Aber sourceanalytics zeigt weiterhin keine Regung, er zeigt nach wie vor überall nur 0,005 m3 an.Frage:
Mache ich einen generellen Denkfehler bei meinem Konstrukt, oder ist sourceanalytics nicht in der Lage,
gleiche Werte - die sich nur im Timstamp unterscheiden - zu verarbeiten?@joergeli sagte: ist sourceanalytics nicht in der Lage, gleiche Werte - die sich nur im Timstamp unterscheiden - zu verarbeiten?
Laut Doku kann eine Integration von m³/h nach m³ erfolgen. Der Adapter beinhaltet aber keinen Zähler, sondern erwartet Zählwerte oder bei Wasser den Durchfluss.
Für den Zähler-Datenpunkt wird ein Skript benötigt.
-
@joergeli sagte: ist sourceanalytics nicht in der Lage, gleiche Werte - die sich nur im Timstamp unterscheiden - zu verarbeiten?
Laut Doku kann eine Integration von m³/h nach m³ erfolgen. Der Adapter beinhaltet aber keinen Zähler, sondern erwartet Zählwerte oder bei Wasser den Durchfluss.
Für den Zähler-Datenpunkt wird ein Skript benötigt.
@paul53
Hallo Paul,danke für den Denkanstoß!
Ich habe jetzt mal die Sourceanalytics-Einstellungen auf :
"Preisdefinition" : ElectricityDelivery und "Wählen Sie eine Einheit": W
geändert.
Zumindest werden jetzt Werte in den sourceanalytics-Datenpunkten angezeigt und entspr. verändert.
Die absoluten Werte stimmen zwar nicht, aber ich denke, das bekomme ich mit einem JS hin.Mit einem JS hatte ich auch schon versucht, den Zähler-Datenpunkt bei Objekt-Änderung zu erhöhen,
hatte aber Probleme damit.
Könntest Du mir Dein obiges Blockly evtl. noch mal als JS einstellen ?
Blockly ist nicht mein Ding
P.S.
Mit unserer "mdernen Meßeinrichtung" aka Stromzähler funktioniert sourceanalytics übrigens wie gewünscht. -
@paul53
Hallo Paul,danke für den Denkanstoß!
Ich habe jetzt mal die Sourceanalytics-Einstellungen auf :
"Preisdefinition" : ElectricityDelivery und "Wählen Sie eine Einheit": W
geändert.
Zumindest werden jetzt Werte in den sourceanalytics-Datenpunkten angezeigt und entspr. verändert.
Die absoluten Werte stimmen zwar nicht, aber ich denke, das bekomme ich mit einem JS hin.Mit einem JS hatte ich auch schon versucht, den Zähler-Datenpunkt bei Objekt-Änderung zu erhöhen,
hatte aber Probleme damit.
Könntest Du mir Dein obiges Blockly evtl. noch mal als JS einstellen ?
Blockly ist nicht mein Ding
P.S.
Mit unserer "mdernen Meßeinrichtung" aka Stromzähler funktioniert sourceanalytics übrigens wie gewünscht.@joergeli sagte: obiges Blockly evtl. noch mal als JS einstellen ?
const idLiter = '0_userdata.0.Wasser.Zaehler'; // ID anpassen! var liter = getState(idLiter).val; // Startwert manuell in DP eintragen on({id: idLiter}, function(dp) { liter += dp.state.val; setState(idLiter, liter, true); });oder mit m³:
const idZahler = '0_userdata.0.Wasser.Zaehler'; // ID anpassen! var impulse = Math.round(200 * getState(idZaehler).val); // Startwert manuell in DP eintragen on({id: idZaehler}, function(dp) { impulse++; setState(idLiter, impulse / 200, true); }); -
@joergeli sagte: obiges Blockly evtl. noch mal als JS einstellen ?
const idLiter = '0_userdata.0.Wasser.Zaehler'; // ID anpassen! var liter = getState(idLiter).val; // Startwert manuell in DP eintragen on({id: idLiter}, function(dp) { liter += dp.state.val; setState(idLiter, liter, true); });oder mit m³:
const idZahler = '0_userdata.0.Wasser.Zaehler'; // ID anpassen! var impulse = Math.round(200 * getState(idZaehler).val); // Startwert manuell in DP eintragen on({id: idZaehler}, function(dp) { impulse++; setState(idLiter, impulse / 200, true); });Danke für die JS!
Ich habe das erste Skript zum Testen ein wenig angepasst:var pfad= "javascript.0.Wasser."; const idLiter = pfad + 'Wasser-Imp'; // ID anpassen! (jeweils 5 Liter/ Impuls) var liter = getState(idLiter).val; // Startwert manuell in DP eintragen on({id: idLiter, change: "any"}, function(dp) { liter += dp.state.val; console.log("liter: " + liter); setState(pfad + "Wasser-Imp-Summe", liter, true); // Summen-ID });In "Wasser-Imp" werden die "5 Liter-Impulse" erfasst und bei Änderung
in den "Wasser-Imp-Summe" geschrieben( jeweils plus 5 L).
sourceanalytics loggt den "Wasser-Imp-Summe"-Wert .
Obwohl in sourceanalytics Water und l eingestellt ist, erfolgen die Berechnungen in m³ - macht aber nichts, da ich diese Werte dann in eCharts darstelle.
Vielen Dank!
Jörg
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden