da ich dauernd vergessen habe rechtzeitig die Mülltonnen an die Strasse zu stellen, habe ich den Abfallkalender meines Entsorgers (RSAG) in openHAB eingebunden. Basis dafür war mein Transformation Script für die Feiertagserkennung.
Wie die meisten Entsorger, bietet auch meiner den Abfallkalender im ical Format an. Leider haben sich bei der RSAG ein paar Marketingspezialisten überlegt den Download des Kalenders hinter einer wilden App zu verstecken. Also muss ich einmal im Jahr den Download manuell machen und die Datei bei mir im Netz ablegen.
Ich habe für den Müllkalender die folgenden Items angelegt:
Code: Alles auswählen
/**
* Müllkalender Abfuhrtermine
* 1800000
*/
String GlobalGarbageICAL
{http="<[http://URL.local/static/RSAG_Abfuhrtermine_%1$tY.ics:1800000:JS(ical_garbage.js)]"}
Switch GlobalGarbageCollection
"Müllabfuhrtermin [%s]"
String GlobalGarbageName
Der Schalter "GlobalGarbageCollection" enthält den aktuellen Status, also morgen wird Müll abgeholt (ON) oder eben nicht (OFF).
Der letzte String "GlobalGarbageName" enthält den anzuzeigenden Wert.
Das Transformation Script kann hier heruntergeladen werden: Bitte beachtet, dass die Textdatei natürlich in ical_garbage.js umbenannt werden muss und im Script einige String Anpassungen gemacht werden, die spezifisch für meinen Entsorger sind. Abzulegen ist die Datei dann im "Transform" Verzeichnis.
Meine zugehörige Regel (Rule) sieht dann wie folgt aus:
Code: Alles auswählen
/**
* Müllabfuhrtermine prüfen
*/
rule "Event_Garbage"
when
Item GlobalGarbageICAL changed
then
var String rulemsg = null
//Prüfen ob morgen Mülltermin ansteht
if (GlobalGarbageICAL.state != "false" && GlobalGarbageICAL.state != "Uninitialized"){
GlobalGarbageCollection.postUpdate(ON)
GlobalGarbageName.postUpdate(GlobalGarbageICAL.state)
logInfo("HomeBox.SystemRules:Event_Garbage", "GlobalGarbageICAL changed: Updated GarbageCalendar Status: " + GlobalGarbageName.state)
rulemsg = "Morgen werden die folgenden Mülltonnen abgeholt:\n" + GlobalGarbageName.state
executeCommandLine("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/homebox.config@@-s@@12345-12345@g.us@@" + rulemsg + "@@-M")
msg = "ERINNERUNG: Heute ist Müllabfuhrtermin für " + GlobalGarbageName.state
var DateTime reminder = parse(now.getYear() + "-" + now.getMonthOfYear() + "-" + now.getDayOfMonth() + "T08:00")
var DateTime alarm = reminder.plusDays(1)
GarbargeTimer = createTimer(alarm) [|
executeCommandLine("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/homebox.config@@-s@@12345-12345@g.us@@" + msg + "@@-M")
]
} else {
GlobalGarbageCollection.postUpdate(OFF)
GlobalGarbageName.postUpdate("false")
logInfo("HomeBox.SystemRules:Event_Garbage", "Updated GarbageCalendar Status: " + GlobalGarbageName.state)
}
end
Zu guter letzt habe ich in meiner Sitemap einen passenden Erinnerungsbereich gebaut:
Code: Alles auswählen
Frame label="Informationen" visibility=[GlobalGarbageCollection==ON, GlobalHoliday==ON] {
Text item=GlobalGarbageName label="Müllabfuhrtermin [%s]" icon="recyclebin" labelcolor=[GlobalGarbageCollection==ON="red"] visibility=[GlobalGarbageCollection==ON]
Text item=GlobalHolidayName label="Ferien/Feiertag [%s]" icon="calendar" visibility=[GlobalHoliday==ON]
}
Das sieht bei mir dann so aus: Vielleicht hilft das ja dem einen oder anderen morgens nicht im Schlafanzug auf der Strasse Mülltonnen zu räumen. Was mir jetzt noch fehlt wäre so eine Mülltonnen Tiefgarage, die dann per openHAB aus dem Boden fährt ...
Grüße,
Seppy