NEWS
Zwei Smartmeter Instanzen synchron (gleichzeitig) auslesen
-
Re: Smartmeter Abfragen sync-bar?
Hallo,
ich habe 2 Smartmeter Instanzen am laufen, über die ich meine beiden Stromzähler per USB IR/Lesekopf alle 10 Sekunden auslese.
Dabei handelt es sich um einen Zweiwegezähler (Bezug/Einspeisung) und eine Stromzähler für die PV Anlage (PV Ertrag).
Über die ausgelesenen Momentanwerte der Zähler berechne ich dann (per Blockly Script):
-Eigenverbrauch des PV Stroms
-Gesamt Stromverbrauch des Hauses
-Einspeisung an EVU
-Bezug von EVU
Jetzt habe ich aber das Problem das die beiden Smartmerter Instanzen smartmerter.0 und smartmeter.1 nicht zum selben Zeitpunkt also Syncron ausgelesen werden, sondern immer nur mit ein paar Sekunden versatz. Dadurch bekomme ich dann Berechnugnsfehler wie z.B. Gesamtstromverbrauch 0 Watt.
Meine Frage dazu:
Wie kann ich die zwei Instanzen über ein Script zeitgleich triggern/auslesen
Das geht wohl über getObject(id) und setObject(id, obj).
Da ich ein blutiger Anfänger in Javascript bin wäre ich für jede Hilfe froh, die mich hier weiter brigt.
Hat jemand sowas schon am laufen? -
@chinaboy Ich schätze mal dass du das nicht 100% synchron hinbekommst. Ich habe "nur" einen Zähler vom EVU, der mir ja anzeigt wieviel Strom ich einspeise bzw beziehe und ich lese parallel die Werte vom Wechselrichter aus. Beide Werte sind nie völlig synchron weil das Auslesen ja immer eine Momentaufnahme ist und du bereits ein Zehntelsekunde später andere Werte haben kannst.
Was für einen Wechselrichter hast du? Die Werte die du aufgeführt hast, kann ich bei meinem Wechselrichter direkt auslesen, dann habe zumindest die Werte Eigenverbrauch/Gesamtverbrauch/Einspeisung/Bezug synchron. -
@amg_666 sagte in Zwei Smartmeter Instanzen synchron (gleichzeitig) auslesen:
Ich habe "nur" einen Zähler vom EVU, der mir ja anzeigt wieviel Strom ich einspeise bzw beziehe und ich lese parallel die Werte vom Wechselrichter aus. Beide Werte sind nie völlig synchron weil das Auslesen ja immer eine Momentaufnahme ist und du bereits ein Zehntelsekunde später andere Werte haben kannst.
ist bei mir exakt genau so.
Die Aktualisierung des Smartmeters triggert das Auslesen des WR
Dann starten die Berechnungen.Bei sehr schnell schwankenden Werten (Wolken) kommen dabei auch schon mal negative Verbrauchswerte raus
Da hilft nur sehr kurze Zeitabstände zu nehmen, was wiederum die geloggten Daten in die Höhe treibt.
Bei mir läuft es im 6 Sekunden Takt -
@homoran
Es sollte aber auch möglich sein, die zwei Instanzen per JavaScript direkt nacheinander zu triggern.
Damit hätte ich nur einen minimalen Fehler in der Berechnung (den ich auch verschmerzen könnte).
Nur habe ich keinen Plan wie ich das über ein Script Regeln kann.
Laut paul53 sollte das möglich sein:
Re: Smartmeter Abfragen sync-bar?Ich hab meine Wechselrichter (SMA über bluethoth) nicht am iobroker. Daher wollte ich das über die Zähler realisieren.
-
@chinaboy ich verstehe das Problem nicht: 2 Instanzen "triggern" meint, die Werte von 2 Instanzen einzulesen?
Das kannst du doch einfach machen, die Datenpunkte liegen doch im iobroker vor ?
Oder willst du wirklich einen Trigger setzen ? Worauf, wenn du doch sowieso alle 10 Sek einliest?
Mehr als die Werte direkt nacheinander in einem Skript einzulesen kannst du ncht machen.
Ich würde am Anfang des Skripts die DP einlesen,. also z.B.var id1 = 'smartmeter.0.datenpunkt xyz'; var id2 = 'smartmeter.1.datenpunkt123';
und so weiter und dann im weiteren Skript mit id1, id2 ... die Berechnungen machen
-
@chinaboy
Stoppen und starten von 2 Instanzen:extendObject('system.adapter.smartmeter.0', {common: {enabled: false}}); extendObject('system.adapter.smartmeter.1', {common: {enabled: false}}); setTimeout(function() { extendObject('system.adapter.smartmeter.0', {common: {enabled: true}}); extendObject('system.adapter.smartmeter.1', {common: {enabled: true}}); }, 1000);
-
@paul53
Cool DANKE
Genau das hab ich gesucht. -
@paul53 sagte in Zwei Smartmeter Instanzen synchron (gleichzeitig) auslesen:
Stoppen und starten von 2 Instanzen:
aber das setzt doch voraus, dass beide Instanzen dann auch sofort die werte abholen.
Wenn das aber ein scheduled Adapter, oder wie hier ein Intervall in der Instanz festgelegt ist, frage ich mich, ob das Intervall dann mit einem Initialabruf neu startet -
@paul53
Leider zu früh gefreut.
Wenn ich das Script ausführe bekomme ich im LOG folgende Fehlermeldung:
Vermutlich wird der Befehl durch den Adapter blockiert.
Aber in der smartmeter Einstellung finde ich dazu keine Möglichkeit wie ich das aktiviern kann.
Da kann ich nur eine Zeit einstellen
-
@chinaboy sagte: Vermutlich wird der Befehl durch den Adapter blockiert.
In der Konfiguration der Javascript-Instanz "setObject" freigeben.