Autor Thema: Benachrichtigung wenn Regenmesser HM-WDS100-C6-O-2 um 1mm zugenommen hat  (Gelesen 230 mal)

Offline justcallmeal

  • Jr. Member
  • **
  • Beiträge: 74
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

Offline nils_

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 871
was hast du denn bis jetzt versucht?
vermutlich lässt sich das mit einem notify lösen.


was mich etwas stutzig macht:
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!

Offline justcallmeal

  • Jr. Member
  • **
  • Beiträge: 74
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
« Letzte Änderung: 15 Juni 2018, 08:30:12 von justcallmeal »
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

Offline nils_

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 871
...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.

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  ::) )

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 ;)

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!

Offline justcallmeal

  • Jr. Member
  • **
  • Beiträge: 74
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

Offline rabehd

  • Full Member
  • ***
  • Beiträge: 487
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.

Offline justcallmeal

  • Jr. Member
  • **
  • Beiträge: 74
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

Offline rabehd

  • Full Member
  • ***
  • Beiträge: 487
Zitat
Vielmehr 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.