Mein Stromzähler zeigt 9305583, der Faktor ist 750, fhem zeigt 156398.852 wie rechne ich jetzt? Ist der Punkt bei fhem die Kommastelle? Also 9305583.000 mal 750 minus 156398.852?
Kann das Ergebniss auch eine Negative Zahl sein? Wird die Korrektur beim Gaszähler genau so vorgenommen? (48560 mal 0,01 minus (Zahl aus fhem)
Zitat von: stgeran schrieb am Do, 31 Januar 2013 08:10Mein Stromzähler
Hallo stergan,
schön, daß Du einen Stromzähler hast :-)
Außer meiner Anmerkung wirst Du wahrscheinlich keine hilfreichen Informationen zu deiner Frage erhalten.
Warum ist das so?
- Nur wenige hier haben ein 999_Glaskugel Modul in Betrieb und könnten dir deshalb helfen.
Die Logeinträge des Moduls (Lottozahlen 4013, Sinn des Lebens, Termin des nächsten Weltunterganges...) sind zudem schwer zu sichten.
- Keiner hier ist darüber informiert, welchen Stromzähler du auf welcher Hardware und mit welcher Version von FHEM im Einsatz hast.
- Nahezu keiner hier wird sich die Mühe machen können / wollen, die o.g. Angaben abzufragen.
Du könntest darüber nachdenken, deine Hard-/Software in deiner Signatur einzutragen.
Damit wären notwendige Informationen ohne Rückfrage für die Leser verfügbar.
Ebenso könntest Du darüber nachdenken, den Typ des Stromzählers bereits im Titel deines Beitrages anzugeben.
VG,
WiKa
Ah, sorry. Es geht um die Anzeige des Stromzählers mit einem CUL und EM1010 als Plot in fhem.
Tipp: You can configure your EMWZ device to show in the CUM column of the STATE reading the current reading of your meter. For this purpose: multiply the current reading (from the real device) with the corr1 value (RperKW), and substract the RAW CUM value from it. Now set the basis reading of your EMWZ device (named emwz) to this value.
Das sollte meine Frage sein: Wie setze ich diesen Wert? Rechnen kann ich ihn (mit dem Problem Kommastellen oder nicht) Aber mit welchem Befehl wird das in der cfg eingegeben?
Ich nochmal, ohne die Tante
Basiswert zurücksetzen
Um den kumulierten Zählerstand einmalig auf den abgelesenen Zählerstand zu bringen, sind folgende Schritte erforderlich:
fhem stoppen (shutdown)
folgende Zeile in fhem.save erzeugen:
setstate EMWZ_NAME 2012-mm-dd hh:MM:SS basis basisWert
mit basisWert = Zählerwert x Zählerkonstante - CUL_EM Reading total_cnt
und dann fhem starten.
Alternativ "online" mit dem Befehl:
{ setReadingsVal($defs{EMWZ_NAME},"basis",basisWert,TimeNow()) }
Darum geht es. Ist in der Zeile setstate NUR der errechnete Wert einzutragen oder die ganze Formel?
Und muss ich fhem stoppen oder kann ich es mit edit files in die cfg eintagen und dann shutdown restart ausführen?
Hallo zusammen,
ich wärme das Thema noch einmal auf, da ich gerade bei mir am korrigieren der Zählerstände bin (man denkt ja, wenn ein roter Strich optisch gezählt wird, sollte alles richtig laufen - aber weit gefehlt).
Im Wiki (//www.fhemwiki.de/wiki/EM-1000_EM_Wirkleistungsmesser) wird geschrieben
{ setReadingsVal($defs{<emez_name>},"basis",<basisWert>,TimeNow()) }
mit
Zitat<basisWert> = <abgelesenerZählerwert> / <corr2> - <total_cnt_Reading>
Wenn ich das mache, kommt bei <basisWert> etwas negatives heraus, also nicht ganz plausibel.
Oben steht
ZitatbasisWert = <abgelesenerZählerwert> x <corr1 = Zählerkonstante> - <total_cnt_Reading>
wobei man <total_cnt_Reading>aus dem Event Monitor bekommen kann.
Das kommt meiner Meinung nach schon eher hin.
Wenn das zweitere stimmt, würde ich bei Gelegenheit mal das Wiki anpassen.
Bitte noch einmal um kurze Bestätigung.
Danke + Gruß
PeMue
Hallo Zusammen,
habe bei mir auch gerade den Stromzähler auf den aktuellen Stand gebracht. Es stimmt schon so, wie es im Wiki steht:
<basisWert> = <aktueller Wert am Stromzählerdes EVU> / <corr2> - <total_cnt>
Was habt ihr denn für corr1 und corr2 Werte?
Gruß m.woodman
Hallo m.woodman,
gemäß commandref (//fhem.de/commandref.html#CUL_EM) ist <corr1> die Anzahl der Umdrehungen pro kWh (also 75 bzw. 375) und <corr2> = <corr1> * 12.
Für den Einspeisezähler (22492 kWh) wäre das dann 22492 / (375*12) - (total_cnt:) 51529
also negativ. So ganz klar ist mir der <corr2> sowieso nicht.
Gruß PeMue
Hallo PeMue,
Deine Rechnung solltre lauten: <basisWert> = 22492 kWh / 0.0133333333333333 - 51529
Denn bei der Definition des EM1000 gibts Du zwar die Umdrehungen pro KWh ein, aber FHEM speichert dann corr2 als Kehrwert also 1/75=0.013333 KW/R. Die 12 kommt denke ich daher, weil FHEM die Daten nur alle 5 Minuten von dem EM1000WZ bekommt. Also corr1 wäre dann 0,16.
Schau mal in die Detailansicht des EM1000WZ, da siehtst Du die Konstanten.
Nach absetzten des Befehls adiert FHEM einfach den eingegebenen basiswert mit total_cnt. Dann sollte der Zählerwert passen.
Bei mir hat es so geklappt.
Gruß m.woodman
Hallo Leute,
ich bin gerade dabei meinen 2 Richtungsstromzähler an FHEM anzubinden. Dazu habe ich einen 2S0-Counter uber 1wire. Dieser erscheint auch im OWServer (auf einem RPi)und ich sehe die Werte in meinem (Haupt)Fhem, d.H. die Verbindung zu OWServer funzt.
Was ich möchte:
Zählen der momentanen Leistung sowie des Zählerstandes pro Zähler
Anzeige der Richtung, z.B. wie ist der monemtane Verbrauch und wiviel wird noch ans EVU geliefert.
Vieleicht hat jemand sowas schon am laufen? Ich hab keine Ahnung wie ich das hinbekommen kann.
Viele Grüße
woody
Hallo zusammen,
ich glaube, dass ich die Ungereimtheit gefunden habe:
In der commandref zum CUL_EM (//fhem.de/commandref.html#CUL_EM) wird folgendes beschrieben:
Zitatcommandref CUL_EM
corr1 is used to correct the current number, corr2 for the total number.
for EMWZ devices you should specify the rotation speed (R/kW) of your watt-meter (e.g. 150) for corr1 and 12 times this value for corr2
In meiner Einstellung ist dies auch so umgesetzt:
commandref: corr1 corr2
Zähler 1:
DEF 1 75 900 0.23564 0
Lässt man sich das Modul aber in fhem anzeigen, kommt folgendes:
corr1 0.16 (=12*corr2)
corr2 0.0133333333333333
d.h. corr2(modul) = 1/corr1(commandref)
dito für Zähler 2:
Zähler 2:
DEF 4 375 4500 0.4675 0
corr1 0.032 (=12 * corr2)
corr2 0.00266666666666667
Wenn man jetzt die corr1 und corr2 aus der Definitionszeile analog zur commandref verwendet, gibt es bei der Berechnung der Korrektur negative Werte.
Ggf. wäre die Anpassung der commandref (para1 = U/kWh, para2=12*para1) und das Beibehalten der Werte für corr1 bzw. corr2 im Modul sinnvoll.
Gruß PeMue
Hallo,
leider muss ich dieses Thema nochmal aufgreifen.
Ich habe unseren EM1000WZ wiefolgt in fhem definiert:
96 U/kWh (vom Zähler abgelesen) als Wert1, diesen Wert1*12 gibt
1152 als Wert2 eingetragen.
Diese Eintragungen habe ich aber vor ca. 2 Jahren schon gemacht - ich hatte dazu in der Group schon einen Beitrag eröffnet.
Nun hab ich mir dank Johannes das Charting-Frontend auf meinem RasPi installiert um die Werte schön anzeigen zu können.
Hier sehe ich aber beim 5-Minuten-Verbrauch schon teilweise Werte jenseits der 0.5 kW/h
Auch in FHEM bekomme ich diese "utopischen" Werte angezeigt.
Nun habe ich mir heute mal die "Arbeit" gemacht und mich 5 Minuten vor den Zähler gestellt und am Tablet gewartet bis der EM1000WZ seine Werte sendet - dank longpoll ist da ja recht schön zu verfolgen.
In 5 Minuten macht die Zählerscheibe (also der rote Strich) genau 4 Umdrehungen (+/- eine halbe Umdrehung aber das lassen wir mal aussen vor).
d.h. das die Scheibe in einer Stunde 48 Umdrehungen macht was lt. Adam Riese 0.5 kWh bedeuten würde da 48 genau die Hälfte der 96 U/kWh sind.
Leider bekomme ich diese Werte, wie schon geschrieben, beim 5-Minuten-Wert angezeigt (teilweise auch darüber).
Ich habe teilweise kummulierte Tagesverbräuche von 150 kWh und teils auch darüber.
Das würde im Jahr vorsichtig gerechnet 180 kWh*360 ~ 95 MWh bedeuten *schreck*
Ich hab im Garten aber kein Kraftwerk stehen ^^
Kann mir bitte mal jemand gedanklich auf die Sprünge helfen wo ich meinen Fehler eingebaut habe?
Grüße
Edith: Kann es sein das in current der 5-Minuten-Wert abgelegt wird hochgerechnet auf eine Stunde?
Edith2: Ich hab die Definition des EM1000WZ mal dahingehend geändert das Wert1 jetzt Zählerkonstate*12 ist, bei mir also 1152.
Wert2 hab ich mal auf Wert1*12 angepasst.
Nun zeigt mir FHEM unter current den tatsächlichen 5-Minuten-Verbrauch an - schön zu kontrollieren mit dem RAW:5MIN Wert der bei mir wohl die Ticks anzeigt.
Bei 4 Ticks ergeben sich 1000Wh/96(U/kWh)*4 Umdrehungen= 41.6667 W / 5 Minuten
Edith3: Ich bin doch nicht der einzige mit einem EM1000WZ oder??
Hi Puschel74,
ich habe auch einen EM1000WZ in Verwendung.
Dieser wurde wie folgt definiert:
define Strom CUL_EM 1 96 1152 0.23 9.74
Mein Zähler hat wie Deiner auch 96 Umdrehungen pro kw/h
Mir sind keine Probleme aufgefallen, und auch die kumulierten
Werte passen exakt.
Viele Grüße
Michael
Hallo,
danke erstmal für die Antwort.
ZitatMir sind keine Probleme aufgefallen, und auch die kumulierten
Werte passen exakt.
Das kann ich so leider nicht sagen.
Ich hatte meinen Zähler gleich definiert wie du
Zitatdefine Strom CUL_EM 1 96 1152 0.17420 9.74
allerdings hat es mich schon gewundert das die Waschmaschine 272 kW verbauchen soll (bei einem Waschgang) und ein Tagesverbrauch lt. Charting Frontend (und das bekommt die Daten ja von FHEM 1:1 geliefert) somit bei gut 350 kW liegt.
Der blaue Peek im Screenshot:
(siehe Anhang / see attachement)
Daraufhin habe ich mich heute mal an den Zähler gestellt und die Umdrehungen gezählt (also wie oft die LED am Sensor in 5 Minuten blinkt).
Bei "ruhendem" Haus waren es genau 4 "Blinker" an der LED was mich rechnerisch eben auf die ~ 41 W in 5 Minuten gebracht hat.
Das kommt mir eher plausibel vor.
Hier
(siehe Anhang / see attachement)
sieht man schön das in den letzten 5 Minuten 6 Signale vom Sensor erkannt wurden (unter RAW 5MIN:6) was auch schön mit den 0.0625 kW in den letzten 5 Minuten zusammen passt.
Ich kann doch unmöglich knapp 95 MW/Jahr verbrauchen.
Grüße
Hallo Puschel,
hm, bei mir (ich habe kein dblog) sieht die Sache so aus:
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
Meine bessere Hälfte wundert sich immer, wenn ich ihr sage, wann sie gekocht hat bzw. die Spül- bzw. Waschmaschine gelaufen ist ;-)
Was mich bei Deiner Grafik stört (ich gehe mal davon aus, dass die rechte Achse gilt) ist der "Offset" des Ganzen, die Achse fängt bei 91 (ich vermute mal kWh) an (der Elektriker in mir würde Deine Achsenbeschriftung beanstanden, aber das lasse ich heute lieber ;-)). Auch die Zeitachse scheint mir auf den ersten Augenblick nicht plausibel (da sollte alle 5 min. ein Wert kommen, es sei denn Du machst Mittelwertbildung o.ä.).
Schau Dir mal Deine Rohdaten an. Da sollte so etwas drinstehen:
2013-06-26_21:10:57 Stromverbrauch CNT: 144 CUM: 38785.840 5MIN: 0.160 TOP: 0.160
Und die 8. Spalte sollte geplottet werden.
Gruß PeMue
PS: Und bei mir habe ich glatt vergessen, nach dem Anbieterwechsel die BasicFeePerMonth anzugeben, so eine Schlamperei ...
Hallo,
Zitatder Elektriker in mir würde Deine Achsenbeschriftung beanstanden, aber das lasse ich heute lieber ;-)
Der Elektriker in mir beanstandet das jedesmal wenn er den Chart aufruft (aber ich weiß es ja - nur weiß ich noch nicht wie ich das anpassen kann) ;-)
Der vorige Chart war ein Monatchart mit DAY_SUM-Werten.
Ich geh mal davon aus das das Frontend richtig die Werte zusammen rechnet.
Der aktuelle Chart seit 16:00 Uhr (als ich den EM1000WZ "korrigiert" habe) sieht so aus:
(siehe Anhang / see attachement)
Hier hat man alle 5 Minuten einen Datenpunkt (die Achse fängt nur deshalb bei 0.03 an weil kein 0.00 Wert "gemeldet" wurde - auch da muss ich noch schauen wie ich das anpassen kann).
Hier noch ein Chart mit HOUR_SUM
(siehe Anhang / see attachement)
Grüße
Edith: Die Peeks im ersten Chart ist der Geschirrspüler ;-)
Hallo Puschel,
irgendwie glaube ich nicht, dass Dein Geschirrspüer nur 0,2 kW (sprich 200 W) Leistung hat. Wenn der Wasser warm macht, dann sollte schon irgendetwas mit >1 kW kommen, es sei denn, Du spülst mit warmem Wasser von der Solaranlage.
Beim Stundenplot bin ich mir auch nicht sicher, ob der so stimmt: der EM liefert Energiewerte (Anzahl von LED Blitzen pro 5 min.) also eine Leistung. Wenn man die Energie wieder will, muss man integrieren (inklusive des deltaT), macht das das Charting Frontend richtig?
Gruß PeMue
Hallo,
es geht hier um den Wert in 5 Minuten und nicht pro Stunde.
Die kanpp 200W * 12 ergibt schon 2,4 kW - dazu müsste der Geschirrspüler aber eine ganze Stunde heizen.
Grüße
Edith: Du kannst mir aber jetzt nich einreden das der Zähler in 5 Minuten >96 Umdrehungen macht nur um >1kW zu kommen ;-)
Hallo,
ich bin der Meinung, dass das Modul die Anzahl der LED Blitze (während der 5 min.) in eine Leistung umrechnet (daher vermutlich der Korrekturfaktor corr2). D.h. bei 1 kW müssten in 5 min. bei Dir etwa 8 LED Blitze kommen. Und bei konstanter Leistung müssten es dann im Stundenwert heißen: Summe (von 1 bis 12)(1 kW/5 min)*60 = 1 kWh.
Gruß PeMue
Hallo,
Zitatdaher vermutlich der Korrekturfaktor corr2
Diesen corr2 habe ich noch nicht ganz geblickt (egal was ich da Eintrage ändert sich der Wert nicht wirklich).
Zitatbei 1 kW müssten in 5 min. bei Dir etwa 8 LED Blitze kommen.
Da stimme ich dir vollkommen und vorbehaltlos zu (98/12 = 8).
Mit einem kleinen Einwand:
Die Hochrechnung auf 1 Stunde stimmt aber nur wenn ich 5 Minuten*12 = 60 Minuten lang 1 kW beziehe.
Hier schon nicht:
Zitat(1 kW/5 min)*60 = 1 kWh.
Das müsste doch eher
(1 kW/5 min)*12 = 1 kWh. heissen (5*12=60)
Wenn ich aber in 5 Minuten 4 "Blitze" am Sensor sehe bedeutet das hochgerechnet auf 1 Stunde zwar 0.5 kW - momentan (also die letzten 5 Minuten) sind es aber nur 1000 W / 96 (Umdrehungen/kWh) * 4 (Umdrehungen).
Und das gibt eben in den letzten 5 Minuten ~ 41,6 W.
Oder wo hab ich meinen Denkfehler?
Grüße
Hallo Puschel,
meine Formel oben stimmt nicht ganz (es war zu spät und ich war zu wenig bei der Sache). Es müsste so
(siehe Anhang / see attachement)
heißen. Die Leistung ist ja die Arbeit pro Zeiteinheit, die vom EM1010 auch per LED Blitze gezählt wird. Bei konstanter Zahl von LED Blitzen (8 Blitze pro 5 min.) müssten dann in 12 5-Minuten "Scheiben" in Summe 96 LED Blitze kommen, d.h. nach der Formel dann W = 12*1 kW* 5 min. = 1 kW*60 min. = 1 kWh.
ZitatWenn ich aber in 5 Minuten 4 "Blitze" am Sensor sehe ...
In diesem Fall müsstest Du bei konstanter Leistung (konstant 4 LED Blitze in 5 min. über einen Zeitraum von einer Stunde) genau die Hälfte, also 0,5 kWh erhalten.
Hast Du aber nur 4 LED Blitze in den ersten 5 Minuten und dann nichts mehr, kommst Du auf 0,5 kW*5 min. + 11*0 = 0,5/12 kW*60 min. = 41 W.
Alles klar?
Viele Grüße und einen schönen Tag wünscht
Peter
Hi Puschel,
diese Energieberechnung hat mich auch fast in den Wahnsinn getrieben. ;o) Und das, obwohl ich eine gute Vorlage hatte.
Mit OWDevice geht das z.B. so:
Zähler macht 1kWH = 75U
Berechnung Momentanverbrauch: z.B.10 (Impulse der letzten 5 min durch 300 sek) mal 3600sek mal (1kW durch 75U) = 1,6 kW (genaugenommen kWH innerhalb der letzen 5 min)
Das Userreading dazu sieht so aus:
consumption_power differential {ReadingsVal("OW_Counter","counters.A",0)*3600*0.01333333333333;;},
Wenn z.B. mein 1,8 kW Wasserkocher nur 2,5 min lang kocht, bekomme ich irgendwas um 1 kW im Plot angezeigt. Würde er 5 min, oder länger kochen, zeigt der Plot auch 1,8 kW an.
Gruß
Frank
Hallo,
danke für die Antworten.
Wenn ich aber ein Gerät mit einer Anschlussleistung von 1,2 kW habe bedeutet das ja nur das, wenn dieses Gerät 1 Stunde lang voll läuft auch 1,2 kWh umgewandelt wurde.
Wenn diese Gerät nun nur 5 Minuten läuft sind es dementsprechend eben nur 100 W die "verbraucht" wurden.
Und genau diese 100W bekomme ich nun in meinem Chart für den 5-Minuten-Wert auch angezeigt wenn das Gerät nur 5 Minuten läuft.
Ich kann dort mit einem - wenn das Gerät 1 Stunde laufen würde - Wert nichts anfangen sondern ich will dort den tatsächlichen momentanen 5-Minuten Verbrauch sehen.
Ich mach ja auch über das Charting-Frontend die Verbauchsanzeige für die vergangene Zeit (Tage, Woche, Monate) und wenn ich im 5-Minuten-Wert 1,2kW eingetragen bekomme und das Gerät läuft 10 Minuten zeigt mir der Stunden-Chart hier 2,4 kWh an (was aber nicht stimmen kann da das Gerät nur 10 Minuten gelaufen ist und niemals mehr als die Anschlussleistung aufnehmen können sollte).
Grüße
Hallo Puschel,
in diesem Fall müsste an Deiner Y-Achse keine Leistung sondern der Verbrauch pro 5 min. stehen (kWh pro 5 min.). Dann müsste auch die Summation wieder stimmen.
Gruß Peter
Hallo,
Zitatin diesem Fall müsste an Deiner Y-Achse keine Leistung sondern der Verbrauch pro 5 min. stehen (kWh pro 5 min.).
Naja, die ich unseren Drehstromzähler mit dem EM1000WZ abfrage kann dort ja auch keine Leistung eingetragen werden sondern nur ein Verbrauch ;-)
Und da der EM1000WZ den Verbrauch alle 5 Minuten übermittelt wird eben auch die kWh/5 Minuten aufgetragen.
Von daher hast du recht.
Ich muss im Frontend-Unterforum mal bei Johannes nachfragen wie man die Achsenbeschriftung nachtragen kann - ich vermute mal das geht nur direkt im Charting-Tool.
ZitatDann müsste auch die Summation wieder stimmen.
Das macht sie zum Glück auch wieder seit ich gestern die Definition des EM1000WZ geändert habe.
Grüße
Zitat von: Puschel74 schrieb am Do, 27 Juni 2013 09:30Wenn ich aber ein Gerät mit einer Anschlussleistung von 1,2 kW habe bedeutet das ja nur das, wenn dieses Gerät 1 Stunde lang voll läuft auch 1,2 kWh umgewandelt wurde.
Wenn diese Gerät nun nur 5 Minuten läuft sind es dementsprechend eben nur 100 W die "verbraucht" wurden.
Das hat mir auch viel Kopfzerbrechen bereitet. ;o)
Wenn du so ein 1,2 kW- Gerät an einen Energiemonitor steckst, so zeigt dieser auch 1200W an. Das ist der Momentanverbrauch. Und ich möchte ja wissen, wieviel Watt mein Haus im Moment verbraucht. Die aufsummierten kWHs über den ganzen Tag werte ich dann zusätzlich aus:
(siehe Anhang / see attachement)
Ich häng mich nochmal dran:
Wie bekommt ihr denn die Summe im Plot hin?
Hi stgeran,
mit einem kleinen "Rechenprogramm" in der 99_MyUtils.pm. Hab ich auch alles nur hier abgekupfert:
In die CFG:
define OW_Counter OWDevice 1D.EFCFFF000000 300
attr OW_Counter comment hex11
attr OW_Counter fp_7_Plots_Energie 201,278,4,Zählerstände
attr OW_Counter model DS2423
attr OW_Counter offsetA 24999.18
attr OW_Counter offsetB 12288.061
attr OW_Counter polls counters.A,counters.B
attr OW_Counter room 1_Energie
attr OW_Counter stateFormat { sprintf("%.3f kWh %.3f m³", ReadingsVal("OW_Counter","displayA","kWh"), ReadingsVal("OW_Counter","displayB","m³"));; }
attr OW_Counter userReadings displayA {ReadingsVal("OW_Counter","counters.A",0)/75.0+AttrVal("OW_Counter","offsetA",0);;}, consumption_power differential {ReadingsVal("OW_Counter","counters.A",0)*3600*0.01333333333333;;}, daily_power {ReadingsVal("OW_Counter","displayA",0)-Value("Dum_DP_Diff_D");;}, displayB {ReadingsVal("OW_Counter","counters.B",0)/100.0+AttrVal("OW_Counter","offsetB",0);;}, consumption_gas differential {ReadingsVal("OW_Counter","counters.B",0)*3600*0.01;;}, daily_gas {ReadingsVal("OW_Counter","displayB",0)-Value("Dum_DG_Diff_D");;}
#############################################################################
## Dummies und Funktionen zur Berechnung des Energieverbrauchs Tag / Monat ##
#############################################################################
# Dummys für Daily
define Dum_DP_Diff_D dummy
attr Dum_DP_Diff_D group Berechnungen
attr Dum_DP_Diff_D room 1_Energie
define Dum_DG_Diff_D dummy
attr Dum_DG_Diff_D group Berechnungen
attr Dum_DG_Diff_D room 1_Energie
define Dum_Daily_Power_D dummy
attr Dum_Daily_Power_D group Berechnungen
attr Dum_Daily_Power_D room 1_Energie
define Dum_Daily_Gas_D dummy
attr Dum_Daily_Gas_D group Berechnungen
attr Dum_Daily_Gas_D room 1_Energie
# Dummys für Monthly
define Dum_MP_Diff_D dummy
attr Dum_MP_Diff_D group Berechnungen
attr Dum_MP_Diff_D room 1_Energie
define Dum_MG_Diff_D dummy
attr Dum_MG_Diff_D group Berechnungen
attr Dum_MG_Diff_D room 1_Energie
define Dum_Monthly_Power_D dummy
attr Dum_Monthly_Power_D group Berechnungen
attr Dum_Monthly_Power_D room 1_Energie
define Dum_Monthly_Gas_D dummy
attr Dum_Monthly_Gas_D group Berechnungen
attr Dum_Monthly_Gas_D room 1_Energie
# Berechnung Energieverbrauch Tag gesamt
define Func_Daily_Energy_A at *23:50:00 {prg_Daily_Stat()}
attr Func_Daily_Energy_A group Berechnungen
attr Func_Daily_Energy_A room 1_Energie
# Berechnung Energieverbrauch Monat gesamt
define Func_Monthly_Energy_A at *23:55:00 {prg_Monthly_Stat()}
attr Func_Monthly_Energy_A group Berechnungen
attr Func_Monthly_Energy_A room 1_Energie
#Logs:
define Log_Energy_M FileLog /media/fhem/log/OW_Counter-%Y-%m.log OW_Counter:counters.A.*|OW_Counter:counters.B.*|OW_Counter:displayA.*|OW_Counter:displayB.*|OW_Counter:consumption_power.*|OW_Counter:consumption_gas.*|OW_Counter:daily_power.*|OW_Counter:daily_gas.*
attr Log_Energy_M logtype stromverbrauch:Plot, gasverbrauch:Plot, text
attr Log_Energy_M room 1_Energie
define Log_Energy_Y FileLog /media/fhem/log/OW_Counter-%Y.log Dum_DP_Diff_D.*|Dum_DG_Diff_D.*|Dum_Daily_Power_D.*|Dum_Daily_Gas_D.*|Dum_MP_Diff_D.*|Dum_MG_Diff_D.*|Dum_Monthly_Power_D.*|Dum_Monthly_Gas_D.*
attr Log_Energy_Y logtype energie_monat:Plot, energie_jahr:Plot, text
attr Log_Energy_Y room 1_Energie
In die 99_MyUtils.pm:
#### Energie Tagesverbräuche berechnen
sub
prg_Daily_Stat()
{
#
# Zunächst Tagesverbrauch (aktueller Wert - Wert von gestern) berechnen
$data{DPval} = ReadingsVal("OW_Counter","displayA",0) - Value("Dum_DP_Diff_D");
$data{DGval} = ReadingsVal("OW_Counter","displayB",0) - Value("Dum_DG_Diff_D");
# Tagesverbrauch in DailyPower speichern
fhem ("set Dum_Daily_Power_D $data{DPval}");
fhem ("set Dum_Daily_Gas_D $data{DGval}");
# Aktuellen Wert in Daily_Power_Diff speichern (entspricht Zählerstand am Tagesende)
$data{DPval} = ReadingsVal("OW_Counter","displayA",0);
$data{DGval} = ReadingsVal("OW_Counter","displayB",0);
fhem ("set Dum_DP_Diff_D $data{DPval}");
fhem ("set Dum_DG_Diff_D $data{DGval}");
fhem("save");
}
#
#### Energie Monatsverbräuche berechnen
# Zunächst Monatsverbrauch (aktueller Wert - Wert vom letzten Monat) berechnen
# Monatsverbrauch in MonthlyPower speichern
# Aktuellen Wert in Monthly_Power_Diff speichern (entspricht Zählerstand am Monatsende)
sub
prg_Monthly_Stat()
{
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
my ($sec2,$min2,$hour2,$mday2,$month2,$year2,$wday2,$yday2,$isdst2) = localtime(time + (60*60*24) );
if ( $month2 > $month or $year2 > $year ){
$data{MPval} = ReadingsVal("OW_Counter","displayA",0) - Value("Dum_MP_Diff_D");
$data{MGval} = ReadingsVal("OW_Counter","displayB",0) - Value("Dum_MG_Diff_D");
fhem ("set Dum_Monthly_Power_D $data{MPval}");
fhem ("set Dum_Monthly_Gas_D $data{MGval}");
$data{MPval} = ReadingsVal("OW_Counter","displayA",0);
$data{MGval} = ReadingsVal("OW_Counter","displayB",0);
fhem ("set Dum_MP_Diff_D $data{MPval}");
fhem ("set Dum_MG_Diff_D $data{MGval}");
fhem("save");
Log 1, "Monatsber. Energie erfolgt: $month2 > $month oder $year2 > $year erfüllt";
} else {
Log 1, "Monatsber. n. erfolgt: $month2 > $month oder $year2 > $year n. erfüllt";
}
}
#
Gruß
Frank
OK, das mit den 99_MyUtils.pm hab ich begriffen, das wird IN diese Datei kopiert. Die cfg muss ich im ersten Teil verändern, ich habe ein EM1010,
das alle 5Min einen Wert liefert. Die Dummys kann ich aber dann wieder so verwenden, oder?
Gruß Gerhard
Hi Gerhard,
das EM- Modul gibt die Werte für täglich und monatlich summiert schon aus, wenn man es konfiguriert - glaub ich. ;o) Meine Dummies sind ja nur die Speicher für die Werte aus den Berechnungen. Forsche mal noch weiter zum EM- Modul. Da gab es mal einen ganz langen Thread, ich glaub zum ESA2000- Zähler. Das müsste dann ähnlich oder sogar gleich funktionieren. Ansonsten geht es sicher auch nach "meiner" Methode, denn der EM sendet ja auch nur einen Wert in regelmäßigen Abständen, so wie ich meinen 1-Wire-Zähler polle.
Das Prinzip ist, dass man Werte in Dummies (genutzt als "Zwischenmerker") schreibt und kurz vor Mitternacht mit diesen Werten rechnet. Die Ergebnisse werden dann wieder in diese oder andere Zwischenmerker geschrieben, für die Berechnung am nächsten Tag oder zum Plotten.
Gruß
Frank
Hallo zusammen,
das CUL_EM Modul hat das schon. Bei mir ist folgendes in der fhem.cfg:
define Stromverbrauch_tag_log FileLog ./log/verbr-tag-%Y.log Stromverbrauch:cum_.*
attr Stromverbrauch_tag_log room Strom_log
define Stromverbrauch_m_wl SVG Stromverbrauch_tag_log:energy5day:CURRENT
attr Stromverbrauch_m_wl fixedrange month
attr Stromverbrauch_m_wl label "Verbrauch (Energie): Sum $data{sum1}, Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr Stromverbrauch_m_wl room Strom
define Stromverbrauch_y_wl SVG Stromverbrauch_tag_log:energy5month:CURRENT
attr Stromverbrauch_y_wl fixedrange year
attr Stromverbrauch_y_wl label "Verbrauch (Energie): Sum $data{sum1}, Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr Stromverbrauch_y_wl room Strom
Die erste Zeile loggt einfach folgende Events
2013.09.19 00:09:28 3: CUL_EM Stromverbrauch: CUM_DAY: 0.866 CUM: 39201.693 COST: 0.20
, die schon generiert werden in eine Datei. Der Rest ist nur Plot (Tageswerte als Monatsplot, Monatswerte als Jahresplot). Ich sehe gerade dass ich das mal an Großschreibung anpassen sollte ...
Gruß PeMue
Hallo,
OT
@PeMue
Du hast nicht zufällig einen Tipp wie ich die Plots mit DBLog hinbekomme?
Grüße
Edith: Erstmal erledigt - speedtest wehrt sich noch aber auch der wird wieder plotten