Hier bin ich inzwischen ratlos: Das von Fossy zuletzt angepasste Modul 98_rain.pm setzte ich sehr gerne ein. "Oberflächlich" erzeugte es korrekt alle Werte, die ich brauche. Und dann kam ich auf die Idee, die tägliche Regenmenge, die ich in rain_calc_d_last als Reading finde und abfragen kann, auch in ein Log zu schreiben.
Der RegEx dafür: Wetterstation:rain.*
Der zeichnet auf:
2014-05-11_08:04:49 Wetterstation rain: 1106.84
2014-05-11_08:04:49 Wetterstation rain_calc_tsecs: 1399788289
2014-05-11_08:04:49 Wetterstation rain_calc_now_value: 942.8
2014-05-11_08:04:49 Wetterstation rain_calc_now_diff: 0.199999999999932
2014-05-11_08:04:49 Wetterstation rain_calc_all: cH: 0.0 lH: 1.0 cD: 0.0 lD: 8.3 IR: 1 Rnow: 0.1 Rdif: 0.199999999999932
Wie bringe ich rain dazu, auch für die Statistikwerte EVENTS zu erzeugen?
Noch ein Punkt:
Die Readings rain_calc_d_last oder auch rain_calc_h_last erzeugen kein Event, wie ich auch mit eventTypes feststellte.
Beim Stochern im Nebel stellte ich im Modul verbose=5 ein und sah dann im log, dass das Modul offenbar als Erbe seiner Herkunft vom Modul dewpoint auf Events sämtlicher Module "anspringt", die ein temperatur-Reading haben um dann mit dem RegEX auf Regenereignisse reagieren. Das ist bei 40 Devices dieser Art natürlich ein unnötiger Systemaufwand...
Übersehe ich da etwas - hat jemand einen "heißen" Tipp?
Leider reichen meine Perl-Kenntnisse immer noch nicht, um zu erkennen, was eventuell im Modul geändert werden muss...
lg
cw
Zitat von: cwagner am 11 Mai 2014, 10:57:58
Der RegEx dafür: Wetterstation:rain.*
Der zeichnet auf:
2014-05-11_08:04:49 Wetterstation rain: 1106.84
2014-05-11_08:04:49 Wetterstation rain_calc_tsecs: 1399788289
2014-05-11_08:04:49 Wetterstation rain_calc_now_value: 942.8
2014-05-11_08:04:49 Wetterstation rain_calc_now_diff: 0.199999999999932
2014-05-11_08:04:49 Wetterstation rain_calc_all: cH: 0.0 lH: 1.0 cD: 0.0 lD: 8.3 IR: 1 Rnow: 0.1 Rdif: 0.199999999999932
Regexp für dein notify/filelog ist falsch.
Versuch mal Wetterstation.rain.*
Grüße
Lieber fhainz,
das ist es leider nicht. Du hast mich zwar erwischt, dass ich mein RegEx falsch zitiert habe, aber das Listing zeigt ja, dass ich Events von Rain im FileLog finde, dummerweise habe nicht die Stunden- und Tagessummenwerte rain_calc_d_last und rain_calc_h_last.
Diese Werte erzeugen bei mir kein EVENT (ich habe auch schon sowohl im Modul rain wie in device Wetterstation, in das rain seine Readings einträgt mit event-on-change-reading experimentiert).
Deshalb habe ich mit Hilfe eventTypes über Tage alle Events ausgewertet und was soll ich sagen: Auch damit wurden die interessierenden Events nicht aufgefunden.
Die Readings werden in Wetterstation geschrieben. Zusammenfassend könnte ich also fragen: Was muss ich tun, damit die Readings auch als EVENT gefeuert werden...
Leider beherrsche ich nicht genug Perl, um das Modul erfolgreich zu verändern - auffällig ist für mich als Anfänger, dass die "last"-Readings anders geschrieben werden (mit Log3) als die "Now"-Readings, die zu einem Event führen.
lg
cw
Ok dann hab ich dich falsch verstanden 8)
Log 3 schreibt den nachfolgenden String meines Wissens nach nur ins FHEM.log nicht ins device log.
Was passiert wenn du als regexp Wetterstation:.* nimmst?
edit:
mach mal ein list <device> und poste es bitte
Danke, dass Du so engagiert hilfst. Wetterstation.* sorgt dafür, dass ich alle Events meiner Wetterstation (das sind sehr viele :-) ), aber nicht die *last*-Readings zu fassen kriege.
Das Device-Listing von Regen_Notify ist:
Internals:
DEF Wetterstation rain isRaining rain_calc
DEV_REGEXP Wetterstation
ISRAINING_NAME isRaining
NAME Regen_Notify
NEW_NAME rain_calc
NR 277
NTFY_ORDER 10-Regen_Notify
RAIN_NAME rain
STATE active
TYPE rain
Attributes:
CorrectionValue 0.8518
DayChangeTime 0750
DontUseIsRaining 1
event-on-change-reading rain_calc_d_last
group Wetter
room Wetter
verbose 0
Das von Wetterstation, wo die rain_calc.*-Readings geschrieben werden (das .*d_last zuletzt heute um 8.04, weil ich den Tageswechsel auf 7:50 Uhr habe);
nternals:
CFGFN ./FHEM/wetter.cfg
CUL_0_MSGCNT 13
CUL_0_RAWMSG A136A86701DBB9A00000000754F0EABC0733A1F40::-74.5:CUL_0
CUL_0_RSSI -74.5
CUL_0_TIME 2014-05-11 14:29:42
DEF 1DBB9A
IODev CUL_0
LASTInputDev CUL_0
MSGCNT 13
NAME Wetterstation
NR 301
STATE T: 11.7 H: 79 W: 11.5 R: 1107.725 IR: 0 WD: 290 WDR: 67.5 S: 31 B: 64
TYPE CUL_HM
lastMsg No:6A - t:70 s:1DBB9A d:000000 00754F0EABC0733A1F40
protLastRcv 2014-05-11 14:29:42
rssi_at_CUL_0 avg:-74.34 min:-75.5 max:-73.5 lst:-74.5 cnt:13
Readings:
2014-05-11 14:03:31 Activity alive
2014-05-06 21:54:06 D-firmware 1.3
2014-05-06 21:54:06 D-serialNr JEQ0532158
2014-05-11 14:25:53 Rel_Luftdruck 1003
2014-05-11 14:29:42 T_avg_day 10.0
2014-05-11 14:29:42 T_avg_month 11.1
2014-05-11 14:29:42 T_cum_day 520378.9
2014-05-11 14:29:42 T_cum_month 11177524.3
2014-05-11 14:03:32 T_max_day 12.2
2014-05-07 12:06:52 T_max_month 16.4
2014-05-11 09:03:25 T_min_day 9.0
2014-05-09 21:16:11 T_min_month 8.3
2014-05-11 14:29:42 Taupunkt 8.2
2014-05-11 14:29:43 Windchill 10.4
2014-05-11 14:29:42 brightness 64
2014-05-11 14:29:42 brightness_avg_day 20.2
2014-05-11 14:29:42 brightness_avg_month 14.2
2014-05-11 14:29:42 brightness_cum_day 1055948
2014-05-11 14:29:42 brightness_cum_month 14214240
2014-05-11 13:26:55 brightness_max_day 77.0
2014-05-07 12:19:29 brightness_max_month 198.0
2014-05-11 05:53:01 brightness_min_day 9.0
2014-05-06 22:01:22 brightness_min_month 9
2014-05-11 14:29:42 humidity 79
2014-05-11 14:03:36 humidity_avg_day 91.8
2014-05-11 14:03:36 humidity_avg_month 92.2
2014-05-11 14:03:36 humidity_cum_day 4644513
2014-05-11 14:03:36 humidity_cum_month 92267842
2014-05-11 00:40:51 humidity_max_day 97.0
2014-05-08 23:10:07 humidity_max_month 99.0
2014-05-11 14:03:36 humidity_min_day 79.0
2014-05-07 12:11:46 humidity_min_month 73.0
2014-05-11 14:29:42 isRaining 0
2014-05-11 14:29:42 rain 1107.725
2014-05-11 09:40:31 rain_calc_all cH: 0.3 lH: 0.5 cD: 0.8 lD: 8.3 IR: 1 Rnow: 1.1 Rdif: 0.300000000000068
2014-05-11 09:40:31 rain_calc_d_curr 0.8
2014-05-11 08:04:49 rain_calc_d_last 8.3
2014-05-11 08:04:49 rain_calc_d_start 942.8
2014-05-11 08:04:49 rain_calc_d_trig_tsecs 1399873800
2014-05-11 09:40:31 rain_calc_h_curr 0.3
2014-05-11 09:23:41 rain_calc_h_last 0.5
2014-05-11 09:23:41 rain_calc_h_start 943.3
2014-05-11 09:23:41 rain_calc_h_trig_tsecs 1399794600
2014-05-11 09:40:31 rain_calc_now_diff 0.300000000000068
2014-05-11 09:40:31 rain_calc_now_rate 1.1
2014-05-11 09:40:31 rain_calc_now_value 943.6
2014-05-11 09:40:31 rain_calc_tsecs 1399794031
2014-05-11 14:29:42 state T: 11.7 H: 79 W: 11.5 R: 1107.725 IR: 0 WD: 290 WDR: 67.5 S: 31 B: 64
2014-05-11 14:29:42 sunshine 31
2014-05-11 14:29:42 temperature 11.7
2014-05-11 14:29:42 windDirRange 67.5
2014-05-11 14:29:42 windDirection 290
2014-05-11 14:29:42 windSpeed 11.5
2014-05-11 14:29:42 windSpeed_avg_day 5.1
2014-05-11 14:29:42 windSpeed_avg_month 1.3
2014-05-11 14:29:42 windSpeed_cum_day 263937.8
2014-05-11 14:29:42 windSpeed_cum_month 1347940.2
2014-05-11 13:24:06 windSpeed_max_day 20.9
2014-05-11 13:24:06 windSpeed_max_month 20.9
2014-05-11 00:21:14 windSpeed_min_day 0.0
2014-05-06 22:01:22 windSpeed_min_month 0
Helper:
mId 0040
rxType 4
Io:
newChn +1DBB9A,00,01,1E
nextSend 1399811382.21439
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rssi:
At_cul_0:
avg -74.3461538461538
cnt 13
lst -74.5
max -73.5
min -75.5
Attributes:
IODev CUL_0
actCycle 001:00
actStatus alive
autoReadReg 1_restart
event-on-change-reading state,windSpeed,humidity,brightness,temperature,Rel_Luftdruck,rain,isRaining
expert 2_full
firmware 1.3
model HM-WDS100-C6-O
peerIDs
room Wetter
serialNr JEQ0532158
subType THSensor
Grüße
Christian
hmm...
mach noch bitte ein list auf das filelog device.
gerne:
Internals:
DEF ./log/RegenmengeTag-%Y.log Wetterstation.rain.*
NAME FL_RegenmengeTag
NR 144
NTFY_ORDER 50-FL_RegenmengeTag
REGEXP Wetterstation.rain.*
STATE active
TYPE FileLog
currentlogfile ./log/RegenmengeTag-2014.log
logfile ./log/RegenmengeTag-%Y.log
Attributes:
room Wetter
Am Namen siehst Du, dass ich eigentlich nur die Tagessumme aufzeichnen will, aber in diesem Stadium in Kauf nehme, erst einmal alles, was nass ist, aufzeichne. So bin ich mir recht sicher, dass es ein Thema des fehlendes Events ist.
Christian
Wirklich seltsam.. Meiner Meinung nach passen deine defines.
Sry, aber da bin ich mit meinem Latein auch am ende.
Du könntest eventuell den Modul Autor anschreiben das er mal in das Thema sieht, oder jemand anders hat noch eine Idee
Ich mir das rain Modul kurz mal angesehen. Wenn ich das halbwegs richtig verstanden hab:
Die Wetterstation misst die regenmenge, das Modul holt sich dem wert, rechnet und schreibt ein Reading in die Wetterstation.
Stimmt das?
Wenn ja, kann der FileLog nicht getriggert werden. Es kann kein nochmaliges event ausgelöst werden. Betateilchen hat das irgendwo hier (http://forum.fhem.de/index.php/topic,20317.msg138803.html#msg138803) ganz gut erklärt nur find ich das auf die schnelle nicht.
Du könntest versuchen dir den Wert in einen dummy zu schreiben und diesen mit userReading wieder in das device schreiben. Das sollte klappen.
Vorausgesetzt das was ich oben geschrieben hab stimmt.
doch natürlich geht das prinzipiell. average lässt sich ja auch mit file und dblog loggen.
dafür gibt es NotifyOrderPrefix um die reihenfolge festzulegen in der die notifyFn der module aufgerufen werden. so das ein modul noch zusätzliche readings erzeugen kann die dann zu den modulen die später kommen mit weiter gereicht werden. das ist bei rain genau so gesetzt wie bei average.
es sollte also an etwas anderem liegen und auf jeden fall ist eine lösung ohne dummy möglich.
ich kann gerade nicht nachsehen aber ich versuche mal es heute abend nachzustellen.
gruss
andre
Zitat von: cwagner am 11 Mai 2014, 10:57:58
Hier bin ich inzwischen ratlos: Das von Fossy zuletzt angepasste Modul 98_rain.pm setzte ich sehr gerne ein. "Oberflächlich" erzeugte es korrekt alle Werte, die ich brauche. Und dann kam ich auf die Idee, die tägliche Regenmenge, die ich in rain_calc_d_last als Reading finde und abfragen kann, auch in ein Log zu schreiben.
2014-05-11_08:04:49 Wetterstation rain_calc_all: cH: 0.0 lH: 1.0 cD: 0.0 lD: 8.3 IR: 1 Rnow: 0.1 Rdif: 0.199999999999932
Die Readings rain_calc_d_last oder auch rain_calc_h_last erzeugen kein Event, wie ich auch mit eventTypes feststellte.
Die gesuchten wWerte sind in der rain_calc_all enthalten.
lH: rain_calc_h_last
lD: rain_calc_d_last
Im Code wird fhem nicht mitgeteilt, das sich der Wert geändert hat, deswegen kein Event.
Gruß
Stromer-12 schrieb:
ZitatDie gesuchten wWerte sind in der rain_calc_all enthalten.
Ja, aber: rain_calc_all wird im Laufe des Tages wegen irgendeiner Änderung ungefähr 480 mal geändert und entsprechend oft in das Log geschrieben. Mir geht es ja um -1- Wert pro Tag, deshalb bin ich so "heiß" auf rain_calc_all_d. Natürlich kann man das nachher alles filtern... auf schwachen Systemen ist das aber auch eine Frage von Daten- und Systemeffizienz.
Aber Du bestätigst, was ich durch Vergleich ohne den Code zu verstehen, vermutet hatte. Es müsste die Ausgabe von rain_calc_all_d (konsequenterweise auch von rain_calc_all_h) geändert werden.
Danke dennoch für Deine Hilfeversuche
Christian
Ich habe mich auch mit rain versucht. Leider scheint es noch nicht die neuen Readingmechanismen implementiert zu haben (in beide Richtungen, schreiben und lesen)
Du könntest es auch mit statistics probieren. http://forum.fhem.de/index.php/topic,23353.0.html (http://forum.fhem.de/index.php/topic,23353.0.html) Das nutzt die neuen Mechanismen.
Ist aber nicht so explizit wie rain und muss über eine regulare Expression im gplot umgeformt werden. Aber für die tägliche Regenmenge kann statRain und statRainLast genutzt werden. statRainLast wird nur jede Stunde erzeugt.
attr Wetterstation event-on-update-reading statRainLast
@tupol
Ich wäre auch an deinem Modul Statistics für meinen Regensensor interessiert.
Wenn ich richtig gelesen habe dann wird im Augenblick nur der KS300 unterstützt.
Ich beziehe aber meine Regendaten vom Oregon RGR918 Sensor.
Lässt sich da was machen?
Ich wäre hauptsächlich an Monatsdaten / Jahresdaten (Regenmenge und Regentage) interessiert.
@cwagner
Das mit den Tageswerten über das Modul rain klappt bei mir ganz gut.
Hole ich mir aus den Werte in "rain_calc_all"
Billy
Stelle hier bitte mal Dein "list <devicename" ein.
Zitat von: tupol am 12 Mai 2014, 18:44:14
Stelle hier bitte mal Dein "list <devicename" ein.
Hier erstmal das Ergebnis von list im Original Device RGR918 über IODev RFXCOMUSB das mir die Regendaten liefert.
TR --> Total Rain liefert fortlaufend aufsummiert die l/qm .
Internals:
CODE RGR918
DEF RGR918
IODev RFXCOMUSB
NAME RGR918
NR 61
STATE RR: 1 TR: 44 BAT: ok
TIME 2014-05-13 13:59:14
TYPE OREGON
Readings:
2014-05-13 13:59:14 battery ok
2014-05-13 13:59:14 rain_flip 2
2014-05-13 13:59:14 rain_rate 1
2014-05-13 13:59:14 rain_total 44
Attributes:
IODev RFXCOMUSB
room OREGON
Das ganze wird über FHEM2FHEM und clone Dummy auf mein main FHEM System gespiegelt und mit dem Modul Rain beaufschlagt.
Jetzt das zugehörige list B_RGR918.
Internals:
CFGFN ./config.d/Wetter.cfg
CHANGED
DEF RGR918
NAME B_RGR918
NOTIFYDEV RGR918
NR 1129
NTFY_ORDER 50-B_RGR918
STATE Heute: 2.0 l/m², Gestern: 4.0 l/m²<br>Regenrate 0.0, Total:44
TYPE cloneDummy
Readings:
2014-05-13 13:59:17 RR 1 TR: 44 BAT: ok
2014-05-13 13:59:17 battery ok
2014-05-13 13:50:40 rain_calc_all cH: 0.0 lH: 1.0 cD: 2.0 lD: 4.0 IR: 1 Rnow: 0.0 Rdif: 0
2014-05-13 13:50:40 rain_calc_d_curr 2.0
2014-05-13 00:07:22 rain_calc_d_last 4.0
2014-05-13 00:07:22 rain_calc_d_start 42.0
2014-05-13 00:07:22 rain_calc_d_trig_tsecs 1400018400
2014-05-13 13:50:40 rain_calc_h_curr 0.0
2014-05-13 13:30:18 rain_calc_h_last 1.0
2014-05-13 13:30:18 rain_calc_h_start 44.0
2014-05-13 13:30:18 rain_calc_h_trig_tsecs 1399982400
2014-05-13 13:50:40 rain_calc_now_diff 0
2014-05-13 13:50:40 rain_calc_now_rate 0.0
2014-05-13 13:50:40 rain_calc_now_value 44.0
2014-05-13 13:50:40 rain_calc_tsecs 1399981840.32859
2014-05-13 13:59:17 rain_flip 2
2014-05-13 13:59:17 rain_rate 1
2014-05-13 13:59:17 rain_total 44
2014-05-13 13:59:17 state active
Attributes:
event-min-interval rain_total:1200,rain_flip:1200,rain_rate:1200,RR:1200,battery:1200,state:1200
event-on-change-reading rain_flip,rain_rate,battery,rain_total
room 2_Wetter
stateFormat Heute: rain_calc_d_curr l/m², Gestern: rain_calc_d_last l/m²<br>Regenrate rain_calc_now_rate, Total:rain_total
Optimal wäre wenn ich das Modul Statistics auf dieses Clone Dummy anwenden könnte.
Danke
Billy
ich habe rain_total aufgenommen. Sollte morgen im update sein.
Danke. :)
Billy
Zitat von: tupol am 13 Mai 2014, 22:11:35
ich habe rain_total aufgenommen. Sollte morgen im update sein.
Habs mal eingespielt, scheint zu laufen. :)
Habe jetzt den neuen Eintrag:
statRain_total Hour: 0 Day: 0 Month: 0 Year: 0 (since: 2014-05-13_22:47:15 ) 2014-05-13 22:47:15
Übrigens --> OREGON: kennt auch wind! könnte man auch noch integrieren?OREGON: humidity, rain, temperature, wind
Gruß Billy
windSpeed sollte im heutigen fhem update drin sein. Seltsam, in der commandref ist die Änderung nicht zu sehen.
Zitat von: tupol am 14 Mai 2014, 07:07:35
windSpeed sollte im heutigen fhem update drin sein. Seltsam, in der commandref ist die Änderung nicht zu sehen.
Wenn ich das richtig sehe, fehlt Wind im OREGON Teil. Brauche ich zwar nicht, nur zur Vollständigkeit.
my @knownDeviceReadings = (
["CUL_WS", "humidity", 1, 0]
,["CUL_WS", "temperature", 1, 1]
,["dummy", "state", 3, 1]
,["FBDECT", "current", 1, 3]
,["FBDECT", "energy", 2, 0]
,["FBDECT", "power", 1, 1]
,["FBDECT", "voltage", 1, 1]
,["FRM_IN", "count", 2, 0]
,["FRM_IN", "power", 1, 2]
,["FS20", "state", 3, 1]
,["KS300", "humidity", 1, 0]
,["KS300", "temperature", 1, 1]
,["KS300", "wind", 1, 0]
,["KS300", "rain", 2, 1]
,["OREGON", "humidity", 1, 1]
,["OREGON", "rain", 2, 1]
,["OREGON", "temperature", 1, 1]
Gruss Billy
Das ist noch das alle Modul. Das neue ist im SVN aber anscheint noch nicht in FHEM kopiert. Das hat keine Beschränkungen auf den Gerätetyp sondern nur auf das Reading.