(gelöst):HM-ES-PMSw1-Pl Leistungsmessung Messwert anzeigen lassen !!!

Begonnen von ole30419, 21 Februar 2014, 11:36:12

Vorheriges Thema - Nächstes Thema

ole30419

Hallo FHEMer,

ich habe mir nun auch ein Leistungsmesser von MomeMatic geholt und in meine Fhem eingebunden. Er Zeigt mir auch immer schon alle Werte an. Ich habe hier für jeden Wert den ich mir anzeigen lassen will ein dummy geschrieben (kopiert ist nicht auf meine Mist gewachsen) und lasse ihn auch in ein Log schreiben.####  Dummy für Anzeige Energy = Energieverbrauch ####
define PV_Module_aktuell_Energy dummy
attr PV_Module_aktuell_Energy event-on-change-reading state
attr PV_Module_aktuell_Energy room HM_Leistung
define PV_Module3Setzen notify HM_Messung_Pwr {my $var= ReadingsVal("HM_Messung_Pwr","energy",0);; fhem("set PV_Module_aktuell_Energy $var Wh");;}
define FileLog_PV_Module_aktuell_Energy FileLog /volumeUSB1/usbshare/log/PV_Module_aktuell-%Y.log PV_Module_aktuell_Energy

Soweit so gut, nun will ich aber den Wert für ,,enegy" also Watt pro Stunde für jeden einzelne Tag angezeigt habe. Es soll also jeden Abend ab 0:00 Uhr der Wert wider auf nun gestellt werden. Zurzeit wird ja einfach zusammen gezählt oder weiter gezählt und wenn sich was ändern und ins Log geschrieben.
Ich möchte aber die Leistung pro Tag angezeigt bekommen und dann einmal in Log schreiben.

Kann mir da eine weiter helfen?

Gruß ole 30419
MfG Ole

svenr

#1
Hallo,

ich weiß nicht, ab man den Wert für "energy" zurücksetzen kann. Ich habe für mich aber eine andere Lösung gefunden:

- 3 dummy Variablen zum Zwischenspeichern und loggen der Tageswerte
- notify und trigger, um täglich um Mitternacht den Tageswert zu berechnen

Der Code hierzu sieht folgendermaßen aus:


#zum Zwischenspeichern (alter Wert)
define HM_Messung_Pwr_Wert_letzter_Tag dummy
attr HM_Messung_Pwr_Wert_letzter_Tag event-on-change-reading state
attr HM_Messung_Pwr_Wert_letzter_Tag room 05_HM_Messung_Pwr
attr HM_Messung_Pwr_Wert_letzter_Tag group 2_Kosten
attr HM_Messung_Pwr_Wert_letzter_Tag stateFormat {sprintf("%.0f W (%s)", ReadingsVal("HM_Messung_Pwr_Wert_letzter_Tag","state",0), ReadingsTimestamp("HM_Messung_Pwr_Wert_letzter_Tag","state",0))}
#Energie-Verbrauch letzter Tag
define HM_Messung_Pwr_Verbrauch_Tag dummy
attr HM_Messung_Pwr_Verbrauch_Tag event-on-change-reading state
attr HM_Messung_Pwr_Verbrauch_Tag room 05_HM_Messung_Pwr
attr HM_Messung_Pwr_Verbrauch_Tag group 2_Kosten
attr HM_Messung_Pwr_Verbrauch_Tag stateFormat {sprintf("%.0f W (%s)", ReadingsVal("HM_Messung_Pwr_Verbrauch_Tag","state",0), ReadingsTimestamp("HM_Messung_Pwr_Verbrauch_Tag","state",0))}
#Kosten letzter Tag
define HM_Messung_Pwr_Kosten_Tag dummy
attr HM_Messung_Pwr_Kosten_Tag event-on-change-reading state
attr HM_Messung_Pwr_Kosten_Tag room 05_HM_Messung_Pwr
attr HM_Messung_Pwr_Kosten_Tag group 2_Kosten
attr HM_Messung_Pwr_Kosten_Tag stateFormat {sprintf("%.2f € (%s)", ReadingsVal("HM_Messung_Pwr_Kosten_Tag","state",0), ReadingsTimestamp("HM_Messung_Pwr_Kosten_Tag","state",0))}

#log Datei
define FileLog_HM_Messung_Pwr_Kosten FileLog ./log/HM_Messung_Pwr_Verbrauch-%Y.log HM_Messung_Pwr_Wert_letzter_Tag|HM_Messung_Pwr_Verbrauch_Tag|HM_Messung_Pwr_Kosten_Tag
attr FileLog_HM_Messung_Pwr_Kosten logtype text
attr FileLog_HM_Messung_Pwr_Kosten room 05_HM_Messung_Pwr
attr FileLog_HM_Messung_Pwr_Kosten group 2_Kosten

