Modul rain: Erzeugung von Events

Begonnen von cwagner, 11 Mai 2014, 10:57:58

Vorheriges Thema - Nächstes Thema

cwagner

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
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

fhainz

#1
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

cwagner

#2
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
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

fhainz

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





cwagner

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
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

fhainz

hmm...

mach noch bitte ein list auf das filelog device.

cwagner

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
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

fhainz

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

fhainz

#8
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 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.

justme1968

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

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

stromer-12

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ß
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

cwagner

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
PI 2B+/5 Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

tupol

#12
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 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

Billy

@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
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

tupol

Stelle hier bitte mal Dein "list <devicename" ein.