Überwachung batteriebetriebener Homematic-Geräte in openHAB2

In manchen Fällen lohnt es sich, auf batteriebetriebene Aktoren zu setzen, welche nicht dauerhaft am Strom hängen. Leider wird irgendwann einmal aber dann die Batterie leer sein.

Wenn nun z.B. ein Bewegungsmelder, den man in ein Alarmsystem eingebaut hat, dadurch ausfällt, kann das schon ärgerlich sein. Daher möchte ich einen Warnmechanismus, der mir rechtzeitig sagt, bei welchem Gerät die Batterien gewechselt werden sollen.

Ich selbst habe als batteriebetriebene Geräte folgende im Einsatz.

Die Homematic-Geräte bieten einen Kanal an, der bei kritischem Batterielevel auf ON schaltet. Diese Information kann man dann in Regeln einfach Abfragen oder / und in der Sitemap visualisieren.

Damit wir in den Rules nicht alle Schalter direkt kennen müssen bilden wir eine Gruppe Namens lowbat, zu welcher wir alle mit dem jeweiligen LOWBAT-Kanal verbundenen Items hinzufügen. Damit ist es später auch einfach, neue weitere Geräte in die Überwachung mit einzufügen. Sie müssen einfach nur Mitglied der Gruppe lowbat werden.

Einmal bei Systemstart, dann jeweils einmal am Tag um Mitternacht und jedes Mal, wenn sich in der Gruppe lowbat tatsächlich etwas ändert, wird in der Rule dann geprüft, ob irgendwo die Batterie leer ist. Ist sie leer, gibt es eine Push-Nachricht per Telegram.

items-Datei

Group lowbat
Switch LICHT_ZIMMERXYZ_LOWBAT (lowbat) {channel="homematic:HG-HM-PB-2-WM55:xxxxxxxx:xxxxxxxxxx:0#LOWBAT"}
 rules-Datei
rule "Batteriebetriebene Geräte überwachen. Geräte müssen der Gruppe lowbat zugeordnet sein"
when
Member of lowbat changed or
System started or
Time cron "0 0 0 * * ?"
then
var Integer z = 0
var String s = ''
lowbat?.members.forEach[i|
if (i.state == ON) {
s = s + "\n" + i.name
z++
}
    ]
if (z > 0) {
var String meldetext = 'Batteriewarnung für ' + z + ' Gerät(e): ' + s
logInfo('rules', meldetext)
sendTelegram('bot1', meldetext)
sendTelegram('bot2', meldetext)
}
end

4 Antworten auf „Überwachung batteriebetriebener Homematic-Geräte in openHAB2“

  1. Hallo Florian,
    vielen Dank für diese Anleitung.
    Da ich recht neu bin in dem OpenHAB Gebiet, hätte ich ein paar Fragen zur der o.g. Rule.

    Bei mir meckert Visual Studio Code die Rule an,
    – The method or field varInteger is undefined
    – The method z(int) is undefined
    – The method or field varString is undefined
    – The method s(String) is undefined
    – The method or field s is undefined

    muss ich die varInteger noch irgendwo anlegen?
    Sorry für die vielen Fragen.

    Gruß
    Sascha

    1. Es handelt sich um einen Tippfehler. Nach dem „var“ ist immer ein Leerzeichen. Ich werde das gleich berichtigen im Artikel… Danke für den Hinweis.

  2. Hallo Florian,

    danke für deine Nachricht.
    Habe aber leider immer noch ein kleines Problem, vielleicht kannst du mir damit auch weiterhelfen.
    bei mir werden die Wert in der Rule
    s = s + „\n“ + i.name (s und z rot markiert)
    z++
    annot refer to the non-final variable s inside a lambda expression‘

    Hast du dazu vielleicht eine Idee?
    Gruß
    Sascha

    1. Sascha das kannst Du ignorieren. Das ist eine Meldung die Visual Studio Code auswirft, aber alles funktioniert trotzdem. Wenn das stört einfach s und z als globale Varible (also ganz oben im Rule-File) definieren und nicht in der Rule selsbt (gefällt mir persönlich aber nicht, da ich die Variablen nur in der konkreten Rule brauche und daher diese auch dort definiert haben will).

      Siehe auch https://community.openhab.org/t/cannot-refer-to-the-non-final-variable-i-inside-a-lambda-expression/27506

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Durch die weitere Nutzung der Seite wird der Verwendung von Cookies und den Inhalten der Datenschutzerklärung zugestimmt. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen