Abfallkalender in ioBroker integrieren

In diesem Artikel zeige ich Dir, wie Du den Abfallkalender in ioBroker integrieren kannst.

Für meine neue Visualisierung benötige ich die Termine der Abfallabholung getrennt nach Art der Abholung (Restmüll, Biomüll, Flach und Rund). In einem anderen Artikel habe ich bereits gezeigt, wie Du ein Kalender über den Adapter „ical“ integrieren kannst. Ich werde in diesem Artikel nicht mehr auf die Installation des Adapters eingehen, da ich die Installation und Konfiguration bereits im anderen Artikel beschrieben habe.

Die Termine der Abfallabholung erhält man in der Regel von den entsprechenden Entsorgungsbetrieben. Bei uns stehen die Termine als ics-Datei zur Verfügung, welche ich einfach und schnell in einen Kalender importieren kann. Im ersten Schritt habe ich also die Termine als ics-Datei heruntergeladen und in einen neuen Google Kalender importiert.

Bevor wir mit der eigentlichen Verarbeitung des Kalenders beginnen können, legen wir uns im ersten Schritt nun eigene Datenpunkte für die Termine der Abholungen an.

 

Den Google Kalender habe ich dann im nächsten Schritt in den Adapter „ical“ eingefügt.

 

Wenn wir nach dem Speichern des Adapters nun in die Objekte wechseln, sehen wir unter dem Adapter „ical.0“ die entsprechenden Termine im HTML-Format sowie als JavaScript Objekte (table). Wir können jetzt also die einzelnen Objekte genauer untersuchen und die gewünschten Informationen (Datum und Art der Abholung) ermitteln.

 

Im nächsten Schritt können wir nun ein Skript erstellen, mit dem wir den Datenpunkt ical.0.data.table via Skript analysieren. Dazu habe ich die Funktion UpdateAbfallTermine erstellt, welche den Inhalt des Datenpunktes liest und dann mit einer Schleife durchläuft. Die Termin sind absteigend vom heutigen Tag an sortiert. Daher können wir einfach immer das Auffinden eines Termins (z.B. Restmüll) erkennen und uns dann das Datum auslesen und im Datenpunkt speichern. Die Funktion wird über die on(…)-Subscription automatisch bei einer Änderung des Datenpunktes aufgerufen. Da der Kalender Jede 0 und 30 Minute jede Stunde aktualisiert wird, haben wir so immer die aktuellen Termine im Kalender.

 

on({id: "ical.0.data.table", change: "ne"}, function (obj) { UpdateAbfallTermine(); });

function UpdateAbfallTermine() {
var TerminFlach = "";
var TerminRund = "";
var TerminBio = "";
var TerminRest = "";

var Termine = getState("ical.0.data.table").val;

for (var i in Termine) {
var Termin = Termine[i];

if ( Termin.event == "Restmüll" && TerminRest == "" ) {
TerminRest = Termin.date;
}

if ( Termin.event == "Biogut" && TerminBio == "" ) {
TerminBio = Termin.date;
}

if ( Termin.event == "Flach" && TerminFlach == "" ) {
TerminFlach = Termin.date;
}

if ( Termin.event == "Rund" && TerminRund == "" ) {
TerminRund = Termin.date;
}
}

setState('Datenpunkte.0.Visualisierung.Abfalltermine.Rest', TerminRest);
setState('Datenpunkte.0.Visualisierung.Abfalltermine.Bio', TerminBio);
setState('Datenpunkte.0.Visualisierung.Abfalltermine.Flach', TerminFlach);
setState('Datenpunkte.0.Visualisierung.Abfalltermine.Rund', TerminRund);
}

UpdateAbfallTermine();

 

Im nächsten Speichern wir das Skript und aktivieren wir es. Dadurch werden jetzt die Datenpunkte entsprechend gefüllt. Die Abfalltermine können wir nun einfach auf unserer Visualisierung darstellen.

 

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

3 Gedanken zu „Abfallkalender in ioBroker integrieren

  • Pingback:Visualisierung – Teil 4.2 – Implementierung – Übersicht – smarthome-tricks.de

  • 12. November 2018 um 21:13
    Permalink

    Leider bekomme ich das nicht hin mit der Anlage von Datenpunkte.0; Visualisierung etc.
    Können sie mir eine genauere Anleitung zur Verfügung stellen?

    Vielen Dank

    Antwort
  • 20. Dezember 2018 um 14:51
    Permalink

    Guten Tag, ich habe jetzt Stunden den Fehler gesucht und finde ihn nicht.
    Wenn ich das Skript benutze funktioniert es einwandfrei. Mit Ausnahme von Übermorgen.
    Wenn ich im ICAL in der Instanz die Funktion „Ersetze Datum mit Worten“ deaktiviere wird das richtige Datum angezeigt für den Müll der übermorgen abgeholt werden soll.
    Wenn ich dann auf „Ersetze Datum mit Worten“ zurück gehe, steht kurz in dem Objekt (Datenpunkt) „Übermorgen“ wird dann aber sofort durch das Datum ersetzt. Noch schlimmer ist es wenn sich ein Termin von einem anderen Tag auf übermorgen verschiebt. Dann läuft das Skript durch und der urspüngliche Termin wird angezeigt und das verschieben auf übermorgen wird ignoriert. Mit „Heute“ und“Morgen“ funktioniert das alles einwandfrei. PS: Ich beschreibe keine Datenpunkte in der VIS sondern SysVariablen der CCU. Ich hab keine Idee mehr. Sie vielleicht?

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere