[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←