#Plot
define Plot_HM_Messung_Pwr_Kosten SVG FileLog_HM_Messung_Pwr_Kosten:myHM_Messung_PwrKosten:CURRENT
attr Plot_HM_Messung_Pwr_Kosten fixedrange 2014-02
attr Plot_HM_Messung_Pwr_Kosten label "Euro/Tag"
attr Plot_HM_Messung_Pwr_Kosten title "HM_Messung_Pwr Verbrauch pro Tag"
attr Plot_HM_Messung_Pwr_Kosten room 05_HM_Messung_Pwr
attr Plot_HM_Messung_Pwr_Kosten group 2_Kosten_Plot

sleep 0.5
#notify zur Berechnung
#aktuelle Werte: 23,37 Cent / kWh, Grundpreis: 8,62 Euro / Monat (Verbrauch letzter Tag)
define n_HM_Messung_Pwr_Kosten_Tag notify n_HM_Messung_Pwr_Kosten_Tag {\
    my $currEnergy = ReadingsVal('HM_Messung_Pwr','energy',0);;\
    my $lastDay = Value("HM_Messung_Pwr_Wert_letzter_Tag");;\
    my $verbrauch = $currEnergy-$lastDay;;\
    my $kosten = $verbrauch/1000 * 0.2337 + 8.62/30;;\
fhem("set HM_Messung_Pwr_Wert_letzter_Tag $currEnergy");;\
fhem("set HM_Messung_Pwr_Verbrauch_Tag $verbrauch");;\
fhem("set HM_Messung_Pwr_Kosten_Tag $kosten");;\
}
attr n_HM_Messung_Pwr_Kosten_Tag room 05_HM_Messung_Pwr
attr n_HM_Messung_Pwr_Kosten_Tag group 2_Kosten
#trigger einmal nachts 23:58 zur Berechnung der Werte
define a_HM_Messung_Pwr_Kosten at *23:58 trigger n_HM_Messung_Pwr_Kosten_Tag
attr a_HM_Messung_Pwr_Kosten room 05_HM_Messung_Pwr
attr a_HM_Messung_Pwr_Kosten group 2_Kosten


Und hier noch die Plot-Datei:


set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics nomirror
set ylabel "<L1>"
set yrange [0:1]
set y2tics nomirror
set y2label "<L1>"
set y2range [0:1]

#FileLog 3:HM_Messung_Pwr_Kosten_Tag::

plot "<IN>" using 1:2 title '<L1>' ls l0 lw 1 with fsteps


Einen Screenshot von FHEM habe ich auch mal beigefügt.
Die dummy Variablen zu Beginn am besten mit "set HM_Messung_Pwr_Wert_letzter_Tag 0" usw. (oder dem richtigen Wert) initialisieren.

Vielleicht hilft Dir das weiter. Die verschiedenen Einträge zu den Geräten und ggf. einer anderen Benennung musst Du natürlich noch anpassen.

Viele Grüße
Sven

ole30419

Hallo Sven,

ja das ist auch so ein Ansatz den ich verfolgen möchte. Ich habe deinen Code mal versucht in mein FHEM zu übernehmen aber das hat nicht geklappt. Ich brauche da noch mal Hilfe.

Als ersten brauche ich eine ,,dummy" um den Wert um 0:00 Uhr auszulesen und zu speichern.
 
#Anlegen der ,,dummy":
#zum Zwischenspeichern (alter Wert)
define HM_Messung_Pwr_Wert_letzter_Tag dummy
attr HM_Messung_Pwr_Wert_letzter_Tag event-on-change-reading state
attr HM_Messung_Pwr_Wert_letzter_Tag room 05_HM_Messung_Pwr
attr HM_Messung_Pwr_Wert_letzter_Tag group 2_Kosten
attr HM_Messung_Pwr_Wert_letzter_Tag stateFormat {sprintf("%.0f W (%s)", ReadingsVal("HM_Messung_Pwr_Wert_letzter_Tag","state",0), ReadingsTimestamp("HM_Messung_Pwr_Wert_letzter_Tag","state",0))}
#Energie-Verbrauch letzter Tag
define HM_Messung_Pwr_Verbrauch_Tag dummy
attr HM_Messung_Pwr_Verbrauch_Tag event-on-change-reading state
attr HM_Messung_Pwr_Verbrauch_Tag room 05_HM_Messung_Pwr
attr HM_Messung_Pwr_Verbrauch_Tag group 2_Kosten
attr HM_Messung_Pwr_Verbrauch_Tag stateFormat {sprintf("%.0f W (%s)", ReadingsVal("HM_Messung_Pwr_Verbrauch_Tag","state",0), ReadingsTimestamp("HM_Messung_Pwr_Verbrauch_Tag","state",0))}

#Anlegen der Log Datei:
define FileLog_HM_Messung_Pwr_Kosten FileLog /volumeUSB1/usbshare/log/HM_Messung_Pwr_Verbrauch-%Y.log  HM_Messung_Pwr_Wert_letzter_Tag|HM_Messung_Pwr_Verbrauch_Tag|HM_Messung_Pwr_Kosten_Tag
attr FileLog_HM_Messung_Pwr_Kosten logtype text
attr FileLog_HM_Messung_Pwr_Kosten room 05_HM_Messung_Pwr
attr FileLog_HM_Messung_Pwr_Kosten group 2_Kosten

#Da habe ich den Paht angepasst wo der Ordner für die Log- Datei angelegt werden soll.

#Anlegen zum Wert in die Lod-Datei:
#trigger einmal nachts 23:58 zur Berechnung der Werte
define a_HM_Messung_Pwr_Kosten at *23:58 trigger n_HM_Messung_Pwr_Kosten_Tag
attr a_HM_Messung_Pwr_Kosten room 05_HM_Messung_Pwr
attr a_HM_Messung_Pwr_Kosten group 2_Kosten

#Anlegen der Plot:
define SVG_FileLog_HM_Messung_Pwr_Kosten_1 SVG FileLog_HM_Messung_Pwr_Kosten:SVG_FileLog_HM_Messung_Pwr_Kosten_1:CURRENT
attr SVG_FileLog_HM_Messung_Pwr_Kosten_1 fixedrange 2014-02
attr SVG_FileLog_HM_Messung_Pwr_Kosten_1 group 2_Kosten_Plot
attr SVG_FileLog_HM_Messung_Pwr_Kosten_1 room 05_HM_Messung_Pwr

#Hier nun die Berechnung:
sleep 0.5
define n_HM_Messung_Pwr_Kosten_Tag notify n_HM_Messung_Pwr_Kosten_Tag {\
    #hier das definierte Geraet angeben (das ist ja richtig eingetragen 'HM_Messung_Pwr' oder?)
    my $currEnergy = ReadingsVal('HM_Messung_Pwr','energy',0);;\
    my $lastDay = Value("HM_Messung_Pwr_Wert_letzter_Tag");;\
   fhem("set HM_Messung_Pwr_Wert_letzter_Tag $currEnergy");;\
   fhem("set HM_Messung_Pwr_Verbrauch_Tag $verbrauch");;\
   }

Wenn ich das alles in FHEM eingeben habe, werden auch die neuen ,,Room" angelegt und auch der ,,Plot" wird gezeichnet. Aber die Log Datei ,,HM_Messung_Pwr_Verbrauch-2014.log" ist lehr auch am Nächten Tag. Das mit der Berechnung der Kosten habe ich erst mal rausgelassen damit es einfacher wird. Aber leider geht es nicht. Den Wert "HM_Messung_Pwr_Wert_letzter_Tag" habe ich beschrieben mit "set" hinzugefügt. 

Ich sehe leider nicht meine Fehler !!!
MfG Ole

svenr

Hallo Ole,

ich sehe auch keinen Fehler auf Anhieb.
Hast Du den notify mal per Hand ausgelöst
trigger n_HM_Messung_Pwr_Kosten_Tag
Kommt da evtl. im Log eine Fehlermeldung?
Evtl. kannst Du auch mal eine Log-Meldung mit den Werten erzeugen. Hierzu z.B.
Log(3, "Letzter Tag=$currEnergy");;\
im notify ergänzen.

Viele Grüße
Sven

ole30419

Hallo Sven,

ja gut habe ich mal von Hand ausgelöst und ich bekomme folgenden Fehler: n_HM_Messung_Pwr_Kosten_Tag return value: Unknown command {
, try help.

Ich mein der Fehler liegt beim notify zur Berechnung:
define n_HM_Messung_Pwr_Kosten_Tag notify n_HM_Messung_Pwr_Kosten_Tag

Aber ich weiß nicht wie es besser heißen müsste.
Gruß Ole
MfG Ole

svenr

#5
Hallo Ole,

lösche mal die Kommentarzeile im notify. Hier fehlt vermutlich das "\" am Ende oder ein Kommentar geht hier gar nicht.
Viele Grüße
Sven

ole30419

Hallo Sven,

ich habe mal ein Bildschirmfoto von der xxx.cfg Datei gemacht. Vielleicht hilft das den Fehler zu finden, bekomme immer noch die Fehlermeldung.

Gruß Ole
MfG Ole

ole30419

Hallo Sven,
habe alle noch mal gelöscht und neu rein kopiert mit Text Editor und ich weiß nicht warum aber jetzt geht es SUPER !!!! DANKE !!!

Gruß Ole

MfG Ole