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
Das triggernde Device ist in der Variable $DEVICE
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
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