[erledigt] zu dumm für statistics modul

Begonnen von the ratman, 14 März 2023, 10:54:44

Vorheriges Thema - Nächstes Thema

the ratman

hiho, ich mal wieder *g*

ich habe eine wetterstation von homematic HM-WDS100-C6-O-2 . damit ich weiß, wie viel es heute/aktuelle stunde geregnet hat, verwende ich das uralt modul "rain".
ich glaub', ich hab das hier irgendwo schon mal erwähnt, aber das ding baut mir gerne mal minus-werte in seine readings, was wunderschöne regenmengen-plots ergibt.

jetzt wollte ich umstellen auf das statistics modul, aber ich steh' irgendwie mal wieder wie 'ne kuh vorm zaun ... da wäre grundlegende hilfe von euch erbeten, um mit statistics mein rain-modul zu ersetzen.
bisheriges verständnis ist da grade 0 vorhanden.
→do↑p!dnʇs↓shit←

betateilchen

Zitat von: the ratman am 14 März 2023, 10:54:44
aber das ding baut mir gerne mal minus-werte in seine readings, was wunderschöne regenmengen-plots ergibt.

Warum schließt Du negative Werte nicht einfach direkt beim Logging aus?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

the ratman

wenn du mir sagst, wie und wo am besten ... und vor allem: die werte müssen ja woher kommen. wäre in meinen augen also nicht wirklich eine fehlerbehebung.
weshalb ich mittlerweile tatsächlich lieber das statsitc modul bemühen wollen würde.
denke, das wird ein bissi besser betreut, als das uralt-rain-modul *g*.

wenn ichs richtig gelesen hab, würde ein "aktuelles" rain-modul wohl auch generell anders programmiert heutzutage. heißt für mich: irgendwann, nach irgendeinem fhem-update, geht das gar nicht mehr. dann muss ich auch umsteigen, nur unter "stress".
→do↑p!dnʇs↓shit←

betateilchen

Zitat von: the ratman am 14 März 2023, 13:27:25
wenn du mir sagst, wie und wo am besten

Kommt darauf an, wie Du das Logging machst.

FileLog: da kannst Du mit dem Attribut "acceptedRange" arbeiten
DbLog: da kannst Du das Attribut DbLogValueFn verwenden

Beides in der commandref beschrieben.

Zitat von: the ratman am 14 März 2023, 13:27:25
heißt für mich: irgendwann, nach irgendeinem fhem-update, geht das gar nicht mehr.

Da wäre ich nicht so pessimistisch. Grundsätzlich glaube ich nicht daran, dass sich an den Mechanismen für events in FHEM irgendwas ändern wird.
Das Modul rain ist diesbezüglich so einfach gestrickt, dass es auch in einigen Jahren noch funktionieren sollte.

Zitat von: the ratman am 14 März 2023, 13:27:25
und vor allem: die werte müssen ja woher kommen. wäre in meinen augen also nicht wirklich eine fehlerbehebung.

naja - genau das "woher kommen" ist ja der Punkt, um den es geht. Vermutlich werden die negativen Werte nicht vom rain-Modul erzeugt, sondern vom Sensor selbst. Deshalb könnte es durchaus sein, dass diese Werte auch in statistics ungewollt Einfluß nehmen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

the ratman

#4
dblog hab ich. werde ich mal als "plan b" speichern, weil jetzt wäre ich mal aufs statistics modul neugierig. ich will nicht unbedingt die nächsten tage mit fehler suchen verbringen, außer, man würde damit das rain-modul auf aktuellen stand bringen und solcherlei probleme wegkriegen (egal, was schuld ist)

Zitat von: betateilchen am 14 März 2023, 13:36:04~~~snip~~~ naja - genau das "woher kommen" ist ja der Punkt, um den es geht. Vermutlich werden die negativen Werte nicht vom rain-Modul erzeugt, sondern vom Sensor selbst. Deshalb könnte es durchaus sein, dass diese Werte auch in statistics ungewollt Einfluß nehmen.
DAS wäre eben sehr interessant, aber ich krieg' das nicht hin, kann nur sagen:
ich hab da echt noch nie was negatives von der wetterstation selber gesehen. ich treibe mich im modul dann ja herum, wenn wieder mal "minus" steht. die wetterstation liefert eigentlich nur fortlaufende werte, die irgendwann mal "überdrehen" und wieder bei 0 anfangen.
tritt das problem auf setz' ich einfach alle aktuellen readings auf 0, was aber auch nicht immer klappt, hab ich feststellen dürfen.

ein teil des listings der wetterstation:   Helper:
     DBLOG:
       brightness:
         logdb:
           TIME       1678799228.38727
           VALUE      159
       dewpoint:
         logdb:
           TIME       1678799228.38727
           VALUE      1.9
       humidity:
         logdb:
           TIME       1678799228.38727
           VALUE      57
       temperature:
         logdb:
           TIME       1678799228.38727
           VALUE      10
       temperature_alt:
         logdb:
           TIME       1678799228.38727
           VALUE      10.1
       temperature_komma:
         logdb:
           TIME       1678799228.38727
           VALUE      10
       windDirection:
         logdb:
           TIME       1678799228.38727
           VALUE      105
       windSpeed:
         logdb:
           TIME       1678799228.38727
           VALUE      21.2
   OLDREADINGS:
     2023-03-14 13:59:16   temperature     10.1
   READINGS:
     2023-03-14 10:08:21   Activity        alive
     2022-10-15 03:00:41   D-firmware      1.6
     2022-10-15 03:00:41   D-serialNr      OEQ1864809
     2023-03-14 09:58:22   IODev           hmLan2
     2023-03-14 14:07:08   absoluteHumidity 5.3
     2023-03-14 14:07:08   battery         ok
     2023-03-14 14:07:08   brightness      159
     2023-03-13 19:30:39   commState       CMDs_done
     2023-03-14 14:07:08   dewpoint        1.9
     2023-03-14 14:07:08   humidity        57
     2023-03-14 14:07:08   isRaining       0
     2023-03-13 19:30:39   powerOn         2023-03-13 19:30:39
     2023-03-14 14:07:08   rain            13.275
     2023-03-14 14:07:08   rain_calc_all   cH: 0.0 lH: 0.0 cD: 13.3 lD: 0 IR: 1 Rnow: 0.0 Rdif: 0
     2023-03-14 14:07:08   rain_calc_d_curr 13.3
     2023-03-14 10:39:34   rain_calc_d_last 0
     2023-03-14 10:40:04   rain_calc_d_start 0
     2023-03-14 00:01:31   rain_calc_d_trig_tsecs 1678834860
     2023-03-14 14:07:08   rain_calc_h_curr 0.0
     2023-03-14 14:07:08   rain_calc_h_last 0.0
     2023-03-14 14:07:08   rain_calc_h_start 13.3
     2023-03-14 14:07:08   rain_calc_h_trig_tsecs 1678798800
     2023-03-14 14:07:08   rain_calc_now_diff 0
     2023-03-14 14:07:08   rain_calc_now_rate 0.0
     2023-03-14 14:07:08   rain_calc_now_value 13.3
     2023-03-14 14:07:08   rain_calc_tsecs 1678799228.37767
     2023-03-13 19:30:39   recentStateType info
     2023-03-14 14:07:08   state           T: 10 H: 57 W: 21.2 R: 13.275 IR: 0 WD: 105 WDR: 67.5 S: 142 B: 159
     2023-03-14 14:07:08   sunshine        142
     2023-03-14 14:07:08   temperature     10
     2023-03-14 14:07:08   temperature_alt 10.1
     2023-03-14 14:07:08   temperature_komma 10
     2023-03-13 19:30:39   unknown         06000030
     2023-03-14 14:07:08   windDirRange    67.5
     2023-03-14 14:07:08   windDirection   105
     2023-03-14 14:07:08   windSpeed       21.2
   helper:
     HM_CMDNR   186
     lastMsgTm  1678799228.36928
     mId        00AE
     peerFriend peerAct,peerVirt
     peerIDsState complete
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1678784320.07819
       TmplTs     1678784320.07819
       cmdKey     1:1:0::wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    4k12v_schalter1,4k12v_schalter2,4k12v_schalter3,4k12v_schalter4,schlafzimmer_rollo,solaranlage_kuehlung,vccu
         tplChan   
         tplDel     
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     io:
       flgs       0
       newChn     +62E4AE,00,00,00
       nextSend   1678799228.46404
       rxt        0
       vccu       vccu
       p:
         62E4AE
         00
         00
         00
       prefIO:
         hmLan2
     mRssi:
       mNo        BA
       io:
         hmLan2:
           -56
           -56
     peerIDsH:
       00000000   broadcast
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_hmLan2:
         avg        -59.4489795918367
         cnt        98
         lst        -60
         max        -52
         min        -72
     tmpl:
Attributes:
   IOgrp      vccu:hmLan2
   actCycle   000:10
   actStatus  alive
   alias      wetterstation
   autoReadReg 0_off
   expert     defReg,allReg,rawReg,templ
   firmware   1.6
   group      sensoren
   icon       weather_station
   model      HM-WDS100-C6-O-2
   oldreadings temperature
   peerIDs    00000000
   room       homematic
   serialNr   OEQ1864809
   stateFormat <font color="darkred"><b>regen</b>&nbsp;</font>rain_calc_d_curr&nbsp;mm<br>
<br>
temp:temperature&nbsp;°c&nbsp;<font color="#600">||</font>&nbsp;lf:humidity&nbsp;%<br>
tp:dewpoint&nbsp;°c&nbsp;(abs:absoluteHumidity&nbsp;%)
   subType    THSensor
   userReadings temperature_komma:temperature.* { my $val = (ReadingsVal($name,"temperature",0)); $val =~ s/\./,/g; return $val;},
