Es ist Winter, dass Wetter schlecht und größere Projekte im FHEM Umfeld stehen aktuell nicht wirklich an. Daher nutze ich mal die Zeit und stelle an dieser Stelle das Abfallmodul aus FHEM vor, welches ich inzwischen schon seit knapp 3 Jahren erfolgreich im Einsatz habe. Ein durchaus nettes Abfuhrkalendermanagement.
Natürlich gibt es von den Abfuhrunternehmen und Gemeinden inzwischen auch etwaige APPs oder socialMedia Kanäle, welche über die Abfuhr der Restmühltonne etc. informieren. Aber nett wäre es doch, wenn man genau diese Informationen und Termine in seinem SmartHome auf Tablets darstellen und über weitere Kommunikationswege,wie beispielsweise Sprachansagen, zugänglich machen könnte. Gesagt getan. Genau dafür bietet sich das FHEM Modul “ABFALL” an.
Detailinformationen und Abhängigkeiten kann man dem FHEM WiKi entnehmen. Wir machen uns gleich erstmal an die Einrichtung.
Der Abfuhrkalender
Als erstes benötigen wir den Abfuhrkalender. Die Entsorgungsunternehmen stellen diese mittlerweile als reine ICS Kalenderdatei zur Verfügung. Diese ICS Datei kann man entweder direkt als Datei nutzen oder aber importiert sich diese in eine vielleicht eh schon vorhandene Kalenderintegration in FHEM. Das kann beispielsweise ein Google o. Nextcloud Kalender sein.
Im Beispiel, stellen wir diese direkt als ICS File auf dem FHEM Server bereit. Dafür läft man sich bei seinem Entsorger die ICS herunter. In meinem Fall (Fa. Lobbe), findet man die ICS hier.
Anschliessend speichern wir diese Datei direkt im root Verzeichnis der FHEM Installation.
In Fhem definieren wir dann zunächst den Kalender als solchen:
define Abfall_Kalender Calendar ical file Abfall.ics 86400
Die 86400 gibt an, in welchem Intervall diese gelesen werden soll. Im Grunde reicht hier ja einmal. Haben wir allerdings den Kalender aktualisiert, sollte dieser auch erneut eingelesen werden. 86400 Sekunden entsprechen dabei dem Intervall von 24 Stunden.
Im nächsten Schritt initialisieren wir unser eigentliches Abfall Modul, welches sich auf den zuvor erstellen Kalenderimport bezieht:
define Muelltonnen ABFALL Abfall_Kalender 3600 attr Muelltonnen alias Muelltonnen attr Muelltonnen devStateIcon Restabfall:message_garbage@grey Bioabfall.:message_garbage@green Gelber.:message_garbage@yellow Altpapier.:message_garbage@blue attr Muelltonnen event-on-change-reading . attr Muelltonnen room Kalender,Abfallkalender attr Muelltonnen stateFormat next_text
Die Angabe von 3600 entspricht einem Aktualisierungsintervall von 1 Stunde.
Zu guter Letzt erstellen wir uns noch eine schicke Ansicht für das FHEM Webinterface ind Form einer ReadingGroup.
Define Muelltonnen_Anzeige readingsGroup <%message_garbage>,,,, NAME=Muelltonnen:next_date,next_weekday,next_text,next_days
attr Muelltonnen_Anzeige DbLogExclude .*
attr Muelltonnen_Anzeige alias Muelltonnen_Anzeige
attr Muelltonnen_Anzeige room Kalender,Abfallkalender
Haben wir alles richtig gemacht, wird zum einen das ICS File gelesen, das Modul initialisiert und die ReadingGroup wie folgt dargestellt:
Erinnerung per Sprachansage und Telegram Message
Nun legen wir noch eine Schippe oben drauf und lassen uns am Vortrag sowie am Abholtag via Sprachansage über die bevorstehende Abholung informieren. Die Spracherinnerung gibt uns nicht nur eine Hinweis darüber das Müll abgefahren wird, sondern auch direkt welche Art von Müll abgeholt wird. Diese Informationen werden entsprechend Variabel aus der ICS Datei und dem Abfasll Modul gelesen. Das ganze realisieren wir in einem klasschen DOIF.
define doif_Abfall DOIF ([19:30] and [Muelltonnen:next_days] == 1)\ (set DeinBot message @-1234567890'Müll' 'Morgen wird [Muelltonnen:next_text] abgeholt';; set myTTS tts Erinnerung - Morgen wird [Muelltonnen:next_text] abgeholt. Tonne rausstellen nicht vergessen;; set ECHO_Speaker1 speak Morgen wird [Muelltonnen:next_text] abgeholt. Tonne rausstellen nicht vergessen;; set ECHO_Speaker2 volume 10;;set ECHO_Speaker2 speak Erinnerung - Morgen wird [Muelltonnen:next_text] abgeholt. Tonne rausstellen nicht vergessen)\ DOELSEIF ([07:00] and [Muelltonnen:now_text] ne "")\ (set DeinBot message @-1234567890 'Müll' 'Heute wird [Muelltonnen:now_text] abgeholt';;set ECHO_Speaker1 volume 10) attr doif_Abfall DbLogExclude .* attr doif_Abfall alias Müll: Benachrichtigung am Vortag um 19:30 und am selben Tag um 07:00 Uhr attr doif_Abfall checkReadingEvent 1 attr doif_Abfall do always attr doif_Abfall room Logik
Darstellung auf TabletUI
Möchte man nun das Ganze noch auf sein TabletUI bringen, passt man den Quell Code der index.html im TabletUI wie folgt an:
<div class="col-1-4">
<div class="row">
<br><br>
<div data-device="Muelltonnen" data-type="symbol" class="warn" data-get="Abfall_Kalender_Restabfall_days" data-get-warn="-1" data-color="gray" data-icon="fa-trash-o"></div>
<div data-device="Muelltonnen" data-type="label" class="small" data-get="Abfall_Kalender_Restabfall_date"></div>
</div>
</div>
<div class="col-1-4">
<div class="row">
<br><br>
<div data-device="Muelltonnen" data-type="symbol" class="warn" data-get="Abfall_Kalender_Bioabfall_days" data-get-warn="-1" data-color="green" data-icon="fa-trash-o"></div>
<div data-device="Muelltonnen" data-type="label" class="small" data-get="Abfall_Kalender_Bioabfall_date"></div>
</div>
</div>
<div class="col-1-4">
<div class="row">
<br><br>
<div data-device="Muelltonnen" data-type="symbol" class="warn" data-get="Abfall_Kalender_GelberSackWertstofftonne_days" data-get-on="Abfall_Kalender_GelberSackWertstofftonne_days" data-get-warn="-1" data-color="yellow" data-icon="fa-trash-o"></div>
<div data-device="Muelltonnen" data-type="label" class="small" data-get="Abfall_Kalender_GelberSackWertstofftonne_date"></div>
</div>
</div>
<div class="col-1-4">
<div class="row">
<br><br>
<div data-device="Muelltonnen" data-type="symbol" class="warn" data-get="Abfall_Kalender_Altpapier_days" data-get-warn="-1" data-color="blue" data-icon="fa-trash-o"></div>
<div data-device="Muelltonnen" data-type="label" class="small" data-get="Abfall_Kalender_Altpapier_date"></div>
</div>
</div>
</div>
Passt alles, sieht das Ergebnis so aus:
Bei all dem Komfort, muss man aber leider immer noch den Müll selbst rausbringen und die entsprechende Tonne an der Strasse platzieren.
Zumindest noch 🙂