Seite 1 von 1
"LOWBAT" Nachrichten schicken
Verfasst: 6. Mär 2016 17:12
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
.
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
Re: "LOWBAT" Nachrichten schicken
Verfasst: 7. Mär 2016 09:27
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
Re: "LOWBAT" Nachrichten schicken
Verfasst: 7. Mär 2016 19:17
von Cyrelian
Hi Seppy,
danke für die schnelle Rückmeldung. Habs gerade mal nachgebaut...geht
. Bei mir steht jetzt auch bei den neuen Kontakten "false"
CU
Cyrelian
Re: "LOWBAT" Nachrichten schicken
Verfasst: 2. Jan 2017 16:54
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
Re: "LOWBAT" Nachrichten schicken
Verfasst: 2. Jan 2017 18:21
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
}
Re: "LOWBAT" Nachrichten schicken
Verfasst: 2. Jan 2017 20:48
von Cyrelian
Hi Seppy,
sehr NICE.
.....war der Zaubercode
THX
Cyrelian