temperature_alt:temperature.* { OldReadingsNum($name,"temperature",0); }



das schaut dann so aus:
1) (rote balken 50% sind mit heizung des regensensors aus, mit 100% höhe ist die heizung an (ich schalt in der nacht ab))
2) beim gestrigen plot hab ich in der zeit des regens mehrfach alle werte vom rain-modul in der wetterstation mit "minus" auf 0 gesetzt. was dann in der datenbank steht, sieht man ja ...
→do↑p!dnʇs↓shit←

the ratman

o.k. mir ist übrigens grade klar geworden, warum keiner was zur hilfe beitragen will ...
das statistics modul ist ja idiotensicher. vielleicht doch vorher probieren und dann fragen *lach*
→do↑p!dnʇs↓shit←

RalfRog

Zitat von: betateilchen am 14 März 2023, 13:36:04
...
naja - genau das "woher kommen" ist ja der Punkt, um den es geht. Vermutlich werden die negativen Werte nicht vom rain-Modul erzeugt, sondern vom Sensor selbst. Deshalb könnte es durchaus sein, dass diese Werte auch in statistics ungewollt Einfluß nehmen.

Ob mit dem statisitcs-Module ne Änderung eintritt oder wie angenommen "vom Sensor selbst" wäre ne interessante Erkenntnis  8)
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

sind ma schon 2 interessierte ... ist natürlich klar: gestern regen, heute perfekter sonnenschein ...
→do↑p!dnʇs↓shit←

the ratman

#8
könnte was werden. hab noch 1 problem - siehe markierung ... eigentlich müsste die "es regnet" = rote flächen, ja noch bis mindestens zur letzten stufe der blauen regenmengen-anzeige gehen. kann ja nicht ohne regen mehr wasser werden *g* das ging "früher" problemlos.
gibts da vielleicht verzögerungen beim statistik-modul?
Du darfst diesen Dateianhang nicht ansehen.

nachtrag:
aber mitternacht ohne regen hat er schon brav geresettet.
da fehlt also nur mehr eine mitternacht, in der es regnet
→do↑p!dnʇs↓shit←

the ratman

zu früh gefreut ...

wo kommt das nu her, wenns nicht am regen-modul und auch nicht am statistik-modul liegt?
oder an beiden?
er zählt scheints auch richtig, nur halt mit einem minus davor.
mitternacht hat er auch immer brav auf 0 gesetzt.

wie und wo könnte ein "workaround" aussehen und wirken?
also z.b. jedes minus bei rain wegmachen.
→do↑p!dnʇs↓shit←

RalfRog

#10
Zitat von: betateilchen am 14 März 2023, 12:04:39Warum schließt Du negative Werte nicht einfach direkt beim Logging aus?
Wäre betateilchens Vorschlag nicht ne Möglichkeit?

Oder eben die Forschungsarbeit ob die Werte nicht schon so vom Sensor kommen. Ist das nicht sowieso das Wahrscheinlichste?
Gibts die Möglichkeit über verbose 5 im Log zu versuchen die Daten zu interpretieren.

Was der Senso falsch schickt bekommst du ja weiter hinten nicht mehr gerade gezogen - es sei denn negative Werte werden weg geschmissen.  ;)

Zitat von: the ratman am 24 März 2023, 08:36:03wie und wo könnte ein "workaround" aussehen und wirken?
also z.b. jedes minus bei rain wegmachen.

Mal ins Unreine: wenn der Zahlenwert plausibel aber mit falschem Vorzeichen ist ein userreading was per int-Funktion das Vorzeichen wegmacht.

Oder.
Zitat von: betateilchen am 14 März 2023, 13:36:04Kommt darauf an, wie Du das Logging machst.

FileLog: da kannst Du mit dem Attribut "acceptedRange" arbeiten
DbLog: da kannst Du das Attribut DbLogValueFn verwenden

Beides in der commandref beschrieben.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

betateilchen

Zitat von: RalfRog am 24 März 2023, 18:32:58Mal ins Unreine: wenn der Zahlenwert plausibel aber mit falschem Vorzeichen ist ein userreading was per int-Funktion das Vorzeichen wegmacht.

nicht int() sondern abs()...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

the ratman

zumindest schauts für mich so aus, als ob ein minus nur 1 mal kommt, also dann alle weiteren werte wieder richtig hoch zählen. das beruhigt mich mal, wenns denn wirklich so ist.

verbose 5 wird sicher witzig. wenns wie mit dem alten rain-modul ist, kann das gerne mal ein paar regenschauer andauern, bis wieder mal ein minus-wert alles versaut. wundert mich sowieso, dass ich schon beim ersten regen mein minus kriege *g*

ZitatWäre betateilchens Vorschlag nicht 'ne Möglichkeit?
ZitatMal ins Unreine: wenn der Zahlenwert plausibel aber mit falschem Vorzeichen ist ein userreading was per int-Funktion das Vorzeichen wegmacht.
sicher!
aber du sprichst hier mit der programmier-nulpe no.1, da bräuchte ich also wieder mal dringend hilfe.


was müsste ich also genau eingeben, wenn ich, sagen wir mal jedes reading mit "stat" beginnend generell mal ein eventuelles minus wegnehme?
oder besser? wenn du recht hast und der fehler kommt von meiner wetterstation, müsste ich eher das reading "rain" bereinigen, gar nicht, die statistik?

wäre also folgende vorgehensweise brauchbar?
1) mal das rain-reading bereinigen, gibts dann immer noch fehler
2) die stat-readings bereinigen, gibts dann immer noch fehler
3) die wetterstation sprengen und sich was gscheites kaufen ...
→do↑p!dnʇs↓shit←

betateilchen

#13
Woher willst Du eigentlich wissen, dass ein aus einem negativen Wert erzeugter positiver Wert "richtig" ist?

Warum gehst Du nicht den einfachsten (und bereits mehrfach vorgeschlagenen) Weg und loggst die negativen Werte einfach überhaupt nicht?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

the ratman

genau das will ich ja *g* ich geb dir ja schon seit deiner ersten wortmeldung recht.
wollt's ja nur berichten, was meiner meinung nach passiert und was ich dazu denke (so als qualitätskontrolle *g*), falls ihr da schon mal was gehört hättet.

was ich eben nicht weiß (wie meistens) ist, wie ich den negativen wert weg-rechnen kann.
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 25 März 2023, 09:04:53genau das will ich ja *g* ich geb dir ja schon seit deiner ersten wortmeldung recht.
wollt's ja nur berichten, was meiner meinung nach passiert und was ich dazu denke (so als qualitätskontrolle *g*), falls ihr da schon mal was gehört hättet.

was ich eben nicht weiß (wie meistens) ist, wie ich den negativen wert weg-rechnen kann.

Du definierst dir in deiner Wetterstation ein userReading, bei dem du bei neg. Werten undef lieferst, sonst den Wert selbst:

userReadings rain_new {ReadingsVal($name,"rain",0) < 0 ? undef : ReadingsVal($name,"rain",0)}

Loggen musst du dann das neue Reading und nicht mehr das alte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

#16
na ja, loggen darf ich das nicht, weil "rain" sammelt ja die menge ohne zu mitternacht zu resetten. das macht erst die statistik.
d.h., ich muss jetzt dem statisitk modul beibringen, dass es rain_new nehmen soll ...

wäre alles viel einfacher, wenn man gleich "rain" beeinflussen könnte ....
→do↑p!dnʇs↓shit←

betateilchen

Deine Beratungsresistenz hält mich gerade davon ab, Dir weiter helfen zu wollen.
Egal, was Dir vorgeschlagen wird, Du meinst, alles besser zu wissen.

Sehr schade.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

the ratman

#18
wieso?
ich mach' doch eh alles, wie ihrs wollt.

allerdings bringt mir das loggen von "rain_new" nix, weil rain eben einfach weiter zählt (und somit "rain_new" auch, nur endlich wirklich richtig) über mitternacht. darum brauch man doch das statistik-modul erst. ich logge also nach wie vor "statRainDay".
rain_new ist also eh richtig, nur muss das statistik modul natürlich jetzt "rain_new" zum rechnen nehmen und nicht das original "rain".

was ist da bitte beratungsresistent?

nachtrag: hab mal schnell ein paar werte mit rain_new in die db schreiben lassen.

das schaut dann so aus:
Du darfst diesen Dateianhang nicht ansehen.
in blau: die (derzeit) richtigen werte aus dem statistik modul
in grau: rain_new mit den werten von "anbeginn" seiner letzten nullung (die die station höchst selbst macht und nichts mit dem stats-modul zu tun hat).
in rot: die anzeige eines regensensors, wann es genau geregnet hat
→do↑p!dnʇs↓shit←

RalfRog

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

betateilchen

Zitat von: RalfRog am 25 März 2023, 16:28:36Du loggst mit DBlog?

Das wissen wir doch seit dem 5. Beitrag hier im Thread?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RalfRog

#21
Jo... ::)

Ich bin der Einäugige  ;)
So wie ich das sehe würde ich in dem Device (da müsste es ja die Attribute DbLogExclude, DbLogInclude, DbLogValueFn geben) per Attribut so etwas versuchen:
DbLogValueFn { if ($READING eq "rain" and $VALUE < 0){$VALUE=0;}}

Oder was auch immer du aus dem negativen Wert machen möchtest.

Oder klappt das eigentlich #15?
https://forum.fhem.de/index.php?msg=1269556
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

