Für jeden Gegenstand separat eine Rule einzurichten, um deren Batteriestatus zu überwachen, ist Fehleranfällig. Auf wenn du jedes Batterie-Item zusammengefasst in eine Regel unterbringen willst, passieren Fehler. Irgendwas vergisst du immer, wenn du ein neues Gerät in dein Netz einbringst und an zwei Stellen Änderungen dafür machen musst.
Eleganter ist es, eine Regel zu verfassen, welche sich selbst alle Batterie-Items raussucht und deren Status einmal täglich abruft.
/etc/openhab/items/[Beispielitem].items
Number ThermostatWohnzimmer1_Battery "Battery level [%.1f %%]" <Battery> (igThermostatWohnzimmer)["Battery","Measurement","Energy"] { channel="mqtt:topic:myMosquitto:ThermostatWohnzimmer1:battery" }
Beispiel: An diesem Item hängt einfach der „Battery“-Tag dran
/etc/openhab/items/batteries.rules
Vergiss nicht, deinen Telegram-Bot dafür zu konfigurieren.
import org.openhab.core.model.script.ScriptServiceUtil
// --- Batterien: Thermostate, Tür-/Fensterkontakte ---
rule "Send telegram on radiator battery low"
when
Time cron "0 0 17 * * ?"
then {
val batteries = ScriptServiceUtil.getItemRegistry.getItemsByTag("Battery")
batteries.forEach[ NumberItem item |
if(item.state != NULL){
if((item.state as Number).intValue <= 20){
var groupLabels = ""
item.groupNames.forEach[ String groupName |
var groupLabel = ScriptServiceUtil.getItemRegistry.getItem(groupName).label
groupLabels = groupLabels + " " + groupLabel
]
getActions("telegram","telegram:telegramBot:home_Bot").sendTelegram(-000000000L,
"Batterie fast leer: %s - %s",
groupLabels,
item.label
)
}
}
]
}
end
Diese Rule sucht sich einmal täglich alle Batterie-getaggten Items heraus und prüft, ob einer davon unter 20 liegt. Die Batterie-Items sollten entsprechend alle als Prozent-Werte geführt werden.
Pingback: Zigbee IR Remote mit OpenHAB - Smarthome DIY - Heimautomatisierung selbst gemacht
Pingback: OpenHAB: Wenn man vergisst das Fenster zu schließen - Smarthome DIY - Heimautomatisierung selbst gemacht