Inhalt:
Einführung
In diesem Beitrag zeige ich auf, wie wir einen einfachen Abfallkalender in OpenHAB 3 mittels ical Binding erstellen. Das Endergebnis wird in etwa so aussehen:
Ganz unten im Beitrag, habe ich das Video mit der Schritt für Schritt Anleitung hinterlegt.
Binding installieren
Als erstes müsst Ihr euch das icalender Binding installieren. Das ist in meinem Beitrag „Kalender mittels ical einbinden“ genau beschrieben. Um überhaupt Resultate zu erhalten müssen wir in unserem Kalender gewisse Termine erstellen, ich habe mir alle Hauskehricht, Grüngutabfuhr und Karton Termine in meinem Kalender eingetragen, da dies sowieso wiederkehrende Termine sind, war dies schnell erledigt. Ich verwende den Google Kalender aber es funktioniert mit jedem andrem Kalender, der ical unterstützt, auf die gleiche Art.
Things erstellen
Wir beginnen in dem wir ein „Thing“ für die Abfragen erstellen. Ich erstelle nun für jedes Topic das ich Abfragen will ein eigenes Thing, jeweils für Hauskehricht, Grüngutabfuhr und Karton. Dazu navigieren wir auf Thing -> dann auf das Plus Symbol unten Rechts -> danach auf icalendar -> Eintragsfilter.
Als Bridge wählen wir natürlich unser icalender Binding und bei den Einstellungen weiter unten geben wir folgende Werte an:
Ergebnis-Maximum: | 1 |
Aktualisierungsintervall: | 15 |
Zeiteinheit | Tag |
Start | 0 |
Ende | 14 |
Abrundung | TRUE |
Text based Filter: | Betreff / Titel |
Suchausdruck: | Hauskehricht/Grüngutabfuhr/Karton |
Beim Suchausdruck geben wir den gewünschten Suchausdruck des Termines an. Das heisst, wenn wir die Hauskehrichtstermine in diesem Thing auslesen möchten, muss als Suchbegriff Hauskehricht genommen werden. Diesen Vorgang wiederholen wir für jeden Begriff den wir suchen möchten. Im Ergebnis-Maximum geben wir die Anzahl Resultate an. Mir persönlich reicht das nächste respektive aktuelle Ergebnis vollkommen aus, möchtet Ihr mehr Resultate, dann könnt Ihr diesen Wert hochschrauben. Bei mehr Resultaten hättet Ihr die Möglichkeit z.B. alle Termine des Monats auszulesen und in einem Kalender darzustellen, nur mal so als Beispiel.
Nun wechseln wir in den Reiter „Model“. Ich habe bei mir unter meinem Oberbegriff Zuhause eine Location Namens „Organisatorisches“ erstellt. Das hat Ästhetische Gründe, da ich es gerne aufgeräumt habe. Das selbe habe ich auch mit „Technik“ getan, dass sind für mich solche Oberbegriffe die man gut gebrauchen kann um diese Allgemeinen Komponenten die nicht einem Raum zugeordnet werden können, doch irgendwie sinnvoll zuzuweisen. In diesem erstelle ich mir nun meine Events mittels „Add Equipment from Thing“ und füge alle drei hinzu.
Ich gehe bei jedem Thing in das Datum Item Ergebnisstart und klicke auf „Add Metadata“ und wähle „stateDescription“, unter Pattern füge ich folgenden Code hinzu:
%1$td.%1$tm.%1$tY
Nun erscheint das Datum so wie wir es haben möchten um weiter zu arbeiten.
NTP Binding hinzufügen
In diesem Abschnitt fügen wir das NTP Binding hinzu. Wir wechseln also zu den Einstellungen und unter Bindungs fügen wir mit dem Plus Symbol unten rechts, ein neues hinzu. Wir suchen nach ntp und installieren dieses.
Nun erstellen wir uns unter Things ein NTP Thing, die Werte lasse ich einfach Standard, Ihr könnt natürlich einen beliebigen NTP Server angeben. Nun unter Model Organisatorisches erstellen wir nun die Items. Wir kreieren wieder mittels „Create Equipment from Thing“ die NTP Items. Dies zeigt uns das aktuelle Datum und Zeit an, welches wir dann zum Vergleichen im Widget benutzen können.
Abfallkalender Widget erstellen
Ich habe folgendes Widget bei mir erstellt:
uid: entsorgung
tags: []
props:
parameterGroups: []
timestamp: Mar 18, 2021, 12:12:24 PM
component: f7-card
config:
title: ="Abfuhrtermine:"
slots:
default:
- component: f7-card-content
slots:
default:
- component: f7-list
config:
mediaList: true
slots:
default:
- component: oh-list-item
config:
title: Hauskehricht
icon: f7:trash
iconColor: brown
badge: '=((items.KalenderHauskehricht_Ergebnisstart.displayState == items.ZeitAktuell_DateTime.displayState) ? "Heute Hauskehricht raus bringen" : false)'
badgeColor: ="red"
footer: =items.KalenderHauskehricht_Ergebnisstart.displayState
- component: oh-list-item
config:
title: Grüngutabfuhr
icon: f7:trash
iconColor: green
badge: '=((items.KalenderGrungutabfuhr_Ergebnisstart.displayState == items.ZeitAktuell_DateTime.displayState) ? "Heute Grüngutabfuhr" : false)'
badgeColor: ="red"
footer: =items.KalenderGrungutabfuhr_Ergebnisstart.displayState
items.KalenderHauskehricht_Ergebnisstart.displayState und
items.ZeitAktuell_DateTime.displayState mit euren eigenen Werten aktualisieren und abspeichern. Danach könnt Ihr das Widget wie gewohnt auf euren Layout Seiten einbinden.
Video
Fragen könnt Ihr gerne in der Kommentarspalte hinterlassen.