Müllkalender via openHAB

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

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

Müllkalender via openHAB

Beitrag von seppy »

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:

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 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:
ical_garbage.txt
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
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:

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]
	}
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:
homebox3.JPG
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 ... :lol: :D

Grüße,
Seppy
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
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

mr.montesa
Beiträge: 1
Registriert: 27. Apr 2016 22:25

Re: Müllkalender via openHAB

Beitrag von mr.montesa »

Servus,
bin grade beim Googlen über deinen Beitrag gestolpert. Ich versuche mir auch grade eine "vorabendliche Pushnachricht" schicken zu lassen damit ich nicht vergesse die Tonne raus zu stellen. :D

Gibts nen Grund dass du über die Webparsing/transformation Schiene gehst? Wenns nen iCal zum Download gibt kann man den doch in owncloud/gmail calendar/etc importieren und mit dem caldav addon Objekte bauen.
Das Event kann man in ein DateTime Objekt stecken und den Titel in einen String. Ich hänge gerade an der Berechnung wann die Pushnachricht gesendet werden soll. Also DateTime - 8 Stunden oder so.
Gruß

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

Re: Müllkalender via openHAB

Beitrag von seppy »

Hi,

ich persönlich finde den Weg über einen eingebundenen Kalender nicht so .. sexy. Ich verschicke die Pushnachricht immer am Abend vorher zu einer festen Uhrzeit und am gleichen morgen noch eine Erinnerung.

Für mich war der Weg der schnellste. Aber Dein Weg würde mich - wenn er fertig ist ;) - auch interessieren!

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
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Müllkalender via openHAB

Beitrag von djuscha »

ich hab mir Müllabfuhr Kalender selber mit Google gebastelt. Muss der denn bestimmte Formatierungen erfüllen um nach deiner Anleitung zu funktionieren? und wie kann ich deine rules ändern um mich per mail zu informieren?

Code: Alles auswählen

sendMail("smart@gmail.com","müllabfuhr")

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

Re: Müllkalender via openHAB

Beitrag von seppy »

Hallo Djuscha,

Ja die Informationen müssen im iCal Format vorliegen. Wenn Du alle Termine in Deinem Google Kalender hast, könntest Du evtl. das CalDAV Binding nutzen um auf die Termine zu reagieren.

Zur zweiten Frage, in meiner Regel benachrichtige ich mich ja bereits aber eben per WhatsApp. Du müsstest nur die Zeile

Code: Alles auswählen

executeCommandLine("/opt/yowsup/yowsup-cli@@demos@@-c@@/opt/yowsup/homebox.config@@-s@@XXXXX-12345@g.us@@" + rulemsg + "@@-M")
durch Deine EMail Benachrichtigung ersetzen.

Ich hoffe das hilft.

Viele 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
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Müllkalender via openHAB

Beitrag von djuscha »

das ist doch ical format
https://calendar.google.com/calendar/ic ... /basic.ics
oder ?
für calDav Binding muss der Kalender doch so aussehen
https://www.google.com/calendar/dav/ema ... com/events

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Müllkalender via openHAB

Beitrag von alkaline »

Evtl. hat jemand auch an folgender Lösung Interesse:
- Anzeige des Termines / Art der Leerung / am Vortag der Abholung, Benachrichtigung um 18:30 Uhr via Broadcast / Telegramm
- Anzeige des Termines / Art der Leerung / am Tag der Abholung, Benachrichtigung um 06:30 Uhr via Broadcast / Telegramm
- Anzeige des nächsten geplanten Termines / Art der Leerung
- Arbeitet direkt mit der URL des Versorgers, kein Import der *.ics notwendig
- Nutzt das HTTP Binding in OH2 / verschiedene js Dateien zur Berechnung

Wenn gewünscht stelle ich die (aus anderen Quellen übernommene und auf mich angepasste) Lösung vor.
Muell_1.png
Marcus
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Müllkalender via openHAB

Beitrag von seppy »

Hi Alkaline,

klar, also ich freue mich immer über neue Anregungen und Verbesserungsvorschläge!

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
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Müllkalender via openHAB

Beitrag von alkaline »

Here we go :)

Voraussetzung sind:
Installiertes HTTP Binding und Javascript Transformation

