Guten Morgen zusammen,
ich möchte am Tages-, Wochen-, Monats-, Jahresende bestimmte Readings (GasVerbrauch) in jeweils eine gesonderte Datei schreiben um daraus entsprechende Diagramme zu erzeugen. Leider habe ich wohl bisher mit den falschen Stichwörtern gesucht.
Vielleicht kann mir ja jemand einen Tipp geben ie das geht.
Vielen Dank im Voraus und viele Grüße
Harald
Vielleicht hilft Dir das hier als Startpunkt: http://forum.fhem.de/index.php/topic,14993.0.html
Gruß, Peter
Danke für den Hinweis. Aber das ist nicht das, was ich möchte. Immerhin gibt es dort einen Hinweis, wie man generell Variable in eine Datei schreibt.
Ich versuch's mal, genauer zu erklären.
Ich habe ein Modul GasZaehler, das die Impulse meines Gaszählers zählt. In dem Modul werden Readings Impulse/Tag, Impulse gestern, Impulse/Woche usw erzeugt, die natürlich auch in der Weboberfläche des Gaszählers eingetragen sind.
Diese Readings möchte ich am Tages-, Wochen-, Monatsende abspeichern, um sie dann in entsprechenden Diargammen zu verwenden.
Viele Grüße
Harald
Hallo Gasverbrauch und EM1000GZ ? da such ich auch schon seit 2 Wochen, hab mir dabei schon das ganze System geschossen :-( , vielleicht kommen wir ja gemeinsam zum Ziel, einfahc mal Energieampel eingeben und suchten da hab ich einiges geschrieben.
Bei mir ist die Klippe das cum_day einen ganzen string als Zeile hat mit Cost etc, ( bin gerade arbeiten, kann als kein Bespiel anhängen) und ich das CUZM_DAY nicht als alleinigne Wert bekomme.
Hab auch mit 15_CUL_EMX probiert, aber da die doch etwas aufwendigere Einrichtung nicht hinbekommen.
Mein Ziel wäre es für Strom und Gas os etwas hinzubekommen
Stromverbrauch heute : 15 kw
Stromverbrauch gestern: 11 KW
Stromverbrauch aktueller Monat 50 KW
Stromverbrauch letzter Monat 500 KW
Jahresverbrauch aktuell 5000
Jahresverbauchsziel 6000
Jahersverbrauch letztes Jahr 7000
Es geht mir dabei meine sonstigen Mitbewohnern klar zu machen das man mit Energie sinnvoll umgehen soll.
Die SVG Plots zeigen wann die extremen Verbraucher zuschlagen
Die Monatskurve zeigt mit was am Wochenende passiert etc
Das wäre mein Ziel
Nein, ich habe nur einen Impulsausgang am Gaszähler und zähle diese direkt mit meinem Modul. Ich habe keinen EM1000GZ o.ä.
Viele Grüße
Harald
wie wäre es mit einem kleine Auszug aus der CFG zum Gaszähler,
Beispiele helfen ja am meisten für die Nichtprogrammierer unter uns.
du musst doch nur die passenden readings/events/trigger erzeugen und jeweils ein filelog device nur dafür definieren. also z.b. eins für die _day, _week, _month und _year readings. das schreiben macht fhem dann schon automatisch.
schau dir mal das average modul an. das macht so etwas für tages und monats werte.
gruss
andre
Danke justme1968,
das ist glaube ich der Weg, den ich gesucht habe. Das Modul werde ich mir mal zur Brust nehmen.
Viele Grüße
Harald
meine cfg:
define EM_Gas CUL_EM 11
attr EM_Gas model EMGZ
attr EM_Gas room Energie
define FileLog_EM_Gas FileLog ./log/EM_Gas-cnt.log EM_Gas:CNT.*
attr FileLog_EM_Gas logtype power8:Power,text
attr FileLog_EM_Gas room Energie
define Gas_Verbrauch readingsGroup EM_Gas:,cum_day,total
attr Gas_Verbrauch mapping %ALIAS
attr Gas_Verbrauch room TEST
attr Gas_Verbrauch valueFormat {cum_day => "%.2f heute",total => "%.2f Zählerstand"}
attr Gas_Verbrauch valueStyle {($READING eq "cum_day" && $VALUE > 20)?'style="color:green"':($READING eq "CUM_DAY" && $VALUE > 5)?'style="color:yellow"':'style="color:red"'}
define GAScum dummy
define Filelog_GAScum FileLog ./log/GAScum-%m.log EM_Gas:cum_day.*
attr Filelog_GAScum room Energie
define Timer_GAScum at *00:00:55 {\
my ($val, $t1);;\
$val = fhem "list GAScum cum_day_avg_day";;\
$t1 = substr ($val, index($val,".")-3, 5);;\
fhem "trigger GAScum T: $t1";;\
Jetzt hab ich ein neues Logfile Gascum-12.log mit dem Inhalt:
2013-12-08_00:01:45 EM_Gas cum_day: cum_day: 11.070 CUM: 10442.620 COST: 0.00
Das ursprüngliche Logfile hat folgende Zeilen:
2013-12-05_19:21:14 EMGas CNT: 124 CUM: 10422.880 5MIN: 0.000 TOP: 0.000
Ich will aber nur das cum_day :-(
Hb auch sccon versucht in der 15-cul_em.pm einiges in der betreffenden Zeile zu löschen. Cost interessiert mich nicht und stört mich.
Den Tip mit average und neuem Logfile hab ich ja probiert.
Hier ein Bild zu den Readings.
Es ist wie verhext ich komm da einfach nicht weiter und kaum einer scheint das gerät zu nutzen.
Wie kann ich den Rest der Zeile verschwinden lassen....
Könnte hier auch die Berechnung aus der pm Datei posten. Das geht zur Zeit noch über meine Programmierkenntnisse hinaus. Erkenne zwar was wo gemacht wird , hab auch shcon versucht was zu ändern hab mir dabei aber einiges geschossen :-(
Hallo zusammen,
ich glaube, ich hab's gelöst:
if ($Jahr > ($Vorjahr+1)) { # wenn Jahreswechsel dann
$Vorjahr += $Vorjahr; # Vorjahr erhöhen
$cntVorjahr = $cntJahr; # Jahreszähler in Vorjahreszähler übernehmen
$cntJahr = 0; # Jahreszähler zurücksetzen
$cntmonth = 0; # Monatszähler zurücksetzen
$lastmonth = 0; # letzter Monat auf 0
Log 3,"$modul Zeile 76, J=$Jahr, M=$month, VJ=$Vorjahr, LM=$lastmonth" if ($DEBUG == 2);
open (LOGJAHR, ">> /opt/fhem/log/Gasverbrauch.log") or die $!;
print LOGJAHR "$TimeStamp VerbrauchJahr Gas: $cntVorjahr m³\n";
close (LOGJAHR);
}
if ($month > ($lastmonth+1)) { # wenn Monatswechsel dann
$lastmonth = $lastmonth+1; # letzter Monat +1
$cntlastmonth = $cntmonth; # Monatsverbrauch in Vormonatszähler übertragen
$cntmonth = 0; # Monatsverbrauch auf 0
Log 3,"$modul Zeile 85, J=$Jahr, M=$month, VJ=$Vorjahr, LM=$lastmonth" if ($DEBUG == 2);
open (LOGMONAT, ">> /opt/fhem/log/Gasverbrauch.log") or die $!;
print LOGMONAT "$TimeStamp VerbrauchMonat Gas: $cntlastmonth m³\n";
close (LOGMONAT);
}
open (LOGTAG, ">> /opt/fhem/log/Gasverbrauch.log") or die $!;
print LOGTAG "$TimeStamp VerbrauchTag Gas: $cntPerDaym3 m³\n";
close (LOGTAG);
Tages- und Monatswerte funktionieren, nur die Jahreswerte konnte ich noch nicht überprüfen.
Viele Grüße
Harald