ach, das ginge auch noch in der db?! hatte ich natürlich wieder mal 0 auf dem radar ... wäre natürlich auch ein schön einfach weg *g*

Oder was auch immer du aus dem negativen Wert machen möchtest.
ja, das ist halt immer noch 'ne frage, die ich grundlegend nicht kapiert hab bisher:
a) schreibt mir meine wetterstion nur einmalig 'nen falschen wert raus und der nächste wäre wieder ein positiver, dann könnte man's so machen.
b) oder schreibt die dann von dem minus-wert ausgehend immer kleinere minus raus - je nach regenmenge halt, bis er eben wieder bei 0 ist. dann würde es warscheinlich nicht so einfach klappen.

und ja, mein statistik-modul schreibt halt dann auch immer noch nach dem "rain"-wert ihre statisitk-readings. ich trau' mich aber wetten, da könnte ich wenigstens den rain_new derweil erzwingen irgendwie (noch neu für mich, das modul). müsste ich halt alle anzeigen, plots usw. ändern.
→do↑p!dnʇs↓shit←

betateilchen

Zitat von: the ratman am 25 März 2023, 20:02:10ach, das ginge auch noch in der db?! hatte ich natürlich wieder mal 0 auf dem radar

Du musst das nicht auf dem Radar habe, Du musst einfach lesen, was man Dir antwortet.

DbLogValueFn() habe ich schon am Anfang des Threads vorgeschlagen:
https://forum.fhem.de/index.php?msg=1268168
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RalfRog

Zitat von: betateilchen am 25 März 2023, 20:13:43DbLogValueFn() habe ich schon am Anfang des Threads vorgeschlagen:
https://forum.fhem.de/index.php?msg=1268168

Ich wollte nett sein und es noch detailiierter ausführen.

Jetzt lieber Rattenman probier mal was.

Gruß und schönes WE
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

betateilchen

Naja, aber Dein Vorschlag, eine 0 zu loggen ist ja auch keine Lösung, deshalb hatte ich anfangs vorgeschlagen, die negativen Werte einfach gar nicht zu loggen, um die plots nicht zu verschandeln.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RalfRog

Sollte ein Schubs für etwas konkrets sein. Hast sicher recht - nix loggen ist besser.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

sorry betateilchen, hab ich tatsächlich gekonnt überlesen. war keine absicht!

bin schon am probieren. mal schritt für schritt, mit option auf andere möglichkeiten.

vorgehensweise ist also mal vom userreading rain_new die stats zu kriegen, was ja dank des moduls wieder dödel einfach ist. krieg schon mal von rain_new die statistikwerte.
--> jetzt warte ich noch, ob ich die auch als singularReadings kriege. erscheinen derzeit (noch?) nicht. hoffe, das ist nicht wieder so n spaß mit "userreadings gehen da nicht" *g*

dblog halt ich mir mal als notfall in der hinterhand.
→do↑p!dnʇs↓shit←

RalfRog

Zitat von: the ratman am 25 März 2023, 20:31:53... hoffe, das ist nicht wieder so n spaß mit "userreadings gehen da nicht" *g*

geht, mach ich auch
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

dann bin ich sicher wieder zu blöd für ... ich krieg' da jetzt mal nur:
statRain_newDay 25.075: 00:29:18 25.075_Count: 1 (since: 2023-03-25_20:05:24) 2023-03-25 20:34:42
statRain_newHour 25.075: 00:00:00 25.075_Count: 1 (since: 2023-03-25_20:34:42) 2023-03-25 20:34:42
statRain_newMonth 25.075: 00:29:18 25.075_Count: 1 (since: 2023-03-25_20:05:24) 2023-03-25 20:34:42
statRain_newYear 25.075: 00:29:18 25.075_Count: 1 (since: 2023-03-25_20:05:24) 2023-03-25 20:34:42
bei folgenden einstellungen im statistics modul (rain macht er die singular readings 100% richtig):
durationPeriodHour 1
durationReadings rain_new
singularReadings wetterstation:rain:Delta:(Hour|Day)|wetterstation:rain_new:Delta:(Hour|Day)
→do↑p!dnʇs↓shit←

RalfRog

Bin jetzt nicht der Statistic Held.
Aber wenn rain gut aussieht könnte es eventuell daran liegen, dass du durationReadings Rain_new rain_new nutzt. Wie sieht es denn ohne duration aus - habe das nirgendwo verwendet und kann nicht sagen wie sich das auswirkt.

CommandRef:
durationReadings <Gerätewerte>
Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

#31
dachte, die brauch ich, weil bei singularReadings  steht:
Regulärer Ausdruck statistischer Werte, die zusätzlich auch als einzelne Werte gespeichert werden sollen

1) alle stat.* in der wetterstion gelöscht
2) im statistikmodul das durationReadings rain_new gelöscht und neue stat berechnen lassen.
3) dann kommt gar kein statRain_new[irgendwas] mehr
4) "durationReadings rain_new" wieder eingetragen, kommen auch sofort wieder die 4 readings, die singular nicht.

