FHEM: Rechtzeitige Benachrichtigung bei leeren Batterien

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Wer funkbasierte Smart-Home-Devices nutzt, muss die zur Stromversorgung benötigten Batterien regelmäßig austauschen. Standardmäßig wird der aktuelle Batteriezustand in FHEM zwar im jeweiligen Gerät dargestellt, dort regelmäßig den Status zu prüfen, um einen rechtzeitigen Tausch sicherzustellen, ist auf Dauer aber doch eher unpraktisch.

Aus diesem Grund zeigt das nachfolgende Howto, wie der Batteriestatus aller Geräte übersichtlich dargestellt und eine monatliche Pushover-Benachrichtigung nachgerüstet werden kann, die automatisch über anstehende Batteriewechsel informiert.

Batteriestatus aller Geräte visualisieren

Fast jedes batteriebetriebene Gerät, das per Funk in FHEM angelernt wurde, teilt entweder periodisch und/oder bei Statusänderungen seinen aktuellen Energiestatus mit, welcher im Reading “battery” angezeigt und gewöhnlich auch im gerätespezifischen Logfile abgespeichert wird.

Device mit Reading battery

Um das zu verbessern, werden im ersten Schritt alle Devices, welche das Reading “battery” besitzen, in einer übersichtlichen Liste dargestellt, sodass der Anwender den aktuellen Status sofort ablesen kann.

FHEM readingsGroup Batterieueberwachung

Für die Umsetzung wird das Attribut readingsGroup genutzt, welches genau für solche Zwecke vorgesehen ist.

Dazu wird die fhem.cfg mit nachfolgendem Code gefüttert:

#Batteriestatus aller Devices im Raum Zentral anzeigen
define ZE.Batterie readingsGroup .*:[Bb]attery\
.*:[Bb]atteryLevel
attr ZE.Batterie notime 1
attr ZE.Batterie room Zentral
attr ZE.Batterie valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
attr ZE.Batterie valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}

Dabei werden automatisch alle Geräte einbezogen, die ein Reading des Typs “Battery” bzw. “battery” besitzen.

Mit dem Attribut “notime 1” wird der Zeitstempel in der erzeugten Gruppe ausgeblendet. Wer dies nicht möchte, kann den Eintrag natürlich auch weglassen oder mit einer Raute (#) am Zeilenanfang auskommentieren.

Durch das Attribut “room Zentral” taucht die Liste dann im gleichlautenden Raum auf.

Das Attribut “valueFormat” schnappt dich die vorhandenen Batteriestatuswerte und formatiert diese passend um. Dabei geben einige Sensoren, wie bspw. die optischen HomeMatic Fensterkontakte (Affiliate-Link) den Batteristatus mit “ok” bzw. “low” an, welche dann in die Werte “100” bzw. “0” umgewandelt werden. Andere Sensoren geben hingegen den Batteristand in Volt an, welcher über obige Logik dann entsprechend in die Werte “0”, “25”, “50”, “75” und “100” umformatiert wird, was dann eine genauere Batteriestandsanzeige erlaubt.

Mit dem letzten Attribut “valueIcon” werden dann die gerade umformatierten Werte in ein passenden Icon inklusive verschiedener Farbgebung übersetzt, wodurch man schnell erkennen kann, welche Batterie getauscht werden sollte.

Monatliche Benachrichtigung per Pushover

Neben der Tabelle, die ab sofort für mehr Übersichtlichkeit sorgt, macht es aber auch noch Sinn eine zusätzliche Benachrichtigung einzurichten, um aktiv informiert zu werden, sobald eine Batterie erneuert werden sollte. Damit das nicht allzu sehr nervt, habe ich die Idee von Frederic umgesetzt, der eine monatliche Benachrichtigung vorgeschlagen hatte.

#Pushover-Benachrichtigung bei leeren Batterien
define BatteryLowPushover at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
 {if (ReadingsVal("AZ.Fenster.Geschlossen", "battery", "-1") eq "low")\
  {fhem ("set PushoverJayFHEM msg 'Arbeitszimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\
 };;\
 {if (ReadingsVal("BZ.Fenster.Geschlossen", "battery", "-1") eq "low")\
  {fhem ("set PushoverJayFHEM msg 'Badezimmer Fenster' 'Bitte Batterie tauschen' '' 0 ''")}\
 };;\
 {if (ReadingsVal("BZ.KlimaClimate", "battery", "-1") eq "low")\
  {fhem ("set PushoverJayFHEM msg 'Badezimmer Klimasensor' 'Bitte Batterie tauschen' '' 0 ''")}\
 };;\
 {if (ReadingsVal("BZ.Tuer.Geschlossen", "battery", "-1") eq "low")\
  {fhem ("set PushoverJayFHEM msg 'Badezimmer Tür' 'Bitte Batterie tauschen' '' 0 ''")}\
 };;\
 {if (ReadingsVal("FL.Tuerschloss", "battery", "-1") eq "low")\
  {fhem ("set PushoverJayFHEM msg 'Flur Türschloss' 'Bitte Batterie tauschen' '' 0 ''")}\
 };;\
}

Dabei wird für alle angegebenen Geräte einmal am ersten Sonntag eines neuen Monats um 19:00 Uhr geprüft, wie die aktuellen Batteriestände aussehen und entsprechend eine Pushover-Benachrichtung abgesendet, sofern der Batteriestatus eines Geräts gering (“low”) ist.

Pushover iPhone

Auf den Pushover-Dienst wird an dieser Stelle nicht weiter eingegangen. Weitere Informationen dazu sind im Blogpost Raumklima im Smart Home mit FHEM verbessern: Taupunktoptimiertes Lüften zu finden.

Hier muss jeder selbst die bestehenden Einträge durch die eigenen Devices ersetzen bzw. weitere entsprechend ergänzen. Zum besseren Verständnis sind im obigen Beispiel auch die ersten fünf Geräte angegeben, deren Namen direkt aus der im vorhergehenden Schritt erzeugten Liste entnommen wurden.

Wer die Benachrichtigung nicht am Sonntag (erster Tag der Woche in der FHEM-Logik) versenden möchte, kann die 0 bei

$wday == 0

entsprechend ändern. 1 steht für Montag, 2 für Dienstag, etc.

Und wer die Benachrichtung bspw. immer am ersten Tag des Monats, egal welcher Wochentag das dann auch sein mag, senden möchte, muss

$mday <= 6 && $wday == 0

einfach in

$mday == 1

abändern.

Aus meinem täglichen Leben

Bisher habe ich die Batterieüberwachung aus dem FHEM-Wiki genutzt, die immer sofort Alarm schlug, sobald eine Batterie leer wurde. Das war auf Dauer aber eher nervig und so hoffe ich, dass die oben beschriebene Methode künftig etwas nervenschonender ist.

Im Grunde halten die Batterien bisher bei all meinen im Einsatz befindlichen HomeMatic-Geräten sehr lange. Aber man weiss ja nie, gerade beim KeyMatic (Affiliate-Link) wären leere Batterien schon wirklich nervig, da dann die Tür nicht mehr automatisch aufsperren würde.

An dieser Stelle einmal ein rießen Lob an HomeMatic, über den ich bereits im Mai 2013 im Artikel Keymatic per HMLan am FHEM-Server anlernen gebloggt hatte und der mich bisher nie im Stich gelassen hat. Die dort eingesetzten Eneloops (Affiliate-Link) musste ich bisher auch erst einmal nachladen.

Zusätzlich lasse ich mir jetzt noch eine Liste aller (funkbasierten) Geräte anzeigen, deren Aktvititätsstatus in FHEM verarbeitet wird. So lässt sich dann auch recht einfach erkennen, ob ein Gerät ausgefallen ist.

#Aktivitätsstatus aller Devices im Raum Zentral anzeigen
define ZE.Activity readingsGroup .*:Activity
attr ZE.Activity notime 1
attr ZE.Activity room Zentral
attr ZE.Activity valueIcon {'Activity.unknown' => 'unknown@orange','Activity.dead' => 'unknown@red','Activity.alive' => 'general_ok@green'}

So sieht das dann im Raum Zentral aus:

FHEM readingsGroup Aktivitaetsstatus

107 Kommentare
  1. Moin, die zentrale Übersicht ist viel besser als alles in den einzelnen Räumen anzuzeigen, super !
    Er hat bei mir nicht alle HM Heizungsthermostate eingesammelt, nur 4 von 6. Natürlich habe ich die Logs sowie die Eigenschaften geprüft, sieht alles identisch aus. Evtl. noch eine Idee ?
    Was für Erfahrungen gibt es in den HM Thermostaten mit Eneloop Akkus bzw. Amazon Basics ?
    Gruß Axel Ahlborn

    1. Hi Axel,
      werde die HM Heizungsthermostate in meiner neuen Wohnung erst noch in Betrieb nehmen. Sofern ich auf das gleiche Problem stoße wie du, folgt ein Update. Haben die beiden nicht “eingesammelten” Thermostate bei dir auch jeweils das Reading “battery”? Zur Not würde ich die betreffenden Thermostate einfach einmal rauslöschen und neu anlernen. Vorher natürlich noch ein Backup erstellen!
      Erfahrungen mit Akkus (Eneloop bzw. Amazon Basics) in den HM Thermostaten habe ich noch keine, da die mitgelieferten AA-Batterien noch funktionieren.

      Grüße
      Jörg

  2. Hallo Jörg,
    super die neue Funktion. Werde es demnächst auch bei mir einbauen, um regelmäßig mit einem guten Gefühl einschlafen zu können.
    Hatte es bei mal so, dass die Batterie des Haupt-Relais der Heizung leer war und ich erst nach zwei Tagen festgestellt habe, dass die Batterie nicht mehr genug Saft hatte.

  3. Hallo Jörg,

    wieder einmal ein super Artikel, vielen Dank dafür.
    Habe die “Batterieüberwachung” in nicht mal 5 Minuten nachgebaut, nun habe ich alle meine batteriebetriebenen Sensoren im Blick (Homematic unc LaCrosse).
    Leider liefern die LaCrosse-Temperatursensoren keine Activity-Reading (nur Temp, Humidity und State), deshalb kann ich diese nicht im Aktivitätsstatus überwachen.

  4. Moin,

    die Batterieanzeige funktioniert super.
    Leider habe ich ein Tür/Fenster-Kontakt von meinen FHT80 der Battery groß schreibt, damit klappt das Übersetzen der 100 in das Bild nicht mehr.
    in der 2. Zeile wird nur für battery der Wert angepasst.
    Ich habe diese Zeile einfach doppelt in die Konfig, einmal klein- und einmal großgeschrieben aufgenommen, nun geht es 🙂

    Viele Grüße

    juniorfux

  5. Hallo Jörg,

    wieder mal ein super Beitrag, wüsste garnicht was mein FHEM ohne euren Blog machen würde 🙂
    Habe noch ein kleines Problem, evtl hast ja eine Idee.
    Mein HM Heizungsthermostat (habe erst einen zum testen) wurde nicht angezeigt. Bei den readings vom Thermostat heißt der Punkt batteryLevel.
    Habe es in der config so angepasst:
    define Batterie_Status readingsGroup .*:[Bb]attery\
    .*:[Bb]atteryLevel
    attr Batterie_Status notime 1
    attr Batterie_Status room tools
    attr Batterie_Status valueFormat {return “0” if( $VALUE eq “low” );; return “100” if( $VALUE eq “ok” );; return “25” if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE ‘measure_battery_0@red’,’battery.25′ => ‘measure_battery_25@red’,’battery.50′ => ‘measure_battery_50@orange’,’battery.75′ => ‘measure_battery_75@green’,’battery.100′ => ‘measure_battery_100@green’}

    Damit wird in der Übersicht das Thermostat angezeigt, aber ohne Icon. Statt dem Icon steht da 100 (original reading ist 3.1).
    Hättest du mir evtl nen Tip wie ich das Icon angezeigt bekomme?
    Danke

    Gruß Andi

    1. Hi Andi!
      Freut mich, dass du ein regelmäßiger Blogleser bist und dich auch bereits zum Newsletter angemeldet hast!
      Ich habe den Code im Blogpost nochmal angepasst, sodass es auch bei mit deinen Thermostaten funktionieren sollte.

      Grüße
      Jörg

      PS: Wenn du uns unterstützen möchtest, kannst du unsere Inhalte auf Facebook teilen und unsere Seite liken. Dazu ist natürlich auch jeder andere Leser eingeladen 🙂

    2. Hallo Jörg,

      danke für die schnelle Antwort, funktioniert jetzt 1a 🙂
      geliked hab ich euch natürlich auch 🙂

  6. Hallo Jörg,
    mein oben geschildertes Problem löst sich mit dem Beitrag von Andi, die beiden fehlenden Systeme zeigen beim Reading nur batteryLevel, aber nicht Battery an. Identischer Firmwarestand 1.3. Naja sei es drum. Ich werde mir Andis Skript mal genauer anschauen und das ggf. implementieren.
    @Andi vielen Dank dafür.
    Fehlen nur noch Erfahrungen mit den Eneloops bzw. Amazon Basics, aber meine Batterien zeigen auch noch 3V an.

    Gruß Axel

    1. Komisch, aber egal. Kannst einfach den Code im Blogpost 1:1 übernehmen. Dieser ist entsprechend angepasst und sollte direkt funktionieren.

      Grüße
      Jörg

    2. Hi,
      ich habe das gleiche Problem wie du, manche Devices haben trotz identischer Firmware usw kein Battery und nur ein BatteryLevel
      Und zwar bei mir ein HM-TC-IT-WM-W-EU (da hab ich nur eins also keinen Vergleich), dafür hat das Climate von dem Thermostat ein battery Reading

      Und ein Heizungsregler HM-CC-RT-DN hat bei mir kein battery (die anderen allerdings schon bei gleichem Stand)
      Wenn ich dazu noch was finde, wie man das battery Reading auch bei den anderen einblenden lassen kann meld ich mich 😉

      Ich habe meine Anzeige noch etwas angepasst, da ich den Batterielevel als Zahl angezeigt haben wollte

      .*:[Bb]attery,[Bb]atteryLevel

      Wenn kein battery vorhanden ist rutschen die Felder danach nach links, was etwas irritierend aussieht.

      Viele Grüße
      Ina

    3. Hi,
      es hat mir doch keine Ruhe gegeben, hab im fhem Forum einen Hinweis gefunden der bei mir geholfen hat.
      im _Clima Channel den Modus einmal auf manual setzten, kurz warten sobald er gesetzt ist ist das Reading battery da, danach kann man wieder zurückschalten auf den ursprünglichen Wert.
      Alternativ soll auch Batterien raus und wieder rein helfen. Infos hier.

      Viele Grüße
      Ina

  7. Hallo Jörg,

    wieder mal ein super Artikel! Vielen Dank!

    Ich hatte das mit den Batteriestatus-Anzeigen zwar bereits umgesetzt, zusätzlich gefällt mir aber die Pushmessage mit dem FHEM-Icon und der HTML-Formatierung. Wie bekommst du das hin? Ich finde in keiner Doku etwas darüber…

    Gruß,
    Ralf

    1. Hi Ralf,
      das Thema wurde schon mal kurz in den Kommentaren angesprochen. Im Grund habe ich selbst nicht viel dazu beigetragen. Auf der Apple Watch wird das standardmäßig genau so dargestellt, sofern man das Logo in der Pushover-Anwendung hinterlegt hat.

      Grüße
      Jörg

    2. Hallo Jörg,

      vielen Dank für den Link – kannte ich nicht.
      Es klappt zwar mit der Formatierung nicht direkt auf dem Homescreen des iPhones, aber zumindest in den Push-Notifications selbst. Man muss halt darauf achten, dass man ein 72×72 PNG-File hochlädt (wenn’s jemand interessiert 🙂 )

      Gruß,
      Ralf

  8. Hallo Jörg, wiedermal ein sehr guter Blog!
    Habe es gleich umgesetzt!
    Gibt es eine Möglichkeit den Batteriestatus per udp in einem Rutsch an Loxone zu senden? So dass man es in der Visu einbinden kann?
    Mit freundlichen Grüßen

    1. Ich experimentiere gerade damit, bei Statusänderungen meiner Homematic-Geräte gleichzeitig auch alle relevanten Infos – u.A. auch die Batteriewerte – in einem UDP-String an Loxone zu übergeben. Visualisieren lässt sich das auch ganz hübsch direkt im jeweiligen Device. Das funktioniert bisher tadellos. Werde sicherlich bald einmal darüber bloggen.

      Grüße
      Jörg

  9. Hallo Jörg,

    wenn Dich die vielen Pushnachrichten nerven, wäre es dann nicht sinnvoller in den if-Abfragen die Namen der Geräte in einer Variable zu sammeln und anschließend eine Pushnachricht zu senden wenn die Variable nicht leer ist? Dann bekommt man nur eine Nachricht mit allen Geräten. Oder könnten das dann zu viele Zeichen in der Nachricht werden?

    mfg
    Tom

    1. Guter Punkt. Werde mal sehen, wieviele Batterie-Leer-Meldungen bei meinen diversen Funk-Devices so die nächsten Monate tatsächlich durchkommen und werde den Code bei Bedarf nachbesssern. Hab derzeit alleine über zehn optische Fenster-/Türsensoren von HoemMatic im Einsatz… 🙂

  10. Hallo Jörg,
    Ich richte mir die Batteriewarnung auch gerade ein. Super Artikel übrigens. Ich hatte das Phänomen, das ich keine Devices angezeigt bekam. Die Readingsgroup war aber “initialized”

    define ZE.Batterie readingsGroup .*:[Bb]attery\.*:[Bb]atteryLevel

    Ich habe nun alle meine Devices mal durchgesehen. Alle Geräte weisen nur “battery” als Reading auf. Jetzt habe ich die o.g. verschiedenen Möglichkeiten mal alle weggelassen und nur

    define ZE.Batterie readingsGroup .*:battery

    genommen. Plötzlich waren alle Devices mit Batterien aufgelistet. Vielleich hat ja der ein o. andere das Problem auch noch. Scheinbar listet FHEM überhaupt keine Devices auf, wenn eins in der DEF genannt ist, welches gar nicht existiert.
    Ach ja, im LOGFILE wurde übrigens kein Fehler angezeigt.

    Gruß Carsten

    1. Der Trick ist der Zeilenumbruch nach \
      Es muss heissen:

      define ZE.Batterie readingsGroup .*:[Bb]attery\
      .*:[Bb]atteryLevel

      Dann sollte es auch klappen.

      Grüße
      Jörg

    1. Hi Thomas,
      unter ZE.Activity sollten alle Devices angezeigt werden, welche ein Reading namens “Activity” besitzen. Also einfach mal die Detailsicht eines Geräts öffnen, welches du in der Liste erwarten würdest, und nachsehen, ob ein solches Reading existiert.

      Grüße
      Jörg

      PS: Welche Geräte hast du im Einsatz?

  11. Hallo Jörg,
    Danke für Deine Antwort. Das ist was ich im Einsatz habe:
    Homematic Funk-Heizkörperthermostat
    HomeMatic Funk-Rauchmelder
    Homematic Wandthermostat
    Homematic Funk-Wandtaster 6-fach
    Homematic Bewegungsmelder
    Homematic Temperatursensor innen

  12. Hallo Jörg,

    top Artikel, mach bloß weiter so 😉

    Bei mir sind einige Devices jetzt doppelt drinnen, das diese sowohl battery als auch batterLevel haben.

    battery ok 2015-07-05 11:40:07
    batteryLevel 2.9 2015-09-03 15:03:57

    Was sollte ich tun ?

    LG

    Michael

    1. Hi,
      ich habe das gleiche Thema wie Michael am 03.09.2015:

      Bei mir sind einige Devices jetzt doppelt drinnen, da diese sowohl battery als auch batterLevel haben.

      battery ok 2015-07-05 11:40:07
      batteryLevel 2.9 2015-09-03 15:03:57

      In meinem Fall zeigt ein Raumthermostat 2.3 und low an. Diese beiden Werte fuehren zu unterschiedlichen grafischen Darstellungen…

  13. Das Notify finde ich nicht sehr gut.
    Da hier nur die Devices abgefragt werden die Eingetragen sind.

    Ich hab das mal vor längerem so gelöst:
    define notifiy_batt_chk notify .*:[Bb]attery:.* {\
    if($EVENT !~ m/ok/) {\
    Log(3,”$NAME: Batteriewarnung $EVENT”);;\
    fhem(“set pushmsg msg ‘FHEM’ ‘FHEM Batteriewarnung, $NAME. – $EVENT’ ”0””);;\
    }\
    }
    attr notifiy_batt_chk room 9.90_Notifications

    Weniger Zeilen und auch die Notfication über alle Geräte. Nur ohne Monatliche abfrage.

    1. Hätte das aber nicht den (kleinen) Nachteil, dass die Message nur einmal kommt? Ich hatte zwar noch keine schwachen Batterien. Wie ich mich erkenne, ignoriere ich aber gerne die ersten paar Warnungen zum niedrigen Batteriestand. Das dürfte mit dem definierten AT von Jörg funktionieren.

      Darf ich Dich auch mal fragen, was Du mit “attr notifiy_batt_chk room 9.90_Notifications” anstellst – und wie? Sieht nach einem Raum aus, der individuelle Nachrichten darstellt?!?

    2. Hi Robert,
      die von dir angesprochene Batteriewarnung aus dem FHEM-Wiki hatte ich schon im Blogpost verlinkt. Ist natürlich eleganter, war aber eben nicht das, was ich wollte, da ich
      a) nur einmal im Monat über leere Batterien informiert werden möchte und
      b) erneut über leere Batterien informiert werden möchte, wenn diese immer noch nicht gewechselt wurden.
      Aber du hast Recht, die aktuelle Lösung ist noch verbesserungsfähig, da jedes Gerät einzeln eingetragen werden muss. Hab schon eine Idee, wie sich das geschickter lösen lässt, dazu fehlt mir aktuell aber schlicht die Zeit. Über Vorschläge würde ich mich natürlich freuen.

      Grüße
      Jörg

  14. Hi
    wenn man noch das Attribut
    mapping %ALIAS
    zu der readingsGroup hinzufügt und den Devices ein Alias gibt (es wird sonst der Name genommen wenn kein Alias vorhanden ist) kann man sich auch “schönere” Namen anzeigen lassen.

    Viele Grüße
    Ina

  15. Hallo Jörg,
    ich muss nochmal nach Aktivitätsstatus fragen. Ich habe ja selber zumindest auch 2 HOmematic Geräte wie Du (IR Bewegungsmelder und Rauchmelder). Das Feld sehe ich aber nicht. Muss man das extra definieren?
    Gruss Thomas

  16. Hi !

    Allerdings hast du nicht berücksichtigt das bei den neuen Geraeten battery und batteryLevel vorhanden sind und somit auch (unnoetigerweise) doppelt in der Liste auftauchen.

    Gruss Gerd

    1. Das ist mir auch aufgefallen, gibt es hier schon Möglichkeiten das abzufangen? Eventuell dass man pro Gerät nur eine Anzeige zulässt?

  17. Hallo Jörg,
    ich habe die folgenden Probleme:
    1. bei der Anzeige des Batterie-Status wird nur der folgenede Text zum jeweiligen Gerät angezeigt z.Bsp. “FK_Schlafzimmer:battery”. Alle Anzeigen der Batterie-Icons fehlen jedoch.
    2. Bei den Aktivitätsanzeigen werden ebenfalls keine Icons angezeigt, statt dessen steht bspw. jeweils ein Text “general_ok@green” oder “unknown@orange” dort.
    Ich habe bisher ledichlich die angegebenen Befehle zur Erkennung des Batteriestatus und des Activitätsstatus in die fhem.config eingegeben. Da ich noch Anfänger beim Thema FHEM bin, bitte ich nach Möglichkeit um eine kurze Info was ich falsch mache.
    Für Ihre Bemühungen im vorraus schon vielen Dank.
    Hans-Jürgen Grebe

  18. Hallo Jörg,
    Nachtrag zu meinem zuvor geschilderten Fehler vom 10. Okt. bzgl. der fehlenden Icon. Der Fehler besteht nur, wie ich jetzt festgestellt habe, wenn ich Fhem von meinem Desktop-PC nutze. Vom Tablet sind die Icon der Batteriestati zu sehen, die der Activity jedoch nicht. Vom Smartphone sind sowohl die Batterie- als auch die Activitystati zu sehen. Bin ratlos woran das liegt.
    Gruss Hans-Jürgen

  19. Hallo Jörg,

    du hast vor einiger Zeit folgendes geschrieben:
    “Jörg
    September 2nd, 2015
    Der Trick ist der Zeilenumbruch nach \
    Es muss heissen:
    define ZE.Batterie readingsGroup .*:[Bb]attery\
    .*:[Bb]atteryLevel
    Dann sollte es auch klappen.
    Grüße
    Jörg“

    ist dort ein Schreibfehler drin?
    müsste es nicht heißen:
    define ZE.Batterie readingsGroup .*:[Bb]attery \
    .*:[Bb]atteryLevel
    sobald ich hinter [Bb]attery das “\” durch ein Leerzeichen “abtrenne”
    funktioniert bei mir die Anzeige. Vorher hat nur das mit dem BatteryLevel
    auswerten geklappt

    Gruß Herby

    1. Kann ich von meiner Seite aus bestätigen!
      Ich habe nun auch eine ganze Weile gesucht, und habe nun Herbys Hinweis gefunden. Sobald man den Backslash “\” mit einem Leerzeichen nach dem “y” von “[Bb]attery” trennt, erscheinen auch bei mir alle Devices.
      Davor bekam ich nur meine zwei Thermostate, allerdings nicht meine Fensterkontakte. Mit dem eingefügten Leerzeichen nun bekomme ich alle Devices.

  20. Hi,

    ich finde es komisch, dass sobald ich den Battery Reading Code in meine fhem.cfg eingebe meine LaCrosse Temperatur Sensoren über den JeeLink plötzlich keine Daten mehr senden??? Woran kann das liegen?

    Grüße
    Dirk

    1. Ich habe herausgefunden woran es gelegen hat. Ich habe das direkt in die cfg eingetragen was nich gut ist. Nach der Verwendung der Kommandozeile läuft es wie gewünscht.

  21. @Gerd und @Henry:
    Ich finde das auch ziemlich irritierend, dass bei meinem Homematic-Wandthermostat das reading “battery” und “batteryLevel” existiert, da dann der Batterielevel mehrfach auftaucht. (In meinem Fall gleich 3 mal, da der .climate Kanal auch noch mal ein battery-reading hat).
    Besonders blöd ist, dass das reading “battery” bereits ein rotes Batterie-Symbol generiert, während das “batteryLevel” mit 2,3 noch einen akzeptablen Wert hat und deshalb noch grün mit einem Balken weniger angezeigt wird.
    Gibt es nicht eine Möglichkeit, bei Geräten mit beiden readings das “batteryLevel” zu “bevorzugen”? Vielleicht geht das ja mit einem regex-Ausdruck, aber da kenn’ ich mich zu wenig aus.

    Gruß pure-current

  22. Hey @all,
    ich habe mir das Problem mit dem batteryLevel so gelöst, indem ich bei den devices die ein batteryLevel haben, z.B. mein device Heizkoerperventil_Kinderzimmer ein

    userReadings battery {return “low” if (ReadingsVal(“Heizkoerperventil_Kinderzimmer”,”batteryLevel”,”0″) < "2.2"); return "ok" }

    angelegt habe, somit hat man dann ein Reading mit dem Namen battery für sein Device, welches bei einem Wert von unter 2.2 auf low geht und sonst ok zeigt, man kann dies ganz normal mit der Readingsgroup anzeigen lassen und auch mit dem notify darauf reagieren.

  23. Hallo,
    ist es möglich, bei der Batteriestatusanzeige, neben den Icons die ausgelesenen Werte ebenfalls als Zahlen darzustellen? Also in meinem Fall wären das 3,1 und 3,0.

    Schöne Grüße.

  24. Hallo Jörg,
    erst mal herzlichen Dank für deien Blog. Man kann sich sehr gut in deine Gedankengänge und der deiner Leser hinein versetzen.
    Allerdings ist mir beim Thema “Activity” etwas unlogisch. Ich habe deinen Script gerade mal integriert. Läuft soweit auch alles ganz gut und mach was es soll. Jetzt habe ich aber folgenden Gedanken. Was passiert, wenn ein Gerät einen Komplettausfall hat. Hab gerade die Batterie des HK-Ventils entfernt. es dauert eine Ganze Weile bis die Meldung kommt. Wie erfolgt eigentlich die Kommunikation? Es müsste ja von der Zentrale (Cul-HM) eine Abfrage kommen.
    Wo kann man die Intervallzeit einstellen? Ich frage jetzt weil ich z.B. einen Fenstekontakt einerseits in die Heizungssteuerung und anderseits in einer Alarmanlage nutzen will. Ist das überhaut möglich? Die Logic vom HM müsste das doch her geben?

    Gruß Andre’

  25. Hallo zusammen,

    ich hatte auch das Problem mit den doppelten Einträgen aufgrund von battery und batteryLevel. Ich fand auch die batteryLevel Angabe die bessere Lösung, da hier eine genauere Unterscheidung nach dem Grad der Entleerung der Batterie möglich ist. Ich habe mir als Lösung bei allen Devices die nur ein battery Reading besitzen einfach ein userReading namens batteryLevel kreiert, in das ich den Status des Readings battery übernehme ( attr Raum.Sensor userReadings batteryLevel { ReadingsVal(“Raum.Sensor”,”battery”,0);; } ). Dann habe ich meine readingsGroup entsprechend angepasst dass sie nur noch batteryLevel auswertet (define HW.Batterie readingsGroup .*:[Bb]atteryLevel), was ja nun alle Devices haben, und nun habe ich sämtliche Geräte nur 1x in der Übersicht stehen und bei den Geräten mit den genauen Spannungsangaben auch die differenzierten Icons. 🙂

    Grüße,
    Marco

  26. Hallo Jörg

    auch von mir vielen Dank für das obige Batterie Script.
    Ich würde gerne neben dem Icon auch noch den Wert bzw. bei meinen ZWave Geräten die Prozent Angabe anzeigen lassen.
    Kriege es nicht hin. Habe auch schon die Wiki durchgekaut.
    Geht das denn überhaupt?
    Müsste ja zwei Werte anzeigen obwohl nur einer ausgelesen wird.

    Gruß
    Tom

  27. Hi Jörg,

    ein schöner und nützlicher Beitrag. Eine Rückfrage bleibt bei der Einbindung der Homematic Bewegungsmelder, die bei mir kein battery-readings haben – wie kann ich dort den Batterie-Status überwachen?

    VG Stephan

  28. Als Neueinsteiger habe ich schon einige deiner Artikel erfolgreich”nachgebaut” d.h copy and paste , hier scheitere ich jetzt aber vollkommen,. Konkret habe ich mehrere Batterie betriebene Sensoren etc. die auch schön ihren Status melden, z.B.
    MAX mit battery ok bzw 95 % im Log
    Fibaro mit battery 100 %
    nur in den jetzt erzeugten Eintrag sehe ich keinerlei Systeme, schon allein die Auslistung der erkannten Elemente fehlt komplett, die hätte ich zumindestens erwarte. Irgendeine Art Ferndiagnose möglich ? Server reboot habe ich hinter mir , keinerlei Fehlereintrag in fhem Log, irgendeine Möglichkeit die Ausführung zu loggen ?

  29. Hallo Jörg,
    bei mir erscheint immer folgende Meldung im Log:
    2016.02.11 19:00:00 3: BatteryLowPushover: Unrecognized character \xC2; marked by <– HERE after <– HERE near column 1 at (eval 24166) line 3.

    meine definition sieht so aus:
    define BatteryLowPushover at *19:00:00 { if ( $mday == 1 )\
    {if (ReadingsVal("SZ.Deckenbeleuchtung_Wechselschalter", "battery", "-1") eq "low")\
      {fhem ("set PushoverDominikFHEM msg 'Wechselschalter Schlafzimmer' 'Bitte Batterie tauschen' '' 0 ''")}\
    };;\
    {if (ReadingsVal("HG.Dachterrassentuer", "battery", "-1") eq "low")\
     {fhem ("set PushoverDominikFHEM msg 'Dachterrassentür' 'Bitte Batterie tauschen' '' 0 ''")}\
    };;\
    {if (ReadingsVal("WZ.Heizung", "battery", "-1") eq "low")\
     {fhem ("set PushoverDominikFHEM msg 'Heizung Wohnzimmer' 'Bitte Batterie tauschen' '' 0 ''")}\
    };;\
    {if (ReadingsVal("SZ.Heizung", "battery", "-1") eq "low")\
     {fhem ("set PushoverDominikFHEM msg 'Heizung Schlafzimmer' 'Bitte Batterie tauschen' '' 0 ''")}\
    };;\
    }

    eine Idee was nicht stimmt?

    Gruß
    Dominik

    1. Puh,
      spontan tippe ich mal auf ein Formatierungsproblem. Am besten nochmal mit einem anderen Browser/Editor versuchen.

      Grüße und viel Erfolg
      Jörg

  30. Im Blog steht: Dabei werden automatisch alle Geräte einbezogen, die ein Reading des Typs “Battery” bzw. “battery” besitzen.

    Ich finde die Stelle auf meinem fhem Server nicht! Hast Du vielleicht ein Screenshot, wo man darauf sehen kann, wie man es zuweisen kann?

  31. Hallo,
    kann es sein, dass die Batterie Anzeige für Fhem 5.7 nicht mehr aktuell ist.
    Habe da so meine Probleme wenn ich das $Value (def) in Value (def) ändere.

  32. ReadingsVal(“AZ.Fenster.Geschlossen”, “battery”, “-1”)

    Was ist mit “-1” gemeint?

    Wenn ich nur die Variable $wday verwende, bedeutet, dass ich einmal die Woche den Wert abfrage. Ist das richtig?

    Danke.

    1. Hi Manfred,
      “-1” ist in diesem Kontext der zu nutzende Fallbackwert, wenn kein (sinnvoller) Wert aus dem Reading “battery” ausgelesen werden kann.

      Die Variable $wday gibt einen Wert zwischen 0 (Sonntag) und 6 (Samstag) aus – je nachdem, welcher Tag gerade ist. Wenn du also bspw. die Bedingung

      if ( $wday == 0 )

      nutzt, kannst du die Werte nur einmal pro Woche (jeden Sonntag) abfragen.

      Grüße und viel Erfolg bei der Umsetzung
      Jörg

  33. Hi!

    Ich habe den Code für den Aktivitätsstatus verwendet, aber der Aktivitätsstatus wird bei mir nicht angezeigt! Was fehlt da noch? Ich möchte gerne den Aktivitätsstatus von allen TX 29 DTH – IT anzeigen lassen.

    Vielen Dank für die Hilfe.

  34. Ich habe unter Readings Liste kein Activity. Bedeutet es, dass mein Gerät TX 29 DTH – IT kein Activity hat bzw. nicht unterstützt?

    Danke.

  35. Hallo Jörg,

    zuerst vielen Dank für die Antworten. 🙂

    Ich habe den Code für das Activity-Reading übernommen, aber es wird leider nichts auf dem Fhemsever angezeigt. Nur der Code für den Batteriestatus hat auf Anhieb funktioniert.

    Viele Grüße
    Manfred

    1. Ja,
      die DTH-Sensoren scheinen im Standard einfach kein Activity-Reading zu besitzen, entsprechend kann der Code auch keine Information für die DTHs anzeigen.
      Hier müsste man wohl erst manuell dafür sorgen, dass ein solches Reading für jedes DHT-Device ermittelt und zusätzlich ausgegeben wird. Wie man das am geschicktesten macht, weiss ich leider aktuell auch nicht 100%ig.

      Am besten fragst du direkt mal im FHEM-Forum nach, da hier auch die Entwickler des Moduls aktiv sind. Vielleicht können sie die Funktion ja auch per Update des FHEM-Moduls für LaCrosse nachreichen.

      Grüße
      Jörg

  36. Hallo Jörg,

    ich habe den Activity Check und die Battery Check im Einsatz. Erstes läuft auch einwandfrei. Beim Battery Check habe ich 2 Probleme. Das eine ist hier schon beschrieben. Homematic gibt wohl bei einigen Battery und Batterylevel aus und deshalb werden die Komponenten 2 mal angezeigt. Das zweite ist eine Fehlermeldung die wohl dadurch ausgegeben wird, dass ein zwave Sensor 100% ausgibt: PERL WARNING: Argument “100 %” isn’t numeric in numeric lt (<) at (eval 582) line 1. Dadurch ergibt sich diese Meldung. Leider bin ich absoluter Neuling und weiß nicht, wie ich das Problem lösen sollte. Hast du vielleicht eine Idee.

    Danke

    Udo

  37. @Udo vom 20.3.16:

    Falls deine Frage noch aktuell ist, dann kann dir evtl. geholfen werden. Ich habe 2 WS2300-Sensoren eingebunden, welche als Batteriezustand z.B. “ok 100%” melden, was zu ähnlichen Fehlermeldungen wie bei dir führte. Abgeholfen habe ich dem Missstand, indem ich folgendes valueFormat gesetzt habe:

    {return “0” if( $VALUE eq “low” ); return “100” if( $VALUE eq “ok” ); return “100” if( $VALUE eq “ok 100%” ); return “25” if( $VALUE < 2.1 ); return "50" if( $VALUE < 2.3 ); return "75" if( $VALUE < 2.5 ); return "100"}

    Man beachte das 3.: return "100" if( $VALUE eq "ok 100%" );

    Wenn du das bei dir auf:

    return "100" if( $VALUE eq "100%" );

    setzt, dann sollte es auch mit den %-Zeichen klappen. Wie das ganze dann bei nicht 100%-Werten aussieht, kann ich aber noch nicht sagen, weil ich diese anderen Zustände noch nicht hatte.

  38. @Thomas
    Ich danke dir recht herzlich. Habe es jetzt eingefügt und bis jetzt ist alles ruhig. Vermutlich muss ich, wenn irgendwann eine andere Meldung kommt wie z. B. 75%, einen weiteren Eintrag verfassen, nicht wahr?

  39. @Udo
    Ich vermute ja, aber jetzt heißt es erst mal abwarten, denn ich weiß nicht, welche Abstufungen bei deinen Batteriemeldungen existieren.

  40. Vielleicht kann mir hier jemand helfen. Das Notify + Pushover bringt mich seit Tagen zum Verzweifeln. Eingentlich soll die Pushover-Nachricht nach 6 Minuten daran erinngern, z.B. das Badfenster wieder zu schließen.

    Folgende Zeile aus meiner fhem.cfg:

    define FensterOffen notify HM_382DF3:open.*|HM_382DF8:open.* sleep 360;; { fhem “set pushmsg msg ‘Fenster offen'” }

    Stattdessen bekomme ich zwischen 13 und 17 Pushover-Nachrichten 6 Minuten nach Öffnen des Fensters, selbst wenn dies bereits wieder zu ist. Ich nehme an Pushover verweigert danach die Annahme weiterer gleichlautender Meldungen.

    1. Hi Robert,
      ein notify mit sleep zu verzögern ist in deinem Fall wohl unbrauchbar. Dadurch kommt immer nach 360 Sekunden eine Pushnachricht, sobald ein Fenster geöffnet wird – unabhängig davon, ob es zuvor wieder geschlossen wurde.
      Versuch es mal mit einem einem watchdog – so auf die Art:

      define FensterOpenAlarm watchdog BA.Fenster:open 00:03:00 BA.Fenster:closed set pushmsg msg ‘Fenster offen’;; setstate FensterOpenAlarm defined
      attr FensterOpenAlarm regexp1WontReactivate 1

      Mehr Infos dazu gibts im Blogpost FHEM: Watchdog zur Automatisierung einsetzen.

      Grüße und viel Erfolg
      Jörg

  41. Hallo,
    ich wende mich mal an Dich, denn im Forum gibts nur seltsame Antworten:
    Ich habe diese Emailwarnung umgesetzt.

    Wenn ich z.B. trigger BAD_DG battery:low eingebe, kriege ich ne mail. Ist aber der Batteriestand tatsächlich low, kommt keine Mail und ich kann auch mit dem Trigger keine Mail mehr auslösen. Das habe ich nun auch mit einem anderen Regler versucht, also die Batterien in den Heizungsregler vom Arbeitszimmer eingebaut – genau das Selbe:

    Das Device zeigt Battery “low” – keine automatische Email, kein Trigger möglich

    Weiterhin ist mir unklar, warum z.B. bei einer Spannung von 2,3V der eine Regler “low” ausgibt, ein anderer aber “ok”… aber das ist ein anderes Thema.

    Kannst Du mir einen Tipp geben, wo mein Fehler liegt? DANKE

  42. Guten Abend,

    erstmal vielen Dank für den schönen Code 🙂

    Lese schon einige Zeit mit und habe das eine oder andere auch umsetzen können.

    Ich habe gestern einen Fibaro Tür Sensor eingebunden. Fibaro meldet in % Schritten den Battery Status, was zu einer Fehlermeldung im Log führt.

    Wie “übersetze” ich das % Zeichen?

    [code]
    PERL WARNING: Argument “89 %” isn’t numeric in numeric lt (<) at (eval 945) line 1.
    [/code]

    1. das selbe problem habe ich auch.
      mein fibaro motionsensor meldet ebenfalls “100 %” als batteriewert.
      es scheint aber trotzdem zu funktionieren.

      leider geht bei meinen zwave geräten das activity tracking mangels des activity wertes nicht. schade.

  43. Nabend,

    @Andre + disorganizer:

    Evtl. hilft euch die Commandref von Fhem weiter und zwar insbesondere “stateCmd” und “stateFormat”. Ich hatte kürzlich irgendwo gelesen, dass man damit die Inhalte von “State” direkt beeinflussen kann, insbesondere das %-Zeichen abzuschneiden. Leider habe ich kein Lesezeichen gesetzt, so dass ich keinen direkten Link habe. Ich selbst nutze das (noch) nicht.

    Hth

  44. Ich überprüfe die battery readings von homematic und zwave geräte in einem reading. Um das %-Zeichen bei den zwave Geräten zu filtern, verwende ich dafür:

    {return $NUM if($VALUE =~ m/%/); return “0” if( $VALUE eq “low” ); …}

    Im Prinzip wird hier als erstes überprüft, ob Value ein % Zeichen enthält, wenn ja wird nur der numerische Wert verwendet. Funktioniert dann also auch mit allen %-Werten, die geliefert werden.

  45. Hier eine Alternative, die um 12:00 alle Geräte durch geht:
    define a_Battery at *12:00:10 {\
    my @monitored=devspec2array(“[Bb]attery=low”);;\
    my $cnt_devs=@monitored;;\
    my $i = 0;;\
    my $msgtext = “”;;\
    foreach(@monitored) {\
    $msgtext .= AttrVal($_,”alias”,$_);;\
    if ($i 0) {\
    #fhem (“set Pushover msg ‘FHEM-WARNUNG’ ‘$msgtext Batterie low'”);;\
    #fhem (“set Telegram msg $msgtext Batterie low”);;\
    prowl(“$msgtext”,”Batterie leer”,”1″,”T”);;\
    } else {\
    #fhem (“set Pushover msg ‘FHEM’ ‘Alle Batterien okay'”);;\
    #fhem (“set Telegram msg Alle Batterien okay”);;\
    #prowl(“$msgtext”,”alle Batterieen OK”,”1″,”T”);;\
    }\
    }

  46. Zwie Fragen zu der reading group:
    Bekommt man das hin daß das alphabetisch sortiert ist?
    Und kann man das “battery” bzw. “batterylevel” abschneiden lassen?

  47. Hallo Jungs,

    habe das originale Push von oben eingebaut, funktioniert allerdings nicht so wie es soll. Irgendetwas stimmt mit den IF’s nicht, bei mir wird die push immer für alle Geräte verschickt > also jeden Tag. Nur beim ersten Gerät greift die Angabe das Datums.

    Runter gebrochen: zum test ein check auf “ok*, heute Mittwoch, auf Pusbullet angepasst

    define PushBatteryLow at *13:00:00 {if ( $wday == 3 ) \
    {if (ReadingsVal(“Bad”, “battery”, “-1”) eq “ok”)\
    {fhem (“set Push message WZ Battery ok!”)}\
    };;\
    {if (ReadingsVal(“WZ”, “battery”, “-1”) eq “ok”)\
    {fhem (“set Push message WZ Battery ok!”)}\
    }
    }

    -> Schickt mir heute Bad und WZ als Push
    -> Schickt mir morgen WZ also Push -> schickt quasi jeden Tag WZ status

    Hat hier jemand eine Idee?

    Danke euch

  48. Weil Deine Klammern falsch sitzen. Ich habe das mit Einrückungen mal lesbarer gemacht:

    define PushBatteryLow at *13:00:00 {
    if ( $wday == 3 )
    {if (ReadingsVal(“Bad”, “battery”, “-1”) eq “ok”)
    {fhem (“set Push message WZ Battery ok!”)}
    };;
    {if (ReadingsVal(“WZ”, “battery”, “-1”) eq “ok”)
    {fhem (“set Push message WZ Battery ok!”)}
    }
    }

    Die WZ-Abfrage ist nicht im Mittwochs-if enthalten sondern wird auch abgearbeitet, wenn Donnerstag ist.

  49. Die Forumssoftware verschluckt vorgestellte Leerzeichen. Hier nochmal mit Unterstrichen statt Leerzeichen

    define PushBatteryLow at *13:00:00 {
    __if ( $wday == 3 )
    ____{if (ReadingsVal(“Bad”, “battery”, “-1”) eq “ok”)
    ______{fhem (“set Push message WZ Battery ok!”)}
    ____};;
    __{if (ReadingsVal(“WZ”, “battery”, “-1”) eq “ok”)
    ____{fhem (“set Push message WZ Battery ok!”)}
    __}
    }

  50. danke dir 🙂
    verschicken tut er damit, aber der Tag spielt keine Rolle – egal ob 3 oder 4 – er verschickt immer. dafür aber für beide geräte.

    bekomme beim Speichern der cgf auch einen: ERROR:
    Unknown command if, try help. Unknown command if, try help. Unknown command {if, try help. Unknown command };, try help. Unknown command {if, try help. Unknown command }, try help. Unknown command }, try help.

    werd nicht so recht schlau daraus

  51. Meine Version oben war nur dazu da um dir zu verdeutlichen warum Deine Klammern falsch sind. Es ist keine korrigierte Version.
    Probier doch mal
    define PushBatteryLow at *13:00:00 { if ( $wday == 3 ) { fhem (“set Push message WZ Battery ok!”) } }
    ohne Zeilenumbrüche. Wenn das funktioniert fügst Du das nächste if hinzu …
    define PushBatteryLow at *13:00:00 { if ( $wday == 3 ) { if (Reading… usw.
    Wenn Du ins FHEM Wiki schaust fällt Dir dann sicher schonmal auf, daß dort vor und hinter { immer Leerzeichen stehen. Ohne daß ich jetzt die Perl-Klammerreglen gelesen hätte.
    ;; gibt es nur innerhalb des fhem() Kommandos

  52. Guten Abend, der Blog-Eintrag ist zwar schon etwas älter, jedoch müsste bei der if-Abfrage nach dem “ersten Sonntag im Monat” ( if ( $mday <= 6 && $wday == 0 ) ), wegen immer genau dann versagen, wenn ein Sonntag auf einen 7. des Monats fällt, unter der Voraussetzung, dass Perl für $mday immer von 1 beginnt, korrekt?
    Grüße, H.

  53. Guten Abend,

    warum werden bei mir nur die Thermostate bei der Batterieanzeige angezeigt und die Fensterkontakte nicht.
    Muss ich hier noch etwas aktivieren ?
    R-cyclicInfoMsg ist auf on

  54. Hallo,
    ich habe meine Definition wie folgt:

    *18:00:00 { if ( $wday == 6 )
    {if (ReadingsVal(“Fensterkontakt_Sch”, “battery”, “-1”) eq “low”)
    {fhem (“set PushoverJay msg ‘Fesnterkontakt’ ‘Bitte Batterie tauschen’ ” 0 ””)}
    };
    {if (ReadingsVal(“Tuerschloss”, “battery”, “-1”) eq “low”)
    {fhem (“set PushoverJay msg ‘Türschloss’ ‘Bitte Batterie tauschen’ ” 0 ””)}
    };
    }

    Aber irgendwo ist da ein Fehler, ich bekomme die Push Nachricht nämlich jeden Tag….?!

    Vielen dank für die Hilfe

    Gruß

    T.Meißner

    1. Klar, da das “if” nach
      {if (ReadingsVal(“Fensterkontakt_Sch”, “battery”, “-1”) eq “low”)
      {fhem (“set PushoverJay msg ‘Fesnterkontakt’ ‘Bitte Batterie tauschen’ ” 0 ””)}
      };
      endet! Türschloss ist nicht drinn. Anders formattiert:

      *18:00
      {
      if ()
      {Fenster};

      {Tür};
      }

      Vom Anfang an, ist der Quellcode dieses Notify falsch.

    2. Und wenn wir dabei sind:
      if ( $mday <= 6 && $wday == 0 )

      funktioniert nicht wenn der erste Sonntag des Monats der 7. ist. Wie in Mai dieses Jahr.

  55. Hi,

    danke für den Artikel.

    Kann man die Devices, die sich in der readingsGroup befinde, via Perl auslesen? Dann könnte man diese Liste für die Pushover-Benachrichtigungen verwenden.

    Danke und Grüße
    tom

  56. Bekomme immer den Fehler:

    Unrecognized character \xC2; marked by <– HERE after q "low")\ <– HERE near column 123 at (eval 31639) line 1.

    Selbst beim 1:1 kopieren vom Beitrag. (Unterschiedliche Browser schon benutzt)

    1. Hallo,
      Könnte evtl an den Anführungszeichen bei “low” liegen. Oder eine Klammer zu viel oder zu wenig….
      Wie ist denn der komplette Code?

      Gruß

      Thorsten

  57. Guten Morgen, danke für den Beitrag
    Ich habe das Problem daß wenn er auslöst er mir 100 Nachrichten sendet. Ich habe den Code 1zu1 übernommen. Habe ich er vergessen?
    LG Andre

  58. Hallo,
    wegen den doppelten Einträgen usw. macht kein Leerzeichen und auch kein \ rein sondern nur ein Komma als so:
    define ZE.Batterie readingsGroup .*:[Bb]attery,.*:[Bb]atteryLevel
    Dann sollte es klappen
    MfG Uwe

  59. Hallo Jörg, ich habe jetzt im Userreading zahlen von 0 -100 die den Batteriestatus darstellen. Was muss ich verändern damit diese Werte auch richtig angezeigt werden, sowie bei Low und ok. Denn das funktioniert wunderbar. Danke
    MfG. Sven

  60. Hallo,
    ist zwar schon etwas her aber was mache ich denn wenn ich solche Readings habe:
    battery 100
    batteryPercent 100
    batteryState ok

    Die sind alle von einem Device (Aqara Wassersensor)… Ich müsste also auch irgendwie den Wert 100 in dem Script aufnehmen.

    Jemand eine Idee?

    Grüße Dave

  61. Guten Tag

    Ich habe Eurotronic 700018 Comet DECT
    Termostate die battery in Zb. 20% Anzeigen und batteryState ok
    batterylow 0
    In der Zentral wird aber bei 20% Status grün Angezeigt obwohl die Batterie 🔋 bei 20% steht im Fhem des Termostates?

  62. Hallo ich habe entsprechend noch Anpassungen für battery <25%, <50% und ‘measure_battery_0@red’,’battery.25′ => ‘measure_battery_25@orange’,’battery.50′ => ‘measure_battery_50@orange’,’battery.75′ => ‘measure_battery_75@green’,’battery.100′ => ‘measure_battery_100@green’,’Battery.0′ => ‘measure_battery_0@red’,’Battery.100′ => ‘measure_battery_100@green’,’batteryLevel.0′ => ‘measure_battery_0@red’,’batteryLevel.25′ => ‘measure_battery_25@red’,’batteryLevel.50′ => ‘measure_battery_50@orange’,’batteryLevel.75′ => ‘measure_battery_75@green’,’batteryLevel.100′ => ‘measure_battery_100@green’}

    Gruß
    sTaN

  63. Hallo, was muss ich denn ändern, wenn ich mich nicht bei 0% benachrichtigen lassen will, sondern wenn battary unter 40% fällt?

    *19:00 {if ($mday == 1)
    {if (ReadingsVal(“BD_Badezimmer_Sensor_Xiaomi”, “battery”, “-1”) eq “0”)
    {fhem (“set MartinPush msg ‘TempSensor Bad’ ‘Bitte Batterie tauschen’ ” 0 ””)}

    Danke!

    1. Hallo, was muss ich denn ändern, wenn ich mich nicht bei 0% benachrichtigen lassen will, sondern wenn battary unter 40% fällt?

      *19:00 {if ($mday == 1)
      {if (ReadingsVal(“BD_Badezimmer_Sensor_Xiaomi”, “battery”, “-1”) < 40) {fhem ("set MartinPush msg 'TempSensor Bad' 'Bitte Batterie tauschen' '' 0 ''")}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen