Hat vielleicht jemand eine Idee wie man die Batterieüberwachung (https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung) aus dem Wiki so abändern könnte, dass
1. Alle Meldungen nur einmal am Tag gesammelt verschickt werden (bei mit über Telegram)
2. Die Meldungen sich nicht wiederholen, also pro Gerät nur eine Zeile gespeichert und verschickt wird.
Hintergrund bei mir ist dieser, dass ich eine Batteriewarnung bekomme, die über die CUL433 reinkommt aber nicht von einem meiner Geräte ist. Ich habe das Gerät in der fhem.cfg auf die Geräte-Ignoreliste gesetzt. Es wird auch nicht mehr in der fhem.cfg neu angelegt und trotzdem bekomme ich täglich zwischen 100 und 150 Meldungen, 24h. Das nervt. Ich habe gesehen, dass Einträge mit dem Gerät in der fhem.save gibt.
Des weiteren nerven mich Batteriewarnungen, die Nachts kommen. Auch wenn der Ton aus ist, die Vibration kriege ich mit. Und der dritte Grund ist, dass die Geräte, wenn sie eine Batteriewarnung ausgeben mind. einen ganzen Tag noch halten werden, vor daher ist eine sofortige Meldung für mich persönlich nicht nötig. Ich hab nur keine Idee, wie man das machen könnte.
Das monitoring Modul deckt das ab. Ein Beispiel für die Batterie Überwachung findet sich in der commandref.
Danke für den Tipp! Würde ich nun mit DOIF oder einem Notify zu einer bestimmten Uhrzeit einen Reading auslesen und verschicken?
Zitat von: Joesky am 01 April 2019, 17:41:10
Danke für den Tipp! Würde ich nun mit DOIF oder einem Notify zu einer bestimmten Uhrzeit einen Reading auslesen und verschicken?
notify kann keine Zeitsteuerung, wenn schon, dann at-Befehl oder eben DOIF.
Du könntest das auch komplett über MSWITCH realisieren . Das könnte alle Meldungen 'sammeln' und zu einer bestimmten Zeit verschicken. Da wäre alles komplett in einem Device. Bin heute leider unterwegs , könnte aber morgen mal was bauen.
Gruss Byte09
Gesendet von meinem SM-G900F mit Tapatalk
Zitat von: Joesky am 01 April 2019, 17:41:10
Danke für den Tipp! Würde ich nun mit DOIF oder einem Notify zu einer bestimmten Uhrzeit einen Reading auslesen und verschicken?
Hier ist eine Möglichkeit wie man das machen kann:
Zitat von: igami am 11 Juli 2017, 08:05:47
Schon etwas ausführlicher:
defmod ServiceNotifications_DI DOIF ((\
[":^error add:"]\
|| [$SELF:cmd] == 2\
) \
&& (\
(\
[ServiceNotifications_cu:state] eq "ein"\
&& [NRW:state] eq "none"\
) \
|| AttrVal("$DEVICE", "priority", 0) == 1\
) \
)(\
{my $msg = fhem("get TYPE=monitoring default");;\
my $oldMsg = $defs{$SELF}{helper}{oldMsg};;\
\
if($msg && (!$oldMsg || $msg ne $oldMsg)){\
sendEmail("XXX", $msg);;\
\
$defs{$SELF}{helper}{oldMsg} = $msg;;\
}\
\
return;;\
}\
)\
DOELSEIF\
([":^error add:"])
attr ServiceNotifications_DI cmdState send notifications|notifications pending
attr ServiceNotifications_DI cmdpause 60*15
attr ServiceNotifications_DI do always
attr ServiceNotifications_DI wait 60*15
Ich überprüfe immer auf error add:
Umschriben bedeutet der code:
Falls ein Gerät ein "error add:" Event auslöst, oder ich mich im Status zwei Befinde
Und, mein Weekdaytimer eingeschaltet ist und kein Feiertag ist, oder die Benachrichtigung Priorität hat,
warte 15 Minuten ob noch weitere Fehlermeldungen kommen und schicke mir dann eine Nachricht, sofern die Nachricht sich von der vorherigen unterscheidet und nicht leer ist.
Andernfalls falls ein Gerät ein "error add:" Event auslöst, speichere das als Status zwei.
Dieses DOIF nutze ich auf der Arbeit um mich nur während der Arbeitszeit informieren zu lassen. Ich möchte ja nicht zu Hause wissen, dass ich Batterien tauschen muss. Falls aber etwas wichtiges ist, z.B. Klimaanlage im Serverraum ausgefallen werde ich trotzdem benachrichtigt. Dafür habe ich meinen monitoring einer userattr priority spendiert.
Zu Hause mache ich das ganz anders, da lasse ich mir einfach alle Nachrichten schicken, wenn ich 15 Minuten zu hause bin. Und nicht dann, wenn sie auftreten.
Das sieht irgendwie kompliziert aus. Ich will doch nur Meldungen gesammelt 1x am Tag zur festen Uhrzeit ausgeben... ;)
Das mit dem MSWITCH find ich interessant.
Schreib doch in deine DOIF Bedingung einfach die Uhrzeit mit rein: and [18:00]
Hier ein beispielhaftes at:
defmod at_Batteriewarnung at *20:00 {\
my @devs;;\
foreach (devspec2array("battery!=,batteryPercent!="))\
{\
push @devs,$_ if (ReadingsVal($_,"battery","") eq "low" || ReadingsNum($_,"batteryPercent",100) < 20);;\
}\
fhem "msg push Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
Jeden Tag um 20 Uhr werden alle Devices die ein battery oder batteryPercent Reading haben und deren Werte entweder low oder kleiner als 20 sind in ein Array geschrieben und am Ende das Array als kommaseparierter String per Push Nachricht versendet.
Gruß
Dan
Zitat von: DeeSPe am 03 April 2019, 15:01:31
Hier ein beispielhaftes at:
defmod at_Batteriewarnung at *20:00 {\
my @devs;;\
foreach (devspec2array("battery!=,batteryPercent!="))\
{\
push @devs,$_ if (ReadingsVal($_,"battery","") eq "low" || ReadingsNum($_,"batteryPercent",100) < 20);;\
}\
fhem "msg push Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
Jeden Tag um 20 Uhr werden alle Devices die ein battery oder batteryPercent Reading haben und deren Werte entweder low oder kleiner als 20 sind in ein Array geschrieben und am Ende das Array als kommaseparierter String per Push Nachricht versendet.
Gruß
Dan
Oder noch kürzer:
defmod at_Batteriewarnung at *20:00 {\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "msg push Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
Gruß
Dan
Zitat von: Joesky am 03 April 2019, 14:11:32
Das sieht irgendwie kompliziert aus. Ich will doch nur Meldungen gesammelt 1x am Tag zur festen Uhrzeit ausgeben... ;)
Das mit dem MSWITCH find ich interessant.
hier die MSwitch Version:
aktuelles Fhem ist Voraussetzung. sendet dir die Infos immer um 18.00 Uhr . Wenn du reinschaust wirst du sehen , wo du die Zeit ändern kannst.
ansonsten kannst du manuell das Senden auslösen und die readings zurücksetzen. Bei Fragen gerne melden.
gruss Byte09
PS:
falls du im device folgende meldung bekommst :
Zitattelebot
Achtung: Dieses Device ist nicht vorhanden , bitte mit "set changed_renamed" korrigieren !
musst du den Namen deines telegrammdevices anpassen. dazu bitte 'set changed_renamed telebot DEINDEVICENAME' eingeben' ( direkt im Device über die 'set' auswahl.
defmod Batteri_Info MSwitch
attr Batteri_Info MSwitch_Debug 0
attr Batteri_Info MSwitch_Delete_Delays 1
attr Batteri_Info MSwitch_Expert 1
attr Batteri_Info MSwitch_Extensions 0
attr Batteri_Info MSwitch_Help 0
attr Batteri_Info MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Batteri_Info MSwitch_Include_Devicecmds 1
attr Batteri_Info MSwitch_Include_MSwitchcmds 0
attr Batteri_Info MSwitch_Include_Webcmds 0
attr Batteri_Info MSwitch_Inforoom MSwitch
attr Batteri_Info MSwitch_Lock_Quickedit 1
attr Batteri_Info MSwitch_Mode Full
attr Batteri_Info eventMap /exec_cmd_1:send_info/exec_cmd_1 ID 1:clear_readings/
attr Batteri_Info room 1_test
attr Batteri_Info stateFormat {my $out = ReadingsVal($name,'Devices_all','no_info');;$out=~ s/\n/<br>/ig;;return $out;;}
attr Batteri_Info webCmd send_info:clear_readings
setstate Batteri_Info no_info
setstate Batteri_Info 2019-04-03 17:21:51 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2,teleBot-AbsCmd1
setstate Batteri_Info 2019-04-03 17:54:13 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{#[nl]my#[sp]@devs#[se]#[nl]@devs=(devspec2array('battery!='))#[se]#[nl]my#[sp]$alldevices#[se]#[nl]foreach#[sp](@devs)#[nl]{#[nl]my#[sp]$devicename#[sp]=#[sp]"Device_".$_#[se]#[nl]my#[sp]$inhalt#[sp]=#[sp]ReadingsVal($_#[sp]#[ko]'battery'#[ko]'')#[se]#[nl]$alldevices#[sp].=#[sp]$_."#[sp]Status#[dp]#[sp]".$inhalt."#[bs]n"#[se]#[nl]fhem("setreading#[sp]$SELF#[sp]$devicename#[sp]$inhalt")#[se]#[nl]}#[nl]fhem("setreading#[sp]$SELF#[sp]Devices_all#[sp]$alldevices")#[se]#[nl]}#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]{#[nl]fhem("deletereading#[sp]$SELF#[sp]Device_.*")#[se]#[nl]fhem("deletereading#[sp]$SELF#[sp]Devices_.*")#[se]#[nl]}#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]#[NF]0#[NF]0#[NF]1#[ND]teleBot-AbsCmd1#[NF]_msg#[NF]no_action#[NF][$SELF#[dp]Devices_all]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]2#[NF]0#[NF]#[NF]0#[NF]0#[NF]1
setstate Batteri_Info 2019-04-03 17:20:54 .Device_Events no_trigger
setstate Batteri_Info 2019-04-03 16:31:32 .First_init done
setstate Batteri_Info 2019-04-03 16:31:32 .Trigger_cmd_off no_trigger
setstate Batteri_Info 2019-04-03 16:31:32 .Trigger_cmd_on no_trigger
setstate Batteri_Info 2019-04-03 17:20:54 .Trigger_condition
setstate Batteri_Info 2019-04-03 16:31:32 .Trigger_off no_trigger
setstate Batteri_Info 2019-04-03 16:31:32 .Trigger_on no_trigger
setstate Batteri_Info 2019-04-03 17:20:54 .Trigger_time on~off~ononly[18#[dp]00]~offonly~onoffonly
setstate Batteri_Info 2019-04-03 16:31:32 .V_Check V2.00
setstate Batteri_Info 2019-04-03 17:56:25 Trigger_device no_trigger
setstate Batteri_Info 2019-04-03 16:31:32 Trigger_log off
setstate Batteri_Info 2019-04-03 17:29:19 last_activation_by manual
setstate Batteri_Info 2019-04-03 17:50:09 last_cmd 2
setstate Batteri_Info 2019-04-03 17:50:09 last_exec_cmd set teleBot _msg 0
setstate Batteri_Info 2019-04-03 17:29:19 state on
Dann mach ich noch mal das DOIF:
defmod xx.Battery.di DOIF ([":^[Bb]attery"] eq "low" and [18:00])\
(msg push Die Batterie von $DEVICE ist bald leer.)
Zitat von: Eistee am 03 April 2019, 18:05:26
Dann mach ich noch mal das DOIF:
defmod xx.Battery.di DOIF ([":^[Bb]attery"] eq "low" and [18:00])\
(msg push Die Batterie von $DEVICE ist bald leer.)
nun ist ja reichlich Auswahl vorhanden ;D
gruss Byte09
Zitat von: Eistee am 03 April 2019, 18:05:26
Dann mach ich noch mal das DOIF:
defmod xx.Battery.di DOIF ([":^[Bb]attery"] eq "low" and [18:00])\
(msg push Die Batterie von $DEVICE ist bald leer.)
Das wird nicht gut gehen, ein Event ist nur wahr oder falsch, es kann aber nicht low sein und schon gar nicht gleichzeitig mit einem Zeittrigger.
Es gibt dennoch eine kurze Alternative mit Hilfe der Aggregation mit DOIF:
define msgBattery DOIF ([18:00]) (msg push Batteriewechsel für folgende Devices: [@"":battery:$_ ne "ok","keine"])
attr msgBattery do always
PS.: Im DOIF-Perlmodus geht es noch kürzer ohne Attribute
Uj, danke erstmal für die ganzen Vorschläge. Es gibt viele Wege, die nach Rom führen. Oder so ähnlich... :)
Zitatsendet dir die Infos immer um 18.00 Uhr . Wenn du reinschaust wirst du sehen , wo du die Zeit ändern kannst.
Nein, leider sehe ich es nicht. Ehrlich gesagt verstehe ich das Modul noch nicht. Ich hab noch nicht rausbekommen, wie ich es dem Modul beibringe, dass er auf .*:[Bb]attery:.* (hier dann natürlich auf !ok, wie derzeit beim Notify) reagiert. Und auch, dass es die Benachrichtigung auf Telegram verschickt.
EDIT:
Jetzt sehe ich was... Wo trage ich das ganze Geraffel ab "setstate" ein?
Zitat von: Joesky am 08 April 2019, 15:09:46
Uj, danke erstmal für die ganzen Vorschläge. Es gibt viele Wege, die nach Rom führen. Oder so ähnlich... :)
Nein, leider sehe ich es nicht. Ehrlich gesagt verstehe ich das Modul noch nicht. Ich hab noch nicht rausbekommen, wie ich es dem Modul beibringe, dass er auf .*:[Bb]attery:.* (hier dann natürlich auf !ok, wie derzeit beim Notify) reagiert. Und auch, dass es die Benachrichtigung auf Telegram verschickt.
EDIT:
Jetzt sehe ich was... Wo trage ich das ganze Geraffel ab "setstate" ein?
ok, damit wir nicht aneinander vorbei reden. du hast das jetzt nicht alles von hand eingegeben , oder :o ?
... falls doch bitte hier lesen : https://wiki.fhem.de/wiki/Import_von_Code_Snippets (https://wiki.fhem.de/wiki/Import_von_Code_Snippets)
Gruss Byte09
Alte Schule! Ich kopiere noch alles relevante direkt in die fhem.cfg rein...
OK, jeder wie er mag. [emoji53]
Aber dann bin ich raus hier, da kann mir zu viel schief gehen und ein direktes bearbeiten von MSwitch Devices in der cfg ist nicht möglich
Gruß Byte09
Gesendet von meinem ELE-L29 mit Tapatalk
Ich kannte das (https://wiki.fhem.de/wiki/Import_von_Code_Snippets) noch nicht... Hat aber wunderbar funktioniert, danke dafür. Sehe ich irgendwie, ob da schon irgendwelche Meldungen aufgelaufen sind?
OK, ich hab's gefunden. Da stehen ein paar Meldungen. Diese wurden nicht geschickt, das das Kommando set teleBot _msg ... lautet. Fehlt da nicht der Telegramempfänger? Wie kann ich den anpassen?
Edit: Ich hab auch das gefunden. Es muss bei der Action teleBot die "MSwitch 'cmd1': Set" auf message umgestellt werden. Dann in dem Textfeld vor dem "[$SELF:Devices_all]" der Telegram-Empfänger eingetragen werden.
Damit wäre dieser Thread gelöst.
Zitat von: Joesky am 11 April 2019, 15:00:31
OK, ich hab's gefunden. Da stehen ein paar Meldungen. Diese wurden nicht geschickt, das das Kommando set teleBot _msg ... lautet. Fehlt da nicht der Telegramempfänger? Wie kann ich den anpassen?
Edit: Ich hab auch das gefunden. Es muss bei der Action teleBot die "MSwitch 'cmd1': Set" auf message umgestellt werden. Dann in dem Textfeld vor dem "[$SELF:Devices_all]" der Telegram-Empfänger eingetragen werden.
Damit wäre dieser Thread gelöst.
Sorry, ich hate diesen Thead nicht mehr auf dem Schirm. Bei MSwitch Problemen poste doch zukünftig bitte hier:https://forum.fhem.de/index.php/topic,86199.0.html (https://forum.fhem.de/index.php/topic,86199.0.html)
dort antworte ich in der regel sehr kurzfristig.
grussByte09
Hey Byte09,
coole Umsetzung!
Würde es nur cooler finden wenn statt nach Zeit man eine Nachricht bekommt, wenn ein Batteriestatus nicht mehr auf "ok" ist.
Kann man das bei deinem Modul mit den "Trigger Conditions" umsetzen ?
Zitat[19:10-23:00] OR [Devicename:Reading] eq "on" eine der Bedingungen muss erfüllt sein
@DeeSPe
Hallo Dan,
deine Lösung habe ich umgesetzt und bekomme früh um 16:00 Uhr die Meldung per Telegram ...
defmod at_Batteriewarnung at *16:00 {\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "set MeinTG_bot message Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
nicht gelungen ist mir die Meldung z.B. nur am Sonntag auszugeben at *16:00 IF (wday == 0) {\
Kleiner Tipp wäre nett
Gruß
Peter
Zitat von: Peter_Listig am 11 März 2020, 22:47:04
@DeeSPe
Hallo Dan,
deine Lösung habe ich umgesetzt und bekomme früh um 16:00 Uhr die Meldung per Telegram ...
defmod at_Batteriewarnung at *16:00 {\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "set MeinTG_bot message Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
nicht gelungen ist mir die Meldung z.B. nur am Sonntag auszugeben at *16:00 IF (wday == 0) {\
Kleiner Tipp wäre nett
Gruß
Peter
Moin Peter,
einfach hinten an das if als weitere Bedingung anfügen.
defmod at_Batteriewarnung at *16:00 {\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "set MeinTG_bot message Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs && $wday == 0);;\
}
Gruß
Dan
Hoi,
ich häng mich hier mal kurz rein, hoffe es ist ok.
Ich habe einen Sensor (NC_WS_80) der leider älter ist und immer ein "low" sendet, gibt es eine einfache Möglichkeit diesen auszuklammern ?
Aktuell bekomme ich halt jeden Abend 19 Uhr bei mir nun die Info, das ich da die Batterie tauschen soll, die ist aber noch ok :D
Ronny
Zitat von: rcmcronny am 12 März 2020, 10:59:33
Hoi,
ich häng mich hier mal kurz rein, hoffe es ist ok.
Ich habe einen Sensor (NC_WS_80) der leider älter ist und immer ein "low" sendet, gibt es eine einfache Möglichkeit diesen auszuklammern ?
Aktuell bekomme ich halt jeden Abend 19 Uhr bei mir nun die Info, das ich da die Batterie tauschen soll, die ist aber noch ok :D
Ronny
Einfach den Namen im devspec herausfiltern:
my @devs = devspec2array("battery=low,batteryPercent<20:FILTER=NAME!=NC_WS_80")
Wenn NC_WS_80 der Name des Devices ist.
Gruß
Dan
Hi Dan,
super, Danke ! Ich habs eingebaut :)
Ronny
Zitat von: DeeSPe am 12 März 2020, 08:56:10
Moin Peter,
einfach hinten an das if als weitere Bedingung anfügen.
defmod at_Batteriewarnung at *16:00 {\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "set MeinTG_bot message Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs && $wday == 0);;\
}
Gruß
Dan
Um es noch kürzer für den Parser zu machen und damit Speicher und CPU zu schonen wäre das wohl noch besser:
defmod at_Batteriewarnung at *16:00 {\
return if ($wday != 0);;\
my @devs = devspec2array("battery=low,batteryPercent<20");;\
fhem "set MeinTG_bot message Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);;\
}
Gruß
Dan
Dan, ich muss nochmal nerven, sorry.
Zitat von: DeeSPe am 12 März 2020, 11:25:04
Einfach den Namen im devspec herausfiltern:
my @devs = devspec2array("battery=low,batteryPercent<20:FILTER=NAME!=NC_WS_80")
Wenn NC_WS_80 der Name des Devices ist.
Klappt leider nicht, ist trotzdem noch enthalten.
Was mach ich hier falsch ?
Danke Ronny
List vom Device
Internals:
AlternativeDEFcode CUL_TCM97001_5_157
CHANGED
CODE CUL_TCM97001_89
DEF CUL_TCM97001_89
FUUID 5d07c137-f33f-e150-52ac-f91aef85fe40a235
LASTInputDev SIGNALESP2
MSGCNT 213
NAME NC_WS_80
NR 163
SIGNALESP2_DMSG s59D803718000
SIGNALESP2_MSGCNT 210
SIGNALESP2_Protocol_ID 0.3
SIGNALESP2_RAWMSG MS;P0=-3915;P1=-9184;P3=481;P7=-1960;D=31373037303037373030303730303737373737373737373030373030303737373030373737;CP=3;SP=1;R=39;O;m2;
SIGNALESP2_RSSI -54.5
SIGNALESP2_TIME 2020-03-12 19:29:23
SIGNALESP_DMSG s59D803718000
SIGNALESP_MSGCNT 32
SIGNALESP_Protocol_ID 0
SIGNALESP_RAWMSG MS;P2=494;P4=-1952;P5=-3894;P6=-9184;D=26242524252524242525252425252424242424242424242525242525252424242525242424;CP=2;SP=6;R=1;O;m2;
SIGNALESP_RSSI -73.5
SIGNALESP_TIME 2020-03-12 19:28:13
STATE T: 5.5 H: 24
TYPE CUL_TCM97001
lastH 0
lastT 1584037763.3846
READINGS:
2020-03-12 18:50:53 battery low
2020-03-12 18:50:53 batteryState low
2020-02-10 19:54:11 channel 1
2020-03-12 19:29:23 humidity 24
2020-03-12 16:49:33 mode normal
2020-03-12 19:29:23 state T: 5.5 H: 24
2020-03-12 19:29:23 temperature 5.5
Attributes:
event-min-interval .*:300
event-on-change-reading .*
model NC_WS
room CUL_TCM97001
Das at sieht wie folgt aus
Internals:
COMMAND {
my @devs = devspec2array("battery=low,batteryPercent<20:FILTER=NAME!=NC_WS_80");
fhem "msg push Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);
}
DEF *19:00 {
my @devs = devspec2array("battery=low,batteryPercent<20:FILTER=NAME!=NC_WS_80");
fhem "msg push Die Batterien von folgenden Geräten sollten ausgetauscht werden: ".join(", ",@devs) if (@devs);
}
FUUID 5e67500d-f33f-e150-6ccf-6d02f28f10418488
NAME at_Batteriewarnung
NR 230
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 19:00:00
TIMESPEC 19:00
TRIGGERTIME 1584122400
TRIGGERTIME_FMT 2020-03-13 19:00:00
TYPE at
READINGS:
2020-03-12 19:13:09 state Next: 19:00:00
Schon probiert mal den NAME Filter an den Anfang zu setzen?
{devspec2array("NAME!=NC_WS_80:FILTER=battery=low,batteryPercent<20")}
Gruß
Dan
Hoi,
nein, aber sorum klappt es dann auch, wie es soll :) Danke !
ronny
Hallo zusammen,
@DeeSpe
vielen Dank an dich - ich wäre wedwe auf die eine noch die andere Lösung gekommen.
eine Kleinigkeit zum Verständnis noch:
return if ($wday != 0);;\
bedeutet doch, dass return immer ausser am Sonntag erfolgt ?
@rcmcronny
bei mir zeigt ein "NC_WS" Device mit der Nummer 82 dasselbe Verhalten
deswegen auch die Meldung nur einmal am Sonntag - wenn der Sensor
sich länger als 24 Stunden nicht meldet informiert mich ein watchdog ...
Gruß
Peter
Zitat von: Peter_Listig am 13 März 2020, 12:23:19
@DeeSpe
vielen Dank an dich - ich wäre wedwe auf die eine noch die andere Lösung gekommen.
eine Kleinigkeit zum Verständnis noch:
return if ($wday != 0);;\
bedeutet doch, dass return immer ausser am Sonntag erfolgt ?
Genau, das war doch gefordert!?
Gruß
Dan
ZitatIch habe einen Sensor (NC_WS_80) der leider älter ist und immer ein "low" sendet, gibt es eine einfache Möglichkeit diesen auszuklammern ?
Dafür gibts das Attribut "negation-batt", damit kann battery invertiert werden.
Gruß Ralf
@DeeSpe
return if ($wday != 0);;\
meldet an jeden Tag ausser Sonntag ...
return if ($wday == 0);;\
meldet nur am Sonntag ... da habe ich Zeit ;)
vielen Dank nochmal
Peter
Zitat von: Peter_Listig am 13 März 2020, 15:46:58
@DeeSpe
return if ($wday == 0);;\
meldet nur am Sonntag ... da habe ich Zeit ;)
Natürlich! Da war ich auf dem falschen Fuß... ;)EDIT: So wird die Schleife nur am Sonntag frühzeitig verlassen und meldet an allen anderen Tagen die Batterien.
Gruß
Dan
Würde es nur cooler finden wenn statt nach Zeit man eine Nachricht bekommt, wenn ein Batteriestatus nicht mehr auf "ok" ist.
Kann man das bei deinem Modul mit den "Trigger Conditions" umsetzen ?
Zitat[19:10-23:00] OR [Devicename:Reading] eq "on" eine der Bedingungen muss erfüllt sein
Zitat von: nocomment am 13 März 2020, 17:31:48
Würde es nur cooler finden wenn statt nach Zeit man eine Nachricht bekommt, wenn ein Batteriestatus nicht mehr auf "ok" ist.
Das war hier in diesem Thema aber nicht die Anforderung.
Was Du möchtest gibt es bereits beschrieben im Wiki, so wie es der TE schon im Eingangsbeitrag erwähnt hat.
Gruß
Dan
Hi Ralf,
Zitat von: Ralf9 am 13 März 2020, 13:12:53
Dafür gibts das Attribut "negation-batt", damit kann battery invertiert werden.
Ohh, das ist ja super, danke für den Tip. Funzt wie es soll ;D
Ronny