"LOWBAT" Nachrichten schicken

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

"LOWBAT" Nachrichten schicken

Beitrag von Cyrelian »

Hallo zusammen,

nachdem ich nun einige Geräte habe die batteriebetrieben sind, wollte ich mir bei niedrigem Batteriestand eine Nachricht via Pushover, Telegram oder WhatsApp schicken.
Habt jemand von Euch das schon realisiert? Würde mich brennend interessieren wie :D .
Ich dachte da an sowas:

Code: Alles auswählen

then
	val EGLowBattery = gSysBattery?.members.filter(Battery| Battery.lowbat == 1)
Habs aber noch nicht getestet.

CYA
Cyrelian

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: "LOWBAT" Nachrichten schicken

Beitrag von seppy »

Hi,

ich habe angefangen eine Rule dafür zu bauen, bin aber bis heute noch nicht fertig geworden. So sehen meine ersten Versuche dazu aus:

Code: Alles auswählen

var String msg = null

rule "Cron_BatteryCheck"
when
	Time cron  "0 0 0/5 * * ?"
then
	
	logInfo("HomeBox.SystemRules:Cron_BatteryCheck", "Starte Batterie Check")
	gSysBatteryState?.members.forEach[t | 
		if (t.state == true){
			msg = msg + t.name + " " + t.state.toString()
		}
		logInfo("HomeBox.SystemRules:Cron_BatteryCheck", t.name + " " + t.state)
	]
	if (msg != null){
		executeCommandLine("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/homebox.config@@-s@@XXXX@@HomeBox Batteriewarnung: Die folgenden Devices melden einen schwachen Batteriestand: " + msg + "")
		msg = null
	}
end

In der Systemgruppe "gSysBatteryState" sind bei mir alle Batteriezustands-Parameter der Devices.

Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: "LOWBAT" Nachrichten schicken

Beitrag von Cyrelian »

Hi Seppy,

danke für die schnelle Rückmeldung. Habs gerade mal nachgebaut...geht :D . Bei mir steht jetzt auch bei den neuen Kontakten "false"

CU
Cyrelian

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: "LOWBAT" Nachrichten schicken

Beitrag von Cyrelian »

Hi Seppy,

bei mir schein innerhalb der Rule der erste IF Teil if (battery.state == true) nicht zu klappen. Fehler gibt´s keine in Log :?
Auch die Änderung der Abfrage ergab nichts.

Code: Alles auswählen

rule "Batterie Check (cron)"
when
	//Time cron  "0 0 0/24 * * ?"
	//Time cron "0 0 15 * * ?"
	Time cron  "0/30 * * * * ?"
then
   logInfo("SystemRules:Batterie Check (cron)","Starte Batterie Check")
   gSysBattery?.members.forEach[battery | 
      if (battery.state == true){
         BatteryStateMsg = BatteryStateMsg + battery.name + " " + battery.state.toString()
      }
      //logInfo("SystemRules:Batterie Check (cron)", battery.name + " " + battery.state)
      logInfo("SystemRules:Batterie Check (cron)", BatteryStateMsg)
   ]
   if (BatteryStateMsg != null){
      pushover	("Die folgenden Devices melden einen schwachen Batteriestand: " + BatteryStateMsg + "")
      BatteryStateMsg = null
   }
end


Bei mir ist die "BatteryStateMsg" immer "null". Wobei wenn ich über die Rest API schaue, siehts so aus:

Code: Alles auswählen

<type>StringItem</type>
<name>GarageTorsensorBattery</name>
<state>true</state>
<link>
http://192.x.x.x:8080/rest/items/GarageTorsensorBattery
</link>
CYA
Cyrelian

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: "LOWBAT" Nachrichten schicken

Beitrag von seppy »

Hi,

so sieht meine Regel inzwischen aus. So funktioniert das bei mir (msg ist eine Variable vom Typ String):

Code: Alles auswählen

gSysBatteryState?.members.forEach[t | 
		if (t.state.toString() == "true"){
			if (msg == null){
				msg = transform("MAP","devices.map",t.name)  + "\n"
			} else {
				msg = msg + transform("MAP","devices.map",t.name) + "\n"	
			}
		}
		logInfo("HomeBox.SystemRules:Cron_BatteryCheck", t.name + " " + t.state)
	]
	if (msg != null){
		pushover("Batteriewarnung für die Devices:\n" + msg,1)
		msg = null
	}
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: "LOWBAT" Nachrichten schicken

Beitrag von Cyrelian »

Hi Seppy,

sehr NICE.

Code: Alles auswählen

state.toString()
.....war der Zaubercode :D

THX
Cyrelian

Antworten