abfall.items:
Hier ist die URL gegen eure auszutauschen, welche eigentlich jeder Abfallentsorgungsbetrieb anbietet. (Selbst bei uns auf dem Land)

Code: Alles auswählen

//Abfall heute
String ABFALL_ICAL_heute { http="<[http://www.abfallwirtschaft-ortenaukreis.de/fileadmin/ics/ical_3762.ics:360000:JS(abfall_heute.js)]" }
Switch 		ABFALL_AKTIV_heute
String 		ABFALL_NAME_heute

//Abfall morgen
String ABFALL_ICAL_morgen { http="<[http://www.abfallwirtschaft-ortenaukreis.de/fileadmin/ics/ical_3762.ics:360000:JS(abfall_morgen.js)]" }
Switch 		ABFALL_AKTIV_morgen
String 		ABFALL_NAME_morgen

// Nächste Abholung
String ABF1_NAME { http="<[http://www.abfallwirtschaft-ortenaukreis.de/fileadmin/ics/ical_3762.ics:360000:JS(abfall_naechste_abholung_name.js)]" }
DateTime ABF1_DATE { http="<[http://www.abfallwirtschaft-ortenaukreis.de/fileadmin/ics/ical_3762.ics:360000:JS(abfall_naechste_abholung_datum.js)]" }
abfall.rules:

Code: Alles auswählen

rule "Abfallkalender heute"
when
   Item ABFALL_ICAL_heute changed
then
   //Prüfen ob heute Abfall abgeholt wird
	if (ABFALL_ICAL_heute.state != "false" && ABFALL_ICAL_heute.state != "Uninitialized"){
      postUpdate(ABFALL_AKTIV_heute,ON)
      postUpdate(ABFALL_NAME_heute,ABFALL_ICAL_heute.state)
   } else {
      postUpdate(ABFALL_AKTIV_heute,OFF)
      postUpdate(ABFALL_NAME_heute,"false")
   }
end

rule "Abfallkalender morgen"
when
   Item ABFALL_ICAL_morgen changed
then
   //Prüfen ob morgen Abfall abgeholt wird
	if (ABFALL_ICAL_morgen.state != "false" && ABFALL_ICAL_morgen.state != "Uninitialized"){
      postUpdate(ABFALL_AKTIV_morgen,ON)
      postUpdate(ABFALL_NAME_morgen,ABFALL_ICAL_morgen.state)
   } else {
      postUpdate(ABFALL_AKTIV_morgen,OFF)
      postUpdate(ABFALL_NAME_morgen,"false")
   }
end

rule "Abfallerinnerung heute" // send Nachricht auf Handy via Telegramm (Marcus) und OH App (alle Nutzer)
when
Time cron "0 30 06 ? * * *" 
then
if (ABFALL_AKTIV_heute.state == ON){
sendBroadcastNotification("An den Abfall denken: " + ABFALL_NAME_heute.state)}
//sendTelegram("Marcus", "An den Abfall denken " + ABFALL_NAME_heute.state)}
end

rule "Abfallerinnerung morgen" // send Nachricht auf Handy via Telegramm (Marcus) und OH App (alle Nutzer)
when
Time cron "0 30 18 ? * * *" 
then
if (ABFALL_AKTIV_morgen.state == ON){
sendBroadcastNotification("Morgen Abfall rausstellen: " + ABFALL_NAME_morgen.state)}
//sendTelegram("Marcus", "Morgen Abfall rausstellen " + ABFALL_NAME_morgen.state)}
end
In die Sitemap einfügen:

Code: Alles auswählen

Frame label="Abfall Kalender" {
      	 		Text item=ABFALL_NAME_heute label="Abholung heute: [%s]" icon="muellwagen" visibility=[ABFALL_AKTIV_heute==ON]
        		Text item=ABFALL_NAME_morgen label="Abholung morgen: [%s]" icon="muellwagen" visibility=[ABFALL_AKTIV_morgen==ON]
        		Text item=ABF1_DATE label="Nächster Abholtermin:[%1$td.%1$tm.%1$tY]" icon="calendar" 
        		Text item=ABF1_NAME label="Was? [%s]" icon="abfall"    
        	}
transform.zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Müllkalender via openHAB

Beitrag von alkaline »

BTW:
Mit ähnlichem Schema habe ich die Feiertage und Schulferien abgebildet.

Antworten