EM... Energie-Mess-Systeme

Begonnen von Prof. Dr. Peter Henning, 09 März 2013, 04:24:31

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning


(siehe Anhang / see attachement)

Ich habe unter contrib eine neue Version des Moduls 15_EMX.pm eingestellt. Es bedient die Funk-Energiemess-Systeme EM1000 WZ/EM/GZ und ist als Ersatz für 15_CUL_EM.pm gedacht.

Was ist hier anders ?

1. deutlich vereinfachte Konfiguration mit nur einem Parameter
2. sinnvolle physikalische Einheiten kW, kWh (bzw. m³/h, m³), auch konfigurierbar
3. Sekundengenaue Extrapolation und Logging eines "Mitternachtswertes", so dass auch eine Monatsübersicht mit Tagesverbrauchsdaten (einzeln und kumuliert) sehr einfach zu erstellen ist. Beispielsweise der zugehörige event gestern abend kurz vor Mitternacht, mit extrapolierter Tagessumme und bisher aufgelaufenen Monatsverbrauch:     

2013-03-08_23:58:37 E.Verb day: D_08 Wd: 19.59 kWh Wm: 175.24 kWh Cd:  5.13 €

4. Ebenso am letzten Tag eines Monats für die monatliche Summe, die in eine Jahresübersicht eingetragen werden kann
5. Möglichkeit der Angabe von zwei verschiedenen Tarifen (z.B. Tages- und Nachttarif), sekundengenaue Interpolation der Umschaltwerte.
6. Der Mitternachtswert wird in einer separaten Datei so gespeichert, dass er bei einem Neustart von FHEM wieder korrekt eingelesen wird.

Es gibt immer noch die Möglichkeit, dass ein paar unerwünschte Effekte auftreten - aber Tests sind herzlich willkommen.

Zur Installation: Bitte das "alte Modul" 15_CUL_EM.pm irgendwo sichern und stattdessen 15_EMX.pm als 15_CUL_EM.pm abspeichern (geht derzeit noch nicht anders, weil EMX noch nicht in der Client-Liste von CUL eingetragen ist)

LG

pah

P.S.: Im obersten Diagramm des Bildes sind noch ein paar weitere Daten zu sehen - EMX liefert die rote (E.Verb P) und die blaue (E.Verb Wd) Kurve...

stgeran

Ich habe 15_CUL_EM.pm in 15_CUL_EM_alt.pm umbenannt, 15_EMX.pm in 15_CUL_EM.pm umbenannt und shutdown restart gemacht. Die Plots sind noch die alten.Was muss ich noch tun?
FHEM auf Raspberry
CSM 866MHz für EM1010 mit Strom und Gaszähler
CUL 866MHz für MAX! Radiator Thermostat 
CUL 433MHz für Innen und Aussen Temp
HMLAN für HM-LC-Sw1-PI-2

Prof. Dr. Peter Henning

Das Modul EMX.pm erzeugt bei jeder Messung mehrere Events, hier ein Beispiel (heißt bei mir E.Verb)

2013-03-09 19:46:08 CUL_EM E.Verb count: 44495
2013-03-09 19:46:08 CUL_EM E.Verb energy: 15.314
2013-03-09 19:46:08 CUL_EM E.Verb pmeter: 10562.104
2013-03-09 19:46:08 CUL_EM E.Verb power: 1.28
2013-03-09 19:46:08 CUL_EM E.Verb peak: 0.234
2013-03-09 19:46:08 CUL_EM E.Verb cost: 4.0107
2013-03-09 19:46:08 CUL_EM E.Verb W: 15.31 kWh P: 1.28 kW Pmax: 0.234 kW

Für ein komfortables Logging will man nur die letzte Zeile in Log haben. Also muss das Filelog entsprechend matchen:

define FileLog <t-name> <Logdatei> E.Verb:W.* für das Tageslog

define FileLog <m-name> <Logdatei>  E.Verb:.*D_.* für das Monatslog

Achtung, nicht vergessen: Der Name des Monatslogs - also hier <m-name> - muss dem Modul als Attribut bekannt gemacht werden:

attr <emxdevicename> LogM <m-name>

So, damit haben wir erst einmal zwei schöne Logdateien: Eine wird jeden Tage von Null Uhr bis Mitternacht gefüllt (sollte also einen Dateinamen bekommen wie EnergieD-%Y-%m-%d.log), Sieht bei mir so aus:

...
2013-03-09_19:06:03 E.Verb W: 14.21 kWh P:  1.44 kW Pmax: 0.108 kW
2013-03-09_19:11:03 E.Verb W: 14.45 kWh P:  2.88 kW Pmax: 0.105 kW
2013-03-09_19:16:04 E.Verb W: 14.69 kWh P:  2.88 kW Pmax: 0.105 kW
2013-03-09_19:28:25 E.Verb W: 14.90 kWh P:  2.56 kW Pmax: 0.095 kW
2013-03-09_19:28:26 E.Verb W: 14.90 kWh P:  2.56 kW Pmax: 0.095 kW
2013-03-09_19:35:02 E.Verb W: 14.90 kWh P:  2.56 kW Pmax: 0.095 kW
2013-03-09_19:46:08 E.Verb W: 15.31 kWh P:  1.28 kW Pmax: 0.234 kW
2013-03-09_19:51:08 E.Verb W: 15.42 kWh P:  1.28 kW Pmax: 0.237 kW

Die andere Datei wird am Ende eines Tages um die aktuelle Tagessumme ergänzt. Die sieht dann bei mir für den Monat März so aus:

2013-03-01_23:57:10 E.Verb day: D_01 Wd: 21.67 kWh Wm:  21.67 kWh Cd:  5.67 €
2013-03-02_23:55:14 E.Verb day: D_02 Wd: 23.82 kWh Wm:  45.49 kWh Cd:  6.23 €
2013-03-03_23:58:19 E.Verb day: D_03 Wd: 20.65 kWh Wm:  66.14 kWh Cd:  5.40 €
2013-03-04_23:56:23 E.Verb day: D_04 Wd: 26.89 kWh Wm:  93.03 kWh Cd:  7.04 €
2013-03-05_23:59:27 E.Verb day: D_05 Wd: 20.40 kWh Wm: 113.43 kWh Cd:  5.34 €
2013-03-06_23:57:30 E.Verb day: D_06 Wd: 18.37 kWh Wm: 131.80 kWh Cd:  4.81 €
2013-03-07_23:55:33 E.Verb day: D_07 Wd: 23.85 kWh Wm: 155.65 kWh Cd:  6.24 €
2013-03-08_23:58:37 E.Verb day: D_08 Wd: 19.59 kWh Wm: 175.24 kWh Cd:  5.13 €

Was muss man jetzt machen, um die Daten zu plotten:
Nun, in der Tagesdatei steht in Spalte 4 die Energiemenge, in Spalte 7 die Leistung und in Spalte 10 die aufsummierten Kosten.
Daher muss in die zugehörige Plotdatei geschrieben werden (jetzt mal ohne die Kosten)

#FileLog 7:E.Verb:0:
#FileLog 4:E.Verb:0:

plot "<IN>" using 1:8 axes x1y1 title 'P (Verbrauch)' with lines,\
     "<IN>" using 1:6 axes x1y2 title 'Wd (Verbrauch)' with lines

In der Monatsdatei steht in Spalte 6 der Tagesverbrauch und in Spalte 9 die bisherige Monatssumme. Daher muss in der zugehörigen Plotdatei stehen:

#FileLog 6:E.Verb:0:
#FileLog 9:E.Verb:0:

plot "< egrep 'E_Verb' <IN>" using 1:2 axes x1y1 title 'Wd' with bars ls l2fill,\
     "< egrep 'E_Verb' <IN>" using 1:2 axes x1y2 title 'Wm' with lines ls l4

Alles klar ?

LG

pah



stgeran

Da muss ich noch ein bischen üben, das ist mir noch zu hoch. Nach meiner Umbenennung hatte ich im "normalen" Plott keine Anzeige mehr. Ich habs dann erst zurückgebogen. Kann ich die ganzen Plotbefehle eintragen und anpassen ohne das es zu Fehlern kommt und dann die Datei wieder umbenennen?
FHEM auf Raspberry
CSM 866MHz für EM1010 mit Strom und Gaszähler
CUL 866MHz für MAX! Radiator Thermostat 
CUL 433MHz für Innen und Aussen Temp
HMLAN für HM-LC-Sw1-PI-2

Puschel74

Hallo,

leg dir doch eine zweite .plot-Datei an mit den, von pah, gennanten Beispielen (oder den von dir gewollten Werten).
Dann brauchst du nur die beiden jeweils umzubennenen und kannst gefahrlos schauen was sich ändert.

Grüße

P.S.: SO eine Erklärung für die Plot-Einträge habe ich bis eben gesucht.
DAS ist mal was von verständlich gewesen für mich - danke pah für die tolle Erklärung.

@Uli - sowas könnte evtl. mit ins Einsteiger.pdf unter Plotfiles??

Edith: Aber um deine Frage zu beantworten @stgeran
ZitatDie Plots sind noch die alten.Was muss ich noch tun?
Nur weil du die *.pm austauscht ändert sich nicht automatisch an den Plots etwas.
Die Plots greifen auf die Logfiles zu und zwar nach dem, von pah, beschriebenen Muster.
Wenn das .pm-File die Logeinträge erweitert musst du in der zugehörigen .plot eintragen welche Werte du anzeigen willst bzw. prüfen ob die Positionen noch passen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Prof. Dr. Peter Henning

Zitat von: Puschel74 schrieb am So, 10 März 2013 20:20P.S.: SO eine Erklärung für die Plot-Einträge habe ich bis eben gesucht.
DAS ist mal was von verständlich gewesen für mich - danke pah für die tolle Erklärung.

@Uli - sowas könnte evtl. mit ins Einsteiger.pdf unter Plotfiles??

Ich dachte, so etwas stünde schon längst im Einsteiger-PDF (habe ich nicht gelesen, ich gebe es zu...).

Selbstverständlich kann man das da hinein übernehmen - aber dann müsste es noch etwas vollständiger sein, damit klar wird, warum die eigentlichen Plot-Daten in einem Kommentar festgelegt werden.

LG

pah

samsungruth

Ich habe zwei EM im Einsatz, einer am Strom und einer am Gaszähler, wenn ich die CUL gegen die EMX austausche
stürzt mein FHEM nach kurzer Zeit ab. Habe FHEM auf einem RasPi laufen. Mit CUL läuft es ohne Probleme.
Release  : 5.5
RASPI
CUL_HM/EM  FS20 IT AVR MAX WEBIO

cge

Hallo,
funktioniert bei mir so weit für einen Gaszähler (CUL_EM/EMGZ) und einen Stromzähler (CUL_EM)gut. Allerdings habe ich eine recht schlechte Empfangssituation und daher öfters auch längerer Empfangslücken.

Vermutlich das führt bei mir dazu, dass beim Tageswechsel öfters keine Summenwerte geschrieben werden und der W-Wert der Messwerte am Folgetag nicht wieder bei 0 startet.

Ich meine im Code gesehen zu haben, dass ein Tageswechsel anhand des zeitlichen Abstands zu Mitternacht erkannt wird. Falls das so ist, lässt sich das so umstellen, dass die Berechnung auf Grundlage des ersten Werts nach einem Datumswechsel durchgeführt wird?

Viele Grüße,
Carsten

Prof. Dr. Peter Henning

Ja, schafft aber das Problem, dass dann auch der Tag schon gewechselt hat - also auch das Tages-Logfile schon ein anderes ist.

Muss ich mal drüber nachdenken, weil mir das eine sinnvolle Erweiterung zu sein scheint.

Wie siegt das aus, fällt maximal ein Eintrag weg, oder können das auch mehrere hintereinander sein ?

LG

pah

punker

Hallo,

wo schreibe ich denn den Anfangszählerstand rein?
LG

Dieter

The truth is out there!

Prof. Dr. Peter Henning

Mit den Befehlen set midnight xxxx und set pmeter yyyy wird das von FHEM in eine Datei geschrieben (die derzeit im Modulverzeichnis liegt, das wird demnächst noch geändert, ohne dass man es merken sollte).

Entsprechend lassen sich die Werte auch mit get midnight / pmeter abrufen. Und sei werden jeweils kurz vor Mitternacht aktualisiert, das manuelle Setzen sollte also nur einmal nötig sein.

Läuft bei mir stabil ohne manuellen Eingriff seit mehreren Monaten.

LG

pah

punker

Ich habe jetzt mal versucht per set E_Verbrauch midnight 71419 meinen aktuellen Zählerstand einzugeben, aber leider erscheint dann folgende Meldung:
EMX_Set: Wrong midnight value for counter, must be -65536 <= value < 65536
was mache ich falsch?
LG

Dieter

The truth is out there!

cge

Das kann sowohl mal einen Tag betreffen oder auch mehrere nacheinander:
(vgl. Anhang)

Auszug aus dem Log:
...
2013-03-10_23:59:52 Gaszaehler day: D_10 Wd:  5.88 m^3 Wm:   5.88 m^3 Cd:  0.00 €
2013-03-12_23:56:55 Gaszaehler day: D_12 Wd: 18.45 m^3 Wm:  24.33 m^3 Cd:  0.00 €
2013-03-13_23:55:30 Gaszaehler day: D_13 Wd: 13.14 m^3 Wm:  37.47 m^3 Cd:  0.00 €
(wie gesagt gerade echt schlechter Empfang...)

Im Gesamt-Log sieht man, dass es für den Stromzähler funktioniert:
...
2013.03.12 23:56:54 1: EMX_store: Gaszaehler 2013-02-12 midnight 3239.00   32.39
2013.03.12 23:58:49 1: EMX_store: Stromzaehler 2013-02-12 midnight 7043.82    7.04
...
2013.03.13 23:55:30 1: EMX_store: Gaszaehler 2013-02-13 midnight 4553.00   45.53
2013.03.13 23:58:47 1: EMX_store: Stromzaehler 2013-02-13 midnight 8454.03    8.45
...
2013.03.14 23:58:45 1: EMX_store: Stromzaehler 2013-02-14 midnight 9889.75    9.89
... (kein Eintrag am 15.)
2013.03.16 23:58:40 1: EMX_store: Stromzaehler 2013-02-16 midnight 13163.93   13.16
...

Mir fällt gerade noch auf: Warum steht da eigentlich auch ein Datum mit -02- ?

Ich persönlich wechsle das Log-File mit den kumulierten Tageswerten sowieso nicht jeden Tag, wäre bei mir daher nur 1x im Jahr ein Problem...

Grüße,
Carsten


punker

Leider kann ich immer noch nicht per set E_Verbrauch midnight 71435 meinen aktuellen Zählerstand eingeben. Es erscheint dann immer noch folgende Meldung:
EMX_Set: Wrong midnight value for counter, must be -65536 <= value < 65536
Ist das ein Fehler im Modul?
So funktioniert es einwandfrei, nur sind halt die gesammelten Werte alle für die Katz!
Ausserdem funzt der Monatsplot mit den Balken für die Tageswerte nicht, obwohl die Logdatei die Werte enthält!

Wäre für etwas Hilfe sehr dankbar!
LG

Dieter

The truth is out there!

Prof. Dr. Peter Henning

"midnight" ist ja auch nicht der Stand des Stromzählers. Sondern der Wert des EM-internen Zählers, wie am vergangenen Donnerstag schon geschrieben.

Der Stand des Stromzählers wird dem Modul beigebracht mit

set <device> pmeter Wert

Wenn die richtigen Zeilen im Log stehen, aber kein Plot erscheint, ist das *gplot file falsch konfiguriert.

LG

pah