Seite 1 von 2

S0 Stromzähler in Openhab2 integrieren

Verfasst: 6. Feb 2021 18:20
von matze.lingen
Moin zusammen,
ich versuche gerade die S0 Daten die von meinem ESPEasy per MQTT zum Openhab2 kommen Sinnvoll umzuwandeln.
Leider stehe ich etwas auf dem Schlauch und finde einfach 0 Infos dazu.
Hat das schon jemand gemacht und kann evtl. unterstützen?
Danke und Gruß
Matze

Re: S0 in Openhab2 integrieren

Verfasst: 6. Feb 2021 19:27
von udo1toni
Darf ich davon ausgehen, dass Du mit S0 einen Zählerimpuls meinst? In welcher Form kommt das über mqtt an? als Impuls? oder als Zahl (Anzahl der Zählimpulse seit xy)?

Re: S0 in Openhab2 integrieren

Verfasst: 6. Feb 2021 19:55
von matze.lingen
Hey ja habe einen DRT751DE Zähler. An dem hängt ein NodeMCU mit ESPEasy drauf. Dieser Liefert die folgenden Werte in Einzelne MQTT Topics: Count / Total und Time. Nun bin ich aber echt Total überfragt wie ich die Informationen in Verbrauchswerte umgewandelt bekomme.
Vielen Dank
Gruß
Matthias

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 6. Feb 2021 23:22
von udo1toni
Na, Du musst nur den jeweiligen Zählerstand regelmäßig sichern (über eine Persistence, z.B. rrd4j oder jdbc)
Anschließend kannst Du auf den Zählerstand zugreifen und z.B. die Differenz seit der letzten Stunde, Tagesbeginn usw. ausrechnen. Ein Impuls entspricht einer Wh, also einer Stromaufnahme von einem Watt über einen Zeitraum von einer Stunde. Oder anders ausgedrückt: Wenn Du so eine alte 60 Watt Glühlampe an dem Zähler anschließt und einschaltest, gibt der Zähler alle 60 Sekunden einen Impuls ab.

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 6. Feb 2021 23:26
von matze.lingen
Ja Aber ich finde keine Anleitung das ein zu binden. Hab influx und rrd4j am laufen. Aber gibt es Vorlagen?

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 7. Feb 2021 02:34
von udo1toni
Das steht in der offiziellen Doku. Für openHAB2 musst Du allerdings zuerst die Anleitung für eine andere als die aktuelle Version auswählen, also z.B. 2.5 (oben links wo "Version: latest" steht)

Voraussetzungen:
  • ein installierter und laufender Broker wie z.B. mosquitto
  • Der NodeMCU ist am Broker angemeldet und kann Topics publishen
  • in openHAB ist mqtt2 und mindestens eine Persistence eingerichtet, die Zahlen unverfälscht speichern und wiedergeben kann (z.B. influxDB)
  • Es ist ein mqtt Broker Thing (bzw. Bridge) eingerichtet und mit dem laufenden Broker verbunden
  • Es ist ein generic mqtt Thing eingerichet, welches mit dem Broker Thing verbunden ist
  • In dem Thing ist ein Number Channel eingerichtet, der das Total Topic als stateTopic eingetragen hat (und es kommt der Zählerstand an)
  • ein Number Item ist mit dem Channel verlinkt (und zeigt den Zählerstand an)
Um das Item in influxdb zu persistieren, legst Du eine Datei im openHAB-conf Ordner im Verzeichnis persistence an. Die Datei muss den Namen influxdb.persist tragen (exakt diesen Namen in exakt dieser Schreibweise).
Inhalt der Datei:

Code: Alles auswählen

// persistence strategies have a name and a definition and are referred to in the "Items" section

Strategies {
        // some cron strategies
        everyMinute    : "0 * * * * ?"
        every15Minutes : "0 0/15 * * * ?"
}

Items {
        // let's store some values in influxdb
        Mein_Item           : strategy = everyChange
        Mein_GroupItem*     : strategy = everyChange
}
In diesem Beispiel werden zwei Items persistiert.
Das erste Item ist ein gewöhnliches Item.
Das zweite Item ist ein Group Item (mit exakt dem angegebenen Namen, bis auf den Stern natürlich). Als Besonderheit wird aber nicht der Status des Group Items gespeichert, stattdessen werden alle Member dieser Gruppe persistiert. Es reicht dann also, ein Item der Gruppe Mein_GroupItem zuzuweisen, um es mit der angegebenen Strategie zu persistieren.
Es können mehrere Strategien angegeben werden, everyChange sollte hier ausreichen. everyUpdate speichert auch dann, wenn ein Item den gleichen Wert zugewiesen bekommt (aber mit neuem Zeitstempel...) den es schon hat. restoreOnStartup stellt beim Systemstart den Status des Items wieder her, und zwar mit dem letzten Wert, der in dieser Persistence gespeichert wurde. Weitere Strategien sind dann die cron Strategies, welche im Kopf angelegt werden (im Beispiel everyMinute und every15Minutes). cron Strategies braucht man normalerweise nur im Zusammenhang mit rrd4j und den eingebauten Grafen (in openHAB2).

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 7. Feb 2021 09:52
von matze.lingen
Ok soweit habe ich das schon am laufen. Ich bekomme die Werte auch im der sitemap angezeigt aber das ist ja nur der Count total und time. Aber nicht die Darstellung in Watt oder kW/h bzw den Tages und Gesamtverbrauch.
Vielen Dank
Mfg
Matthias

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 7. Feb 2021 20:40
von udo1toni
Wie gesagt, ein Impuls entspricht einer Wattstunde. Der Gesamtverbrauch ist gleich der Anzahl der Impulse (in Wattstunden). Der Tagesverbrauch ergibt sich aus der Differenz zwischen jetzt und Tagesbeginn. Das kannst Du über eine einfache Rule in ein eigenes (ungebundenes) Item schreiben, so:

Code: Alles auswählen

Number Tagesverbrauch "Tagesverbrauch [%.0f Wh]"
Rule:

Code: Alles auswählen

rule "Tagesverbrauch"
when
    Item Gesamtverbrauch changed
then
    Tagesverbrauch.postUpdate((Gesamtverbrauch.deltaSince(now.withTimeAtStartOfDay))
end
Das Item Gesamtverbrauch enthält dann Total. Jedes Mal, wenn der Zählerstand sich ändert, wird das Item für den Tagesverbrauch aktualisiert.
Eine kleine Ungenauigkeit: Wenn um Mitternacht der Stromverbrauch sehr niedrig ist, bleibt die Anzeige auch nach Mitternacht noch auf dem Stand vom Vortag. Erst beim nächsten Impuls wechselt sie dann auf 1 Wh. Das sollte aber zu verschmerzen sein.

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 7. Feb 2021 21:37
von matze.lingen
Ok ich Versuche das Mal so zu bauen. Dann müsste ja der espeasy total immer um 12 Uhr Nullen... Und was muss ich machen um die aktuelle Leistung zu ermitteln? Brauche ich da auch ne rule weil sonst steht da ja nur ein Zahlenwert. Iwie verstehe ich grob was der Zähler über s0 auswirft aber nicht wie ich mit den 3 werten rechnen muss. Um dann entsprechende anzeigen zu bekommen.

Re: S0 Stromzähler in Openhab2 integrieren

Verfasst: 8. Feb 2021 00:53
von udo1toni
Nein, warum sollte da was genullt werden? Total sollte streng monoton wachsen. Die Rule errechnet den Tagesverbrauch über die Persistence.