Wie Readings in Datei schreiben?

Begonnen von Harald, 06 Dezember 2013, 09:52:35

Vorheriges Thema - Nächstes Thema

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

ph1959de

Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Franz Tenbrock

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
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Franz Tenbrock

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.

cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Franz Tenbrock

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 :-(
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Harald

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
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus