Müllkalender via openHAB
Verfasst: 12. Apr 2016 11:28
Hallo Zusammen,
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:
Der erste String "GlobalGarbageICAL" enthält den geparsten Rückgabewert aus dem ical_carbage.js Transformation Script. Dort schaue ich einfach ob morgen Mülltonnen abgeholt werden und gebe den entsprechenden String zurück. Wenn nichts anliegt liefert das Script ein false zurück. Diesen String verwende ich nur intern un zeige ihn nicht an.
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:
Ich erinnere meine WhatsApp Gruppe dann noch, dass morgen/heute Mülltonnen rausgestellt werden müssen.
Zu guter letzt habe ich in meiner Sitemap einen passenden Erinnerungsbereich gebaut:
Im Frame Informationen zeige ich aktuelle Infos, wie Ferien, Feuermelder, offene Fenster oder aber eben Müllabfuhrtermine an.
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
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