Zählerstand total kWh remanent Shelly Plug S (ECMA)
Verfasst: 4. Jul 2022 12:14
Grüße euch…
Also, gegeben ist ein Balkonkraftwerk dessen Leistung ich mit einem Shelly Plug S messe.
Ich weiß auch den Wechselrichter kann man mit teurem Zubehör z.B. Gatewaystick auslesen. Brauch ich aber nicht, weil der Shelly völlig ausreicht.
Ich möchte nun mit dem Shelly einen kwh Zähler im OH erstellen, der sich nie automatisch zurücksetzt also remanent ist. Der Shelly Plug S hat gegenüber dem 3EM nur einen kWh Zähler, der sich jedoch bei Stromausfall oder Neustart zurücksetzt.
Ich habe nun folgende Items erstellt:
„Einspeisung 1Min Schnitt“ wird aus dem Shelly Channel erzeugt, ebenso wie „Einspeisung ab Neustart [kWh]“. „Einspeisung_TOTAL [kWh]“ ist mein Endloszähler.
Rule im EMCA Script:
Der Code sollte durch die Kommentare selbsterklärend sein
.
Code:
Okay, ich hatte als ich die Rule gestartet habe, eine „parse“ Warnmeldung im Log. Diese hatte die Ursache, dass das frisch erstellte Item „Einspeisung_TOTAL_kWh“ keinen Initialwert hatte also = „NULL“ war und man damit nicht + eine Zahl rechnen kann. Die kurze und knappe Lösung war das Item einmal mit der reinen „kWh“ Variable zu initialisieren. Dazu habe ich genau einmal im Step 2 ohne „+ eT“ gerechnet (+ eT löschen, Rule starten, warten bis der Initialwert geschrieben wird, dann wieder hinschreiben) und schon läuft das Item ohne es je wieder anfassen zu müssten.
Ich wäre natürlich dankbar, wenn hier jemand noch eine andere Idee hat wie man ein Item einmal im Leben mit dem Wert 0 initialisiert. Komisch, wenn man es mit „number“ deklariert, dass nicht automatisch als Initialwert eine 0 hineingeschrieben wird.
Meine initialisieren Lösung war vielleicht ein bisschen unprofessionell, aber hat halt funktioniert. Der Zähler wird persistiert und regelmäßig gesichert.
Also, gegeben ist ein Balkonkraftwerk dessen Leistung ich mit einem Shelly Plug S messe.
Ich weiß auch den Wechselrichter kann man mit teurem Zubehör z.B. Gatewaystick auslesen. Brauch ich aber nicht, weil der Shelly völlig ausreicht.
Ich möchte nun mit dem Shelly einen kwh Zähler im OH erstellen, der sich nie automatisch zurücksetzt also remanent ist. Der Shelly Plug S hat gegenüber dem 3EM nur einen kWh Zähler, der sich jedoch bei Stromausfall oder Neustart zurücksetzt.
Ich habe nun folgende Items erstellt:
„Einspeisung 1Min Schnitt“ wird aus dem Shelly Channel erzeugt, ebenso wie „Einspeisung ab Neustart [kWh]“. „Einspeisung_TOTAL [kWh]“ ist mein Endloszähler.
Rule im EMCA Script:
Der Code sollte durch die Kommentare selbsterklärend sein
Code:
Code: Alles auswählen
/*
Ermitteln eines remanenten Totalzählerstandes (Shelly Plug S):
Der bestehende Zählerstand wird durch den neuen minütlichen Durchnittsverbrauch den der Shelly im Channel liefert, aufsummiert.
Das Item 'Einspeisung_TOTAL_kWh' ist der TOTAL kWh Zähler der sich nicht resettet, weil OH verwaltet.
Info: Reset des Zählers mit einer zweiten Rule und z.B. betätigen eines Switches. Item 'Einspeisung_TOTAL_kWh' mit sich selbst mal 0 nehmen.
*/
var eT = itemRegistry.getItem('Einspeisung_TOTAL_kWh').getState () ; // TOTAL kWh Zähler OH verwaltet (ungebunden)
var e1M = itemRegistry.getItem('Einspeisung_1Min_Schnitt').getState () ; // Channelwert vom Shelly (Wattverbrauch im 1 Min Durchschnitt)
var t1M = 0.016666667 ; // Dezimalwert von einer Minute für die kWh Berechnung = 1/60stel Stunde
// Step 1
var kWh = (e1M * t1M)/1000 ; // Berechnung nach der allgemeinen kWh Formel
// Step 2
events.postUpdate('Einspeisung_TOTAL_kWh', kWh + eT) ; // Poste das Ergebnis der kWh Formel an das Item 'Einspeisung_TOTAL_kWh' und rechne den alten 'Einspeisung_TOTAL_kWh' Wert noch dazu.
// Der Shelly postet einmal pro Minute den Schnittwert, d.h. die Rule wird durch die Triggerbedingung einmal pro Min. gestartet.
Ich wäre natürlich dankbar, wenn hier jemand noch eine andere Idee hat wie man ein Item einmal im Leben mit dem Wert 0 initialisiert. Komisch, wenn man es mit „number“ deklariert, dass nicht automatisch als Initialwert eine 0 hineingeschrieben wird.
Meine initialisieren Lösung war vielleicht ein bisschen unprofessionell, aber hat halt funktioniert. Der Zähler wird persistiert und regelmäßig gesichert.