Hallo zusammen,
ich habe aktuell das Problem, dass immer nur drei Readings meines Dummys in das zugehörige FileLog geschrieben werden, obwohl eigentlich vier festgelegt sind... und mittlerweile verzweifele ich an diesem Problem, obwohl ich mir sicher bin, dass es nur ein kleiner Denkfehler sein kann.
Ich wäre für jegliche Unterstützung dankbar. Unten findet ihr alle Informationen, die aus meiner Sicht weiterhelfen könnten. Sollte noch eine Info fehlen, sagt mir bitte Bescheid. Über Google bzw. die Suche bin ich nicht fündig geworden, im FHEM-Logfile habe ich keine zugehörigen Einträge gefunden.
1. Vorhaben
Ich habe meine Heizung über das vitoconnect Modul eingebunden und wie im Wiki beschrieben (https://wiki.fhem.de/wiki/Vitoconnect#Userreadings_um_Reading_f.C3.BCr_Einzelwerte_von_Gasverbr.C3.A4uche_zu_erzeugen) um UserReadings für die "Einzelverbräuche" ergänzt. Ergänzend zum Wiki habe ich neben Gasverbrauch Heizung und Warmwasser auch noch Gasverbrauch Total ergänzt, außerdem hießen die Reading zum Stromverbrauch bei mir Stromverbrauch_Total (also z.B. Stromverbrauch_Total/Tag statt Stromverbrauch/Tag).
Nun würde ich gerne täglich einmal den Tagesverbrauch loggen und mir daraus einen Plot generieren. Was ich aber vermeiden möchte, ist ein gigantisches Logfile mit minütlichen Verbrauchswerten - einmal täglich reicht mir vollkommen.
2. Vorgehen
Um mein Ziel zu erreichen, habe ich einen Dummy angelegt, dessen Readings jeweils einmal täglich um kurz vor Mitternacht über ein At mit den Tageswerten beschrieben werden, und die dann entsprechend geloggt werden sollen.
Mein Dummy ist dabei sehr simpel:
define Heizung_Verbrauch dummy
setuuid Heizung_Verbrauch 624afa64-f33f-50bc-a4f4-875cc90dc2d6b574
attr Heizung_Verbrauch group Heizung
attr Heizung_Verbrauch room 5.Heizung
Hier mein At um die Readings einmal täglich zu setzen:
define Heizung_Verbrauch_Update at *23:59:55 {\
fhem("setreading Heizung_Verbrauch Gasverbrauch_Total [vitoconnect:Gasverbrauch_heute]");;\
fhem("setreading Heizung_Verbrauch Gasverbrauch_Heizung [vitoconnect:Gasverbrauch_Heizung_heute]");;\
fhem("setreading Heizung_Verbrauch Gasverbrauch_Wasser [vitoconnect:Gasverbrauch_WW_heute]");;\
fhem("setreading Heizung_Verbrauch Stromverbrauch [vitoconnect:Stromverbrauch_heute]");;\
}
setuuid Heizung_Verbrauch_Update 624b0813-f33f-50bc-aa03-1e555412c41360e0
Und last but not least mein FileLog, das diese Readings mitloggen soll:
define FileLog_Heizung_Verbrauch FileLog ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:Gasverbrauch_Total|Heizung_Verbrauch:Gasverbrauch_Heizung|Heizung_Verbrauch:Gasverbrauch_Wasser|Heizung_Verbrauch:Stromverbrauch
setuuid FileLog_Heizung_Verbrauch 624b0813-f33f-50bc-d1f8-d8661afb7ea0efe0
Zum Testen führe ich nun folgendes Kommando aus:
set Heizung_Verbrauch_Update execNow
Soweit funktioniert alles, mein Dummy beinhaltet die vier gewünschten Werte mit aktuellem Zeitstempel.
Im Logfile tauchen aber immer nur die ersten drei definierten Werte auf, wie oben für das FileLog definiert also der Gasverbrauch total, Heizung & Wasser, aber nicht der Stromverbrauch auf. Schiebe ich den Stromverbrauch nach vorne, werden Stromverbrauch, Gas total und Gas Heizung geloggt, Gas Wasser verschwindet aber aus dem Logfile - ein Beispiel:
2022-04-04_17:37:31 Heizung_Verbrauch Gasverbrauch_Total: 116
2022-04-04_17:37:31 Heizung_Verbrauch Gasverbrauch_Heizung: 106
2022-04-04_17:37:31 Heizung_Verbrauch Gasverbrauch_Wasser: 10
3. Details
Da es natürlich wahrscheinlich ist, dass ich ein wichtiges Detail übersehen habe, hier noch die Device List für Dummy, At und Logfile:
Internals:
CFGFN ./conf/02_vitoconnect.cfg
FUUID 624afa64-f33f-50bc-a4f4-875cc90dc2d6b574
NAME Heizung_Verbrauch
NR 69
STATE ???
TYPE dummy
READINGS:
2022-04-04 17:37:31 Gasverbrauch_Heizung 106
2022-04-04 17:37:31 Gasverbrauch_Total 116
2022-04-04 17:37:31 Gasverbrauch_Wasser 10
2022-04-04 17:37:31 Stromverbrauch 0.608
Attributes:
group Heizung
room 5.Heizung
Internals:
CFGFN ./conf/02_vitoconnect.cfg
COMMAND {
fhem("setreading Heizung_Verbrauch Gasverbrauch_Total [vitoconnect:Gasverbrauch_heute]");
fhem("setreading Heizung_Verbrauch Gasverbrauch_Heizung [vitoconnect:Gasverbrauch_Heizung_heute]");
fhem("setreading Heizung_Verbrauch Gasverbrauch_Wasser [vitoconnect:Gasverbrauch_WW_heute]");
fhem("setreading Heizung_Verbrauch Stromverbrauch [vitoconnect:Stromverbrauch_heute]");
}
DEF *23:59:55 {
fhem("setreading Heizung_Verbrauch Gasverbrauch_Total [vitoconnect:Gasverbrauch_heute]");
fhem("setreading Heizung_Verbrauch Gasverbrauch_Heizung [vitoconnect:Gasverbrauch_Heizung_heute]");
fhem("setreading Heizung_Verbrauch Gasverbrauch_Wasser [vitoconnect:Gasverbrauch_WW_heute]");
fhem("setreading Heizung_Verbrauch Stromverbrauch [vitoconnect:Stromverbrauch_heute]");
}
FUUID 624b0813-f33f-50bc-aa03-1e555412c41360e0
NAME Heizung_Verbrauch_Update
NR 71
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 23:59:55
TIMESPEC 23:59:55
TRIGGERTIME 1649109595
TRIGGERTIME_FMT 2022-04-04 23:59:55
TYPE at
READINGS:
2022-04-04 17:19:00 state Next: 23:59:55
Attributes:
group Steuerung
Internals:
CFGFN ./conf/02_vitoconnect.cfg
DEF ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:Gasverbrauch_Total|Heizung_Verbrauch:Gasverbrauch_Heizung|Heizung_Verbrauch:Gasverbrauch_Wasser|Heizung_Verbrauch:Stromverbrauch
FD 14
FUUID 624b0813-f33f-50bc-d1f8-d8661afb7ea0efe0
NAME FileLog_Heizung_Verbrauch
NOTIFYDEV Heizung_Verbrauch
NR 73
NTFY_ORDER 50-FileLog_Heizung_Verbrauch
REGEXP Heizung_Verbrauch:Gasverbrauch_Total|Heizung_Verbrauch:Gasverbrauch_Heizung|Heizung_Verbrauch:Gasverbrauch_Wasser|Heizung_Verbrauch:Stromverbrauch
STATE active
TYPE FileLog
currentlogfile ./log/HeizungVerbrauch-2022-04.log
logfile ./log/HeizungVerbrauch-%Y-%m.log
READINGS:
2022-04-04 17:37:31 linesInTheFile 18
Attributes:
group Logfiles
room Logfiles
was steht in fhem.log beim ausführen des at?
reduziere mal die 4 fhem() cmds im at.
also zb alle 4 setreading cmds in ein fhem() "verpacken".
Lösung:
defmod FileLog_Heizung_Verbrauch FileLog ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:Gas.*|Heizung_Verbrauch:Strom.*
War nur ne Idee - die Zeile fürs regExp ist zu lang ?
So was hatte ich schon mal gelesen aber es gab eigentlich keine Erklärung dafür https://forum.fhem.de/index.php?topic=86451.0
Wie wäre es damit
define FileLog_Heizung_Verbrauch FileLog ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:.*
Soweit ich gesehen habe, sind ja nur die drei Readings in "Heizung_Verbrauch"
Zitat von: Otto123 am 04 April 2022, 18:39:46
Lösung:
defmod FileLog_Heizung_Verbrauch FileLog ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:Gas.*|Heizung_Verbrauch:Strom.*
Ich meine das regExp ist zu lang ?
Vielen Dank, das war schon des Rätsels Lösung...
Kannst Du mir auch erklären, wieso das so ist? Ich habe ganz bewusst nicht angefangen, den Ausdruck zu vereinfachen, um mir darüber keine Fehler "einzufangen".
An der Länge an sich kann es ja nicht liegen, folgender RegExp aus dem Wiki für das vitoconnect-Modul funktioniert ja auch:
define FileLog_VitoConnect FileLog ./log/VitoConnect-%Y-%m.log vitoconnect:Aussentemperatur|vitoconnect:Brenner_Modulation|vitoconnect:Brenner_aktiv|vitoconnect:Gasverbrauch_Heizung/Jahr|vitoconnect:Gasverbrauch_aktuelle_Woche|vitoconnect:Gasverbrauch_aktueller_Monat|vitoconnect:Gasverbrauch_gestern|vitoconnect:Gasverbrauch_heute|vitoconnect:HK1-Betriebsart|vitoconnect:HK1-Frostschutz_Status|vitoconnect:HK1-Programmstatus|vitoconnect:HK1-Solltemperatur_aktiv|vitoconnect:HK1-Solltemperatur_normal|vitoconnect:HK1-Solltemperatur_reduziert|vitoconnect:HK1-Solltemperatur_reduziert_aktiv|vitoconnect:HK1-Vorlauftemperatur|vitoconnect:HK1-WW_aktiv|vitoconnect:HK1-WW_und_Heizen_aktiv|vitoconnect:HK1-Zirkulationspumpe|vitoconnect:Kessel_Common_Supply_Temperatur|vitoconnect:Kesseltemperatur_exact|vitoconnect:WW-Isttemperatur|vitoconnect:WW-Sensoren_Auslauf_Wert|vitoconnect:WW-Solltemperatur|vitoconnect:WW-Zirkulationspumpe_Status|vitoconnect:WW-zeitgesteuert_aktiv
attr FileLog_VitoConnect room Log
Zitat von: DetlefR am 04 April 2022, 18:47:57
Wie wäre es damit
define FileLog_Heizung_Verbrauch FileLog ./log/HeizungVerbrauch-%Y-%m.log Heizung_Verbrauch:.*
Soweit ich gesehen habe, sind ja nur die drei Readings in "Heizung_Verbrauch"
Stimmt, das ist natürlich noch einfacher.
Zitat von: AndreAC am 04 April 2022, 18:52:47
Kannst Du mir auch erklären, wieso das so ist? Ich habe ganz bewusst nicht angefangen, den Ausdruck zu vereinfachen, um mir darüber keine Fehler "einzufangen".
An der Länge an sich kann es ja nicht liegen, folgender RegExp aus dem Wiki für das vitoconnect-Modul funktioniert ja auch:
Kann ich leider nicht. Da Du die Vorlage geliefert hattest, habe ich kurz probiert und hatte die Idee es kürzer zu machen.
Ok, danke :)
Ich werde mir das morgen nochmal im RegExp Tester anschauen. Wenn ich den Fehler finde, poste ich nochmal... immerhin könnte das ja noch jemandem helfen ;)