[Gelöst] Batterieüberwachung nur einmal täglich

Begonnen von Joesky, 01 April 2019, 15:15:55

Vorheriges Thema - Nächstes Thema

Byte09

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

Gruss Byte09


Joesky

Alte Schule! Ich kopiere noch alles relevante direkt in die fhem.cfg rein...
_______________
FREI STATT BAYERN

Byte09

#17
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

Joesky

Ich kannte das noch nicht... Hat aber wunderbar funktioniert, danke dafür. Sehe ich irgendwie, ob da schon irgendwelche Meldungen aufgelaufen sind?
_______________
FREI STATT BAYERN

Joesky

#19
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.
_______________
FREI STATT BAYERN

Byte09

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

dort antworte ich in der regel sehr kurzfristig.

grussByte09

nocomment

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

Peter_Listig

@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
Raspi4 / Debian Bullseye / FB 7490 / FHEM 6.x / CUL433 / CUL868 / aculfw / FrtizFon / DECT200 / IT / Homematic / ZigBee (Raspbee) /  Rademacher / HE / km200  / DS214+

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rcmcronny

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rcmcronny

Hi Dan,

super, Danke ! Ich habs eingebaut :)

Ronny

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rcmcronny

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

DeeSPe

Schon probiert mal den NAME Filter an den Anfang zu setzen?

{devspec2array("NAME!=NC_WS_80:FILTER=battery=low,batteryPercent<20")}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe