Benachrichtigung wenn Regenmesser HM-WDS100-C6-O-2 um 1mm zugenommen hat

Begonnen von justcallmeal, 14 Juni 2018, 14:43:00

Vorheriges Thema - Nächstes Thema

justcallmeal

Hallo zusammen,

gerne würde ich mir eine Benachrichtung mit telebot aufs Handy schicken, wenn der Wert des readings "rain" um exakt 1,000mm (1mm) zugenommen hat. Meine bisherigen Codings geben leider keinen vergleichbaren Fall her, den ich abkupfern könnte und auch im Netz habe ich nichts leicht Nachvollziehbares hierzu gefunden.
Das Reading kommt mit drei Nachkommastellen, also müsste nach meinem Verständnis also eine Differenzberechnung gemacht werden.

Hier mal das listing der Wetterstation, falls es von Belang sein sollte:
Internals:
   CUL_0_MSGCNT 8
   CUL_0_RAWMSG A1379867050B35B00000000D22C0796C05B28F6BF::-69:CUL_0
   CUL_0_RSSI -69
   CUL_0_TIME 2018-06-14 14:33:08
   DEF        50B35B
   IODev      CUL_0
   LASTInputDev CUL_0
   MSGCNT     8
   NAME       Wetterstation
   NOTIFYDEV  global
   NR         551
   NTFY_ORDER 50-Wetterstation
   STATE      T: 21 H: 44 W: 9.1 R: 572.893 IR: 0 WD: 200 WDR: 67.5 S: 246 B: 191
   TYPE       CUL_HM
   lastMsg    No:79 - t:70 s:50B35B d:000000 00D22C0796C05B28F6BF
   peerList   vccu_Btn2,
   protLastRcv 2018-06-14 14:33:08
   rssi_at_CUL_0 cnt:8 min:-69.5 max:-66 avg:-68.18 lst:-69
   READINGS:
     2018-06-14 14:14:41   Activity        alive
     2017-08-19 18:51:30   CommandAccepted yes
     2017-07-31 16:46:10   D-firmware      1.6
     2017-07-31 16:46:10   D-serialNr      NEQ1648866
     2017-08-19 18:51:30   PairedTo        0x060468
     2017-07-31 16:47:19   R-burstRx       off
     2017-07-31 16:47:19   R-pairCentral   0x060468
     2017-07-31 16:47:19   R-stormLowThresh 5
     2017-07-31 16:47:19   R-stormUpThresh 20
     2017-07-31 16:47:19   R-sunThresh     50
     2017-08-19 18:16:36   R-vccu_Btn2-peerNeedsBurst set_off
     2017-08-19 18:21:13   R-vccu_Btn2-stormLowThresh 5
     2017-08-19 18:21:13   R-vccu_Btn2-stormUpThresh 20
     2017-08-19 18:21:13   R-vccu_Btn2-sunThresh 50
     2017-08-19 18:21:13   R-vccu_Btn2-windSpeedRsltSrc max
     2017-08-19 18:47:11   R-vccu_Btn3-peerNeedsBurst set_off
     2017-08-19 18:51:31   R-vccu_Btn3-stormLowThresh 5
     2017-08-19 18:51:31   R-vccu_Btn3-stormUpThresh 20
     2017-08-19 18:51:31   R-vccu_Btn3-sunThresh 50
     2017-08-19 18:51:31   R-vccu_Btn3-windSpeedRsltSrc max
     2017-07-31 16:47:19   R-windSpeedRsltSrc max
     2017-08-19 18:51:30   RegL_00.        01:00 02:01 0A:06 0B:04 0C:63 18:00 00:00
     2017-08-19 18:51:30   RegL_01.        05:32 06:14 07:05 0A:01 00:00
     2017-08-19 18:51:31   RegL_01.vccu_Btn2 05:32 06:14 07:05 0A:01 00:00
     2017-08-19 18:51:31   RegL_01.vccu_Btn3 05:32 06:14 07:05 0A:01 00:00
     2017-08-19 18:51:31   RegL_04.vccu_Btn2 05:00 00:00
     2017-08-19 18:51:32   RegL_04.vccu_Btn3 05:00 00:00
     2018-06-14 14:33:08   battery         ok
     2018-06-14 14:33:08   brightness      191
     2018-06-14 14:33:08   humidity        44
     2018-06-14 14:33:08   isRaining       0
     2018-06-14 14:14:41   peerList        vccu_Btn2,
     2018-06-14 14:33:08   rain            572.893
     2018-06-14 14:33:08   rssi_at_CUL_0   -69
     2018-06-14 14:33:08   state           T: 21 H: 44 W: 9.1 R: 572.89 IR: 0 WD: 200 WDR: 67.5 S: 246 B: 191
     2018-06-13 20:15:06   storm           unknown:04
     2018-06-14 14:33:08   sunshine        246
     2018-06-14 14:33:08   temperature     21
     2018-06-13 20:15:06   trig_01         vccu
     2018-06-13 20:15:06   trigger_cnt     5
     2017-08-19 18:48:43   unknown         0400000000000105320A010000
     2018-06-14 14:33:08   windDirRange    67.5
     2018-06-14 14:33:08   windDirection   200
     2018-06-14 14:33:08   windSpeed       9.1
   helper:
     HM_CMDNR   121
     mId        00AE
     regLst     ,0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +50B35B,00,00,00
       nextSend   1528979588.64392
       rxt        2
       vccu       vccu
       p:
         50B35B
         00
         00
         00
       prefIO:
         CUL_0
     mRssi:
       mNo        79
       io:
         CUL_0:
           -65
           -65
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_CUL_0:
         avg        -68.1875
         cnt        8
         lst        -69
         max        -66
         min        -69.5
     tmpl:
Attributes:
   IODev      CUL_0
   IOgrp      vccu:CUL_0
   actCycle   000:10
   actStatus  alive
   alias      Wetterstation
   autoReadReg 4_reqStatus
   event-on-change-reading rain,windDirection,state
   expert     2_raw
   firmware   1.6
   icon       weather_station
   model      HM-WDS100-C6-O-2
   peerIDs    00000000,06046802,
   room       Wetter,CUL_HM,Garagentore,Garten
   rssiLog    1
   serialNr   NEQ1648866
   subType    THSensor


Wie geht so etwas, - kann mir da jemand helfen?

VG,
al
HM-Sen-DB-PCB, HM-Sec-SCo, HM-MOD-Re-8, HM-SEC-SC-2, HM-Sen-MDIR-O, HM-LC-Sw1PBU-FM, HM-LC-RGBW-WM, HM-ES-PMSw1-SM, HM-LC-Sw1-DR

nils_

was hast du denn bis jetzt versucht?
vermutlich lässt sich das mit einem notify lösen.


was mich etwas stutzig macht:
Zitat von: justcallmeal am 14 Juni 2018, 14:43:00
gerne würde ich mir eine Benachrichtung mit telebot aufs Handy schicken, wenn der Wert des readings "rain" um exakt 1,000mm (1mm) zugenommen hat.

was ist bei 1,001 mm?
dann nicht mehr?? oder meinst du "mehr als 1mm"?
nur zur klarstellung :)
viele Wege in FHEM es gibt!

justcallmeal

#2
Zitat von: nils_ am 14 Juni 2018, 15:28:14
was hast du denn bis jetzt versucht?

...nun, ich bin da nicht der große Programmierer...   ich bekomme es hin, eine Meldung zu erhalten, wenn der Wert sich ändert, sprich, wenn er zunimmt. Das wäre bei längerem Regnen alle paar Sekunden. Logisch, dass ich das natürlich nicht will.
Bei komplexeren Dingen versuche ich ein Template zu finden, welches ich ggf. auf meinen Bedarf ein wenig ändere. In diesem Fall habe ich leider nirgends etwas gefunden...

Was die die Logik angeht: es sollte so sein, dass immer wenn der Wert um einen Millimeter zugenommen hat, eine Meldung angetriggert wird. D.h. für jeden weiteren mm eine Meldung -->  20 mm Regen = 20 Meldungen.

Vielleicht müsste dazu gar keine Differenzberechnung angestellt werden; es würde ja reichen, auf die erste Stelle vor dem Dezimalpunkt zu triggern, das könnte -wie ich mir vorstelle- noch einfacher sein. Leider weiß ich nicht wie das geht.


VG,
al
HM-Sen-DB-PCB, HM-Sec-SCo, HM-MOD-Re-8, HM-SEC-SC-2, HM-Sen-MDIR-O, HM-LC-Sw1PBU-FM, HM-LC-RGBW-WM, HM-ES-PMSw1-SM, HM-LC-Sw1-DR

nils_

Zitat von: justcallmeal am 14 Juni 2018, 19:10:01
...nun, ich bin da nicht der große Programmierer...   ich bekomme es hin, eine Meldung zu erhalten, wenn der Wert sich ändert, sprich, wenn er zunimmt. Das wäre bei längerem Regnen alle paar Sekunden. Logisch, dass ich das natürlich nicht will.
dann zeig doch mal die "dauerfeuer"-lösung.
die dann anzupassen wäre einer von vielen möglichen wegen.

Zitat von: justcallmeal am 14 Juni 2018, 19:10:01
Bei komplexeren Dingen versuche ich ein Template zu finden, welches ich ggf. auf meinen Bedarf ein wenig ändere. In diesem Fall habe ich leider nirgends etwas gefunden...
dein template wäre Perl bzw. die Syntax davon.
in deinem fall ein "if" (nicht FHEM-IF, geht evtl. auch  ::) )

Zitat von: justcallmeal am 14 Juni 2018, 19:10:01
Was die die Logik angeht: es sollte so sein, dass immer wenn der Wert um einen Millimeter zugenommen hat, eine Meldung angetriggert wird. D.h. für jeden weiteren mm eine Meldung -->  20 mm Regen = 20 Meldungen.
ReadingsVal(...) und OldReadingsVal(...) zu finden https://fhem.de/commandref_DE.html#perl
das wäre dann mit Differenzberechnung ;)

Zitat von: justcallmeal am 14 Juni 2018, 19:10:01
Vielleicht müsste dazu gar keine Differenzberechnung angestellt werden; es würde ja reichen, auf die erste Stelle vor dem Dezimalpunkt zu triggern, das könnte -wie ich mir vorstelle- noch einfacher sein. Leider weiß ich nicht wie das geht.
das wäre dann eher ein anderer ansatz: event-on-change-reading
viele Wege in FHEM es gibt!

justcallmeal

Zitat von: nils_ am 15 Juni 2018, 09:28:05
dann zeig doch mal die "dauerfeuer"-lösung.

okay, ich dachte, dass dies die Dauerfeuerlösung sei, aber ist nicht so, wie ich später festellen musste:

define Regenmeldung_1 notify Wetterstation:rain:.* \ { if ($EVTPART1 ne '5' ) \   {fhem (set teleBot msg @123456789 Regen: [Wetterstation:rain]mm)   }  }

Vielmehr macht diese Zeile scheinbar gar nichts :-(

Nach einigen weiteren Überlegungen denke ich, dass auf die Veränderung der Ziffer in Reading getriggert werden sollte, die direkt vor dem Dezimalpunkt steht.

geht das überhaupt?

VG,
al
HM-Sen-DB-PCB, HM-Sec-SCo, HM-MOD-Re-8, HM-SEC-SC-2, HM-Sen-MDIR-O, HM-LC-Sw1PBU-FM, HM-LC-RGBW-WM, HM-ES-PMSw1-SM, HM-LC-Sw1-DR

rabehd

Bei mir triggert Wetterstation:rain.*
Ich würde da mal ein "Log 3, $EVTPART1" für if und else einfügen. Da siehst Du im Log ob und was drin steht.
Auch funktionierende Lösungen kann man hinterfragen.

justcallmeal

Zitat von: rabehd am 15 Juni 2018, 13:01:37
Ich würde da mal ein "Log 3, $EVTPART1" für if und else einfügen.

sorry, was heißt das detaillierter ausgedrückt?
HM-Sen-DB-PCB, HM-Sec-SCo, HM-MOD-Re-8, HM-SEC-SC-2, HM-Sen-MDIR-O, HM-LC-Sw1PBU-FM, HM-LC-RGBW-WM, HM-ES-PMSw1-SM, HM-LC-Sw1-DR

rabehd

ZitatVielmehr macht diese Zeile scheinbar gar nichts :-(
Dann gehe doch mal systematisch vor.

1. Triggert Dein "Event" überhaupt?
define Regenmeldung_1 notify Wetterstation:rain:.*  Log 3, "Regen triggert"
Dann müßte ja was im Logstehen, wenn das Reading rain aktualisiert wird.

2. Was ist überhaupt in $EVTPART1 drin?
define Regenmeldung_1 notify Wetterstation:rain:.*  Log 3, "Eventpart1 ist " . $EVTPART1

Zitat($EVTPART1 ne '5' )
verwende ich nicht, keine Ahnung was es bedeutet/bedeuten soll.
Bei mir regnet es im Moment auch nicht.

Ich würde sicherstellen, das Rain nur ein Event erzeugt, wenn sich der Wert ändert.
Dann würde ich im notify prüfen, ob die Nachkommastelle 0 ist, wenn ja dann soll eine Nachricht gesendet werden.
Auch funktionierende Lösungen kann man hinterfragen.

justcallmeal

vielen Dank für Deine Ausführungen, wenngleich ich nicht wirklich alles verstanden habe  :-\
Trotzdem habe ich damit wieder ein wenig hinzugelernt  ;)

Ich habe die Aufgabenstellung allerdings mittlerweile anders lösen können, indem ich auf das "state" eines Dummies triggere indem die Differenzberechnung stattfindet, wie in folgendem Thread beschrieben:

https://forum.fhem.de/index.php?topic=14165.0

Besten Dank nochmals!

al
HM-Sen-DB-PCB, HM-Sec-SCo, HM-MOD-Re-8, HM-SEC-SC-2, HM-Sen-MDIR-O, HM-LC-Sw1PBU-FM, HM-LC-RGBW-WM, HM-ES-PMSw1-SM, HM-LC-Sw1-DR