Zählerstand total kWh remanent Shelly Plug S (ECMA)

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Benutzeravatar
xvs03
Beiträge: 11
Registriert: 28. Dez 2021 18:33

Zählerstand total kWh remanent Shelly Plug S (ECMA)

Beitrag von xvs03 »

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:
items.png
„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:
rule.png
rulex.png
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.
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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Harka
Beiträge: 297
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Zählerstand total kWh remanent Shelly Plug S (ECMA)

Beitrag von Harka »

Hi,
nach der Zuweisung von eT noch eine Abfrage bzgl. NULL rein hauen.

Code: Alles auswählen

if (eT == 'NULL') {
  eT = 0;
}

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Zählerstand total kWh remanent Shelly Plug S (ECMA)

Beitrag von udo1toni »

Ein Item ist ein Item. Wenn openHAB gestartet wird, sind alle Items mit NULL initialisiert, denn es gibt keinen gültigen Status. Erst wenn ein Status geladen wurde, landet dieser auch im Item.
Entweder Du lädst den Status beim Starten aus der Persistence oder Du prüfst zu Beginn der Rule, ob das Item den Status NULL hat und reagierst entsprechend, wie von Harka erläutert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Detlef
Beiträge: 189
Registriert: 11. Dez 2019 21:50
Answers: 1
Wohnort: Recklinghausen
Kontaktdaten:

Re: Zählerstand total kWh remanent Shelly Plug S (ECMA)

Beitrag von Detlef »

Hallo
Ich hatte das gleiche Problem mit Löschen des Gesamtstrom Erzeugung bei Stromausfall.
Mit Persistence hatte ich auch eine Lösung, aber dann ist Raspi defekt und dann von 2.5 auf 3.2 Update gemacht. Das war mir dann zu Arbeitsintensiv. Ein zusätzlicher mechanischer Stromzähler 15 Euro funktionieren immer.
Ich benutze jetzt das „Shelly im App „ und kann im App alle Daten einsehen. Auch nach einen Stromausfall.
Mit freundlichen Grüße aus Recklinghausen

Antworten