[gelöst] DOIF für Batterieüberwachung verfeinern mit EVENT

Begonnen von Larusso, 10 Mai 2019, 22:30:39

Vorheriges Thema - Nächstes Thema

Larusso

Hallo Community,

ich habe mir ein einfaches DOIF zusammen gebastelt was mir eine Info geben soll wenn eine Batterie in meinen Devices leer wird da es bei mir nun aber schon mehr als 20 Devices gibt welche Batterien besitzen müsste ich das DOIF so erweitert haben das es mir durch ein EVENT auch das Device ausgibt was eine "low Battery" Meldung raus gibt. Über eine Readingsgroup habe nun schon alle Devices in einer Übersicht mit nem netten Batteryicon was die farbe ändert wenn der Status nicht ok ist. Ich scheine aber ein Gerät dabei zu haben was sporadisch unter den Battery ok Wert fällt und immer wenn ich nachschaue weil ich eine Info bekomme das Batterien getauscht werden müssen werden natürlich alle als ok angezeigt. Nun wäre es schön wenn man das DOIF mit einem EVENT versehen kann der mir dann in der Meldung halt auch das Gerät angibt was ausgelösst hat. Vielen dank schon mal für eure Hilfe...hier mein DOIF:

Internals:
   DEF        ([?10:00 - 22:00] and (["Thermostat.*:[Bb]atte.*[Ll]ow"])) (set Telegram msg Die Batterien eines Thermostats sind leer und müssen gewechselt werden)
DOELSEIF
([?10:00 - 22:00] and (["shutterContact.*:[Bb]atte.*[Ll]ow"])) (set Telegram msg Die Batterien eines Tür oder Fensterkontakts sind leer und müssen gewechselt werden)
DOELSEIF
([?10:00 - 22:00] and ([Garten:temperature] eq "???")) (set Telegram msg Der Temperaturfühler auf der Fensterbank ist nicht erreichbar)
DOELSEIF
([?10:00 - 22:00] and ([Keller:Temperature] eq "???")) (set Telegram msg Temperaturfühler Keller sendet seit einer Sunde keine Daten)
DOELSEIF
([10:00])
   FUUID      5c533f68-f33f-7f1e-bf33-56bb265df6cc0e25
   MODEL      FHEM
   NAME       Telegram_Battery_low
   NR         238
   NTFY_ORDER 50-Telegram_Battery_low
   STATE      disabled
   TYPE       DOIF
   .attreocr:
     1
   .attrminint:
   READINGS:
     2019-05-10 21:50:44   Device          Keller
     2019-05-10 20:26:05   cmd             1
     2019-05-10 20:26:05   cmd_event       Thermostat_Badezimmer
     2019-05-10 20:26:05   cmd_nr          1
     2019-03-30 18:58:47   e_Garten_temperature 20.2
     2019-05-10 21:41:44   e_Keller_Temperature 20.40
     2019-05-10 21:51:08   last_cmd        cmd_1
     2019-05-10 21:51:08   mode            disabled
     2019-05-10 21:51:08   state           disabled
     2019-05-10 22:00:00   timer_01_c01    11.05.2019 10:00:00
     2019-05-10 22:00:00   timer_02_c01    11.05.2019 22:00:00
     2019-05-10 22:00:00   timer_03_c02    11.05.2019 10:00:00
     2019-05-10 22:00:00   timer_04_c02    11.05.2019 22:00:00
     2019-05-10 22:00:00   timer_05_c03    11.05.2019 10:00:00
     2019-05-10 22:00:00   timer_06_c03    11.05.2019 22:00:00
     2019-05-10 22:00:00   timer_07_c04    11.05.2019 10:00:00
     2019-05-10 22:00:00   timer_08_c04    11.05.2019 22:00:00
     2019-05-10 10:00:00   timer_09_c05    11.05.2019 10:00:00
     2019-05-10 20:56:05   wait_timer      no timer
   Regex:
     cond:
       :
         0:
           "Thermostat.*:[Bb]atte.*[Ll]ow" Thermostat.*:[Bb]atte.*[Ll]ow
         1:
           "shutterContact.*:[Bb]atte.*[Ll]ow" shutterContact.*:[Bb]atte.*[Ll]ow
         2:
         3:
         4:
   attr:
     cmdState:
     repeatcmd:
       1800
     repeatsame:
       2
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and (::EventDoIf('Thermostat.*',$hash,'[Bb]atte.*[Ll]ow',0))
     1          ::DOIF_time($hash,2,3,$wday,$hms) and (::EventDoIf('shutterContact.*',$hash,'[Bb]atte.*[Ll]ow',0))
     2          ::DOIF_time($hash,4,5,$wday,$hms) and (::ReadingValDoIf($hash,'Garten','temperature') eq "???")
     3          ::DOIF_time($hash,6,7,$wday,$hms) and (::ReadingValDoIf($hash,'Keller','Temperature') eq "???")
     4          ::DOIF_time_once($hash,8,$wday)
   days:
   devices:
     2           Garten
     3           Keller
     all         Garten Keller
   do:
     0:
       0          set Telegram msg Die Batterien eines Thermostats sind leer und müssen gewechselt werden
     1:
       0          set Telegram msg Die Batterien eines Tür oder Fensterkontakts sind leer und müssen gewechselt werden
     2:
       0          set Telegram msg Der Temperaturfühler auf der Fensterbank ist nicht erreichbar
     3:
       0          set Telegram msg Temperaturfühler Keller sendet seit einer Sunde keine Daten
     4:
       0         
     5:
   helper:
     event      Hum: 58.80 Tem: 20.40
     globalinit 1
     last_timer 9
     sleepdevice Thermostat_Badezimmer
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Thermostat_Badezimmer
     timerevent battery: low
     triggerDev Keller
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: Thermostat_Badezimmer
       state: cmd_1
     timerevents:
       mode: auto
       battery: low
       batteryState: low
       desiredTemperature: 5.0
       temperature: 22.7
       valveposition: 0
       5.0 °C
       RSSI: -73.5
     timereventsState:
       mode: auto
       battery: low
       batteryState: low
       desiredTemperature: 5.0
       temperature: 22.7
       valveposition: 0
       state: 5.0 °C
       RSSI: -73.5
     triggerEvents:
       Hum: 58.80 Tem: 20.40
     triggerEventsState:
       state: Hum: 58.80 Tem: 20.40
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1557561600
     1          1557604800
     2          1557561600
     3          1557604800
     4          1557561600
     5          1557604800
     6          1557561600
     7          1557604800
     8          1557561600
   perlblock:
   readings:
     2           Garten:temperature
     3           Keller:Temperature
     all         Garten:temperature Keller:Temperature
   realtime:
     0          10:00:00
     1          22:00:00
     2          10:00:00
     3          22:00:00
     4          10:00:00
     5          22:00:00
     6          10:00:00
     7          22:00:00
     8          10:00:00
   time:
     0          10:00:00
     1          22:00:00
     2          10:00:00
     3          22:00:00
     4          10:00:00
     5          22:00:00
     6          10:00:00
     7          22:00:00
     8          10:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          3
     8          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
   timers:
     4           8
   trigger:
   triggertime:
     1557561600:
       localtime  1557561600
       hash:
     1557604800:
       localtime  1557604800
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Telegram Batterie low
   do         always
   event-on-change-reading 1
   icon       message_mail
   repeatcmd  1800
   repeatsame 2
   room       Telegram
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

amenomade

Das triggernde Device ist in der Variable $DEVICE
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Larusso

Hallo amenomade,

könntest du mir bei der Syntax vielleicht noch weiterhelfen? Wie bekomme ich den Trigger $Device nun in mein DOIF eingebunden? :o

Danke
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

Larusso

Habe das Problem jetzt mit einem notify gelösst, danke für den Tip..... Für alle die es Interessiert hier die raw definition:

defmod Pushover_Batteriecheck_Thermostat notify Thermostat.*:[Bb]attery:|.*:[Bb]atteryS { if($EVENT !~ m/ok/)\
{{fhem ("set Pushover msg FHEM Batteriewarnung, $NAME: $EVENT:\nBatterien sollten demnächst gewechselt werden! sound=magic");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}}
attr Pushover_Batteriecheck_Thermostat alias Batteriewächter Thermostat
attr Pushover_Batteriecheck_Thermostat icon message_mail
attr Pushover_Batteriecheck_Thermostat room Battery,Telegram
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,