vielleicht mal die stunde abwarten, oder hast du in deinem gerät irgendwas eingetragen wegen der userreadings?
→do↑p!dnʇs↓shit←

RalfRog

So habe ich es gemacht

An meinem Shelly Device gibt es diese Readings:
  • energy = OriginalReading
  • energyCum = Userreading
  • sowie diese Readings aufgrund der Definition im StatModul:
    statEnergyCum            (enthält die Werte für Hour: Day: Month: Year: aufgrund Attribut deltaReadings)
    statEnergyCumDay       (aufgrund singularReadings)
    statEnergyCumMonth   (aufgrund singularReadings)
    statEnergyCumYear      (aufgrund singularReadings)

    statEnergyCumLast            (enthält die Werte für Hour: Day: Month: Year: aufgrund Attribut deltaReadings)
    statEnergyCumDayLast       (aufgrund singularReadings)
    statEnergyCumMonthLast   (aufgrund singularReadings)
    statEnergyCumYearLast      (aufgrund singularReadings)



Im StatModul nutze ich :

  • ignoreDefaultAssignments 1
    Ignoriert die Standardzuordnung von Gerätewerten zu Statistik-Typen..
    D.h., nur die Gerätewerte, die über Attribute den Statistik-Typen zugeordnet sind, werden ausgewertet.

  • deltaReadings energyCum 
    Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird

  • singularReadings  shelly_plug_s_df2674:energyCum:Delta:(Day|Month|Year)

        Statistik-Typ: Min|Avg|Max|Delta|DurationState|Tendency
        Zeitraum: Hour|Day|Month|Year|1h|2h|3h|6h

    Regulärer Ausdruck statistischer Werte, die zusätzlich auch als einzelne Werte gespeichert werden sollen. Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
    Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als Statistiktyp eingesetzt werden.

Aus meiner Sicht arbeiten die Attribute deltaReadings & singularReadings zusammen
und Duration wäre anders zu defineiren.

Mit ignoreDefaultAssignments halte ich mit unpassende Standarddefinitionen vom Hals.

Gruß



FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

the ratman

#33
langsam wirds lustig ...

hab dich jetzt nachgemacht und sobald ich ignoreDefaulAssignments auf 1 setze, verliere ich auch vom rain reading die singularreadings.
hab zum testen sicherheitshalber sowohl deltareadings, als auch durationreadings mit "rain,rain_new" gehabt.
lösche ich ignoreDefaulAssignments, kommen sofort auch wieder die singularreadings von rain, aber nicht von rain_new.

ich bin stark verwirrt ...

nur zur sicherheit:
Internals:
   DEF        wetterstation
   DEV_REGEXP wetterstation
   FUUID      64119157-f33f-f543-da14-950c352606ab3f13
   NAME       stat_regen
   NOTIFYDEV  global,wetterstation
   NR         378
   NTFY_ORDER 10-stat_regen
   PREFIX     stat
   STATE      Updated stats for: wetterstation
   TYPE       statistics
   eventCount 588
   READINGS:
     2023-03-25 09:02:39   monitoredDevicesCUL_HM wetterstation
     2023-03-26 06:59:55   nextPeriodChangeCalc 2023-03-26 07:59:55
     2023-03-26 07:52:31   state           Updated stats for: wetterstation
   fhem:
     modulVersion $Date: 2022-07-12 07:25:06 +0200 (Tue, 12 Jul 2022) $
     nextPeriodChangeTime 1679810395
Attributes:
   alias      regenstatistik
   deltaReadings rain_new
   durationPeriodHour 1
   durationReadings rain_new
   group      temperaturhilfen
   icon       weather_rain_gauge
   room       logik und schalten
   singularReadings wetterstation:rain:Delta:(Hour|Day)|wetterstation:rain_new:Delta:(Hour|Day)
Internals:
   DEF        62E4AE
   FUUID      5c62c6bf-f33f-0f9e-8d92-c33bb22adf9d44b4
   IODev      hmLan2
   LASTInputDev hmLan2
   MSGCNT     517
   NAME       wetterstation
   NR         124
   NTFY_ORDER 48-wetterstation
   STATE      <font color="darkred"><b>regen</b>&nbsp;</font>0&nbsp;mm<br>
<br>
temp:8.6&nbsp;°c&nbsp;<font color="#600">||</font>&nbsp;lf:81&nbsp;%<br>
tp:5.5&nbsp;°c&nbsp;(abs:7.0&nbsp;%)
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   eventCount 539
   hmLan2_MSGCNT 517
   hmLan2_RAWMSG 05000040B4867062E4AE0000000056518056C0613AD100
   hmLan2_RSSI -64
   hmLan2_TIME 2023-03-26 07:52:31
   lastMsg    No:B4 - t:70 s:62E4AE d:000000 0056518056C0613AD100
   protCondBurst forced_off
   protLastRcv 2023-03-26 07:52:31
   protRcv    517 last_at:2023-03-26 07:52:31
   rssi_at_hmLan2 cnt:517 min:-72 max:-54 avg:-59.11 lst:-64
   Helper:
     DBLOG:
       brightness:
         logdb:
           TIME       1679809951.41184
           VALUE      0
       dewpoint:
         logdb:
           TIME       1679809951.41184
           VALUE      5.5
       humidity:
         logdb:
           TIME       1679809951.41184
           VALUE      81
       rain_new:
         logdb:
           TIME       1679741667.49782
           VALUE      24.19
       statRainDay:
         logdb:
           TIME       1679809951.41184
           VALUE      0
       statRainDayLast:
         logdb:
           TIME       1679785195.01978
           VALUE      0.000
       temperature:
         logdb:
           TIME       1679809951.41184
           VALUE      8.6
       temperature_alt:
         logdb:
           TIME       1679809951.41184
           VALUE      8.7
       temperature_komma:
         logdb:
           TIME       1679809951.41184
           VALUE      8,6
       windDirection:
         logdb:
           TIME       1679809951.41184
           VALUE      290
       windSpeed:
         logdb:
           TIME       1679809951.41184
           VALUE      9.7
   OLDREADINGS:
     2023-03-26 07:50:28   temperature     8.7
   READINGS:
     2023-03-25 09:12:23   Activity        alive
     2022-10-15 03:00:41   D-firmware      1.6
     2022-10-15 03:00:41   D-serialNr      OEQ1864809
     2023-03-25 09:02:23   IODev           hmLan2
     2023-03-26 07:52:31   absoluteHumidity 7.0
     2023-03-26 07:52:31   battery         ok
     2023-03-26 07:52:31   brightness      0
     2023-03-24 04:13:06   commState       CMDs_done
     2023-03-26 07:52:31   dewpoint        5.5
     2023-03-26 07:52:31   humidity        81
     2023-03-26 07:52:31   isRaining       1
     2023-03-24 04:13:06   powerOn         2023-03-24 04:13:06
     2023-03-26 07:52:31   rain            25.37
     2023-03-26 07:52:31   rain_new        25.37
     2023-03-24 04:13:06   recentStateType info
     2023-03-26 07:52:31   statBrightnessDay Min: 0 Avg: 0 Max: 0 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statBrightnessHour Min: 0 Avg: 0 Max: 0 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statBrightnessMonth Min: 0 Avg: 0 Max: 0 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statBrightnessYear Min: 0 Avg: 0 Max: 0 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statHumidityDay Min: 81 Avg: 81 Max: 81 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statHumidityMonth Min: 81 Avg: 81 Max: 81 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statHumidityYear Min: 81 Avg: 81 Max: 81 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statRain        Hour: 0 Day: 0 Month: 0 Year: 0 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statRainDay     0
     2023-03-26 07:52:31   statRainHour    0
     2023-03-26 07:42:54   statRainMonth   25.075: 00:00:17 25.075_Count: 1 (since: 2023-03-26_07:42:37)
     2023-03-26 07:42:54   statRainYear    25.075: 00:00:17 25.075_Count: 1 (since: 2023-03-26_07:42:37)
     2023-03-26 07:52:31   statRain_newDay 25.37: 00:00:00 25.37_Count: 1 (since: 2023-03-26_07:52:31)
     2023-03-26 07:52:31   statRain_newHour 25.37: 00:00:00 25.37_Count: 1 (since: 2023-03-26_07:52:31)
     2023-03-26 07:52:31   statRain_newMonth 25.37: 00:00:00 25.37_Count: 1 (since: 2023-03-26_07:52:31)
     2023-03-26 07:52:31   statRain_newYear 25.37: 00:00:00 25.37_Count: 1 (since: 2023-03-26_07:52:31)
     2023-03-26 07:52:31   statTemperatureDay Min: 8.6 Avg: 8.6 Max: 8.6 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statTemperatureMonth Min: 8.6 Avg: 8.6 Max: 8.6 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statTemperatureYear Min: 8.6 Avg: 8.6 Max: 8.6 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statWindSpeedDay Min: 9.7 Avg: 9.7 Max: 9.7 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statWindSpeedHour Min: 9.7 Avg: 9.7 Max: 9.7 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statWindSpeedMonth Min: 9.7 Avg: 9.7 Max: 9.7 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   statWindSpeedYear Min: 9.7 Avg: 9.7 Max: 9.7 (since: 2023-03-26_07:52:31 )
     2023-03-26 07:52:31   state           T: 8.6 H: 81 W: 9.7 R: 25.37 IR: 1 WD: 290 WDR: 67.5 S: 209 B: 0
     2023-03-26 07:52:31   sunshine        209
     2023-03-26 07:52:31   temperature     8.6
     2023-03-26 07:52:31   temperature_alt 8.7
     2023-03-26 07:52:31   temperature_komma 8,6
     2023-03-24 04:13:06   unknown         06000030
     2023-03-26 07:52:31   windDirRange    67.5
     2023-03-26 07:52:31   windDirection   290
     2023-03-26 07:52:31   windSpeed       9.7
   helper:
     HM_CMDNR   180
     _98_statistics stat_regen
     lastMsgTm  1679809951.39785
     mId        00AE
     peerFriend peerAct,peerVirt
     peerIDsState complete
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1679731359.51381
       TmplTs     1679731359.51381
       cmdKey     1:1:0::wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    4k12v_schalter1,4k12v_schalter2,4k12v_schalter3,4k12v_schalter4,schlafzimmer_rollo,solaranlage_kuehlung,vccu
         tplChan   
         tplDel     
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     io:
       flgs       0
       newChn     +62E4AE,00,00,00
       nextSend   1679809951.49181
       rxt        0
       vccu       vccu
       p:
         62E4AE
         00
         00
         00
       prefIO:
         hmLan2
     mRssi:
       mNo        B4
       io:
         hmLan2:
           -60
           -60
     peerIDsH:
       00000000   broadcast
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_hmLan2:
         avg        -59.110251450677
         cnt        517
         lst        -64
         max        -54
         min        -72
     tmpl:
Attributes:
   IOgrp      vccu:hmLan2
   actCycle   000:10
   actStatus  alive
   alias      wetterstation
   autoReadReg 0_off
   expert     defReg,allReg,rawReg,templ
   firmware   1.6
   group      sensoren
   icon       weather_station
   model      HM-WDS100-C6-O-2
   oldreadings temperature
   peerIDs    00000000
   room       homematic
   serialNr   OEQ1864809
   stateFormat <font color="darkred"><b>regen</b>&nbsp;</font>statRainDay&nbsp;mm<br>
<br>
temp:temperature&nbsp;°c&nbsp;<font color="#600">||</font>&nbsp;lf:humidity&nbsp;%<br>
tp:dewpoint&nbsp;°c&nbsp;(abs:absoluteHumidity&nbsp;%)
   subType    THSensor
   userReadings temperature_komma:temperature.* { my $val = (ReadingsVal($name,"temperature",0)); $val =~ s/\./,/g; return $val;},
temperature_alt:temperature.* { OldReadingsNum($name,"temperature",0); },
rain_new {ReadingsVal($name,"rain",0) < 0 ? undef : ReadingsVal($name,"rain",0)}
→do↑p!dnʇs↓shit←

the ratman

das muss in ein neues posting *G*

mache soeben meinen allmorgendlichen update ... was steht danach dem fhem wieder hochgekommen ist?

statRain_newDay 0.00 2023-03-26 08:05:32
statRain_newHour 0.00 2023-03-26 08:05:32

o.k. ... ab nun bei stat-modul und userreadings einen restart von fhem machen. wenns weiter nichts ist, kann ich mit leben.


somit bleibt mir nur euch für euer hirnschmalz zu danken!
→do↑p!dnʇs↓shit←

the ratman

sodale ... der vollständigkeit halber: ich glaub', ich hab den fehler.

ich betreibe wetterstation und einiges anderes über eine inselsolaranlage. der wandler von 12v auf weniger volt (ist einstellbar) ist scheinbar immer wieder ausgefallen und schon hab ich auch jetzt wieder minus-werte gehabt.

hab jetzt einen ersatz eingebaut - schauen ma mal ...
→do↑p!dnʇs↓shit←

the ratman

und nun als abschließende bestätigung: scheint wirklich so zu sein.

nur so als abschluss (hoffe ich zumindest) der geschichte ...

ich musste die wetterstation vom strom nehmen, weil das supergeile chinesen dc-dc-wanlder-dingens nach 2 tagen der meinung war, anstelle der eingestellten 4,5v 19v an die wetterstation liefern zu müssen. ich rede (zur allgemeinen warnung) übrigens von solcherlei produkt: https://www.amazon.de/dp/B08T158WPS?psc=1&ref=ppx_yo2ov_dt_b_product_details
hab mir jetzt ein "fest verdrahtetes" von 12v auf 5v zugelegt. das rennt wieder. und die 5v hat die station vorher auch vertragen. war für 3 jahre was ähnliches (aber um 2/3 billigeres) drinnen.

fazit: nach dem hochfahren waren wir wieder auf -xx mm. wenn ich mich recht erinnere war das jener wert, der vor dem runterfahren +xx mm war.


falls mich jemand aufklären kann:
ist homematic tatsächlich ein so gebranntes kind, dass man ein gerät mit batteriebetrieb so derartig absichert, oder ist das mittlerweile in der elektronik üblich?
ich mein: 19v anstelle 4,5v ist schon recht heftig, denke ich, oder?
→do↑p!dnʇs↓shit←