diff --git a/ioBroker---FAQ-&-Anleitungen.md b/ioBroker---FAQ-&-Anleitungen.md index 397df31..cbea137 100644 --- a/ioBroker---FAQ-&-Anleitungen.md +++ b/ioBroker---FAQ-&-Anleitungen.md @@ -249,7 +249,8 @@ Die Info wird nur angezeigt, wenn der Screensaver wieder aktiv ist. Deshalb muss ![image](https://user-images.githubusercontent.com/99131208/188515089-64d9a284-65bf-4561-91bf-47ecc215f2d9.png)
- Blockly Skript + Blockly Skript + ``` @@ -348,6 +349,7 @@ Die Info wird nur angezeigt, wenn der Screensaver wieder aktiv ist. Deshalb muss ```
+ Mein Blockly gibt hie einfach nur fest definierten Text zurück. Möglichkeiten dies nun dynamisch zu gestalten, gibt es viele. Tobt Euch aus! * **Konfigurationsskript**: @@ -357,4 +359,524 @@ Im Konfigurationsskript habe ich mir nun einen Button definiert { id: "alias.0.InfoRQ", icon: "comment-question" ,name: "InfoScreen"}, ``` +*** + +## **4.) Abfallkalender** + +* **Generell** +Um das Thema Abfallkalender Umsetzen zu können gibt es verschiedene Herangehensweisen. Die Minimum Punkte sind unter den Voraussetzungen aufgelistet. +Ob man nun direkt mit einem Kalender arbeitet der vom Entsorger bereitgestellt wird oder ob man sich die Mühe macht sich einen eigenen Kalender anzulegen - jeder wie er möchte. +Die Basis für meine Dokumentation ist ein Google Kalender, der dann via einem ICal Adapter verbunden ist. Weiterhin nutze ich den Adapter Trashschedule von @haus-automatisierung. Das positive daran ist, [Matthias](@haus-automatisierung ) hat ein [Video](https://www.youtube.com/watch?v=v9-6LJph_8Q) zur Einrichtung gemacht, bei der die Grundlage eben genau ein Google Kalender ist. Ich finde das eine schöne Basis. + + +* **Voraussetzungen** +--> Abfallkalender des Entsorgers / der Entsorger +--> ICal Adapter +--> @Armilar s Skript zur Verarbeitung +--> Datenpunkte + + +* **IoBroker** +Ich setze an der Stelle nun voraus, dass es bereits einen ICal Adapter gibt und dieser mit einem Kalender verbunden ist. + +**Datenpunkte**: +Unter 0_userdata.0. einen Ordner Abfallkalender anlegen. Darunter vier Unterordner 1-4. In jedem Unterordner gibt es dann drei Datenpunkte anzulegen: **color**, **date** und **event** + +![image](https://user-images.githubusercontent.com/99131208/188515709-424f2b14-2814-4c45-a4ef-fc445b51dfb2.png) +(Bild by @Armilar ) + +**Aliase**: +Im Geräte Adapter oder Alias Adapter einen Ordner für die Aliase des Abfallkalenders anlegen. +Darunter dann 4 generische Einträge event1 - event4 vom **Typ Warnung**. +![image](https://user-images.githubusercontent.com/99131208/188515685-9c932e4b-fb02-4121-91fb-834c24985e3d.png) +(Bild by @Armilar ) + +**Wichtig**: +**LEVEL** --> geht auf Datenpunkt **color** +**TITEL** --> geht auf Datenpunkt **event** +**INFO** --> geht auf Datenpunkt **date** + +![image](https://user-images.githubusercontent.com/99131208/188515669-b8bcba34-2803-4a9d-a286-f6310afe25c4.png) +(Bild by @Armilar ) + + + +* JS / Blockly (Alle Skripte by @Armilar): +Es steht für die Umsetzung / Aufbereitung der Kalenderdaten nach NSPanel ein JS und ein Blockly zur Verfügung. Man benötigt nur eines davon. Es spricht aber nichts dagegen, beide mal zu testen ;-) + +Java Skript: + +1 = Hier muss der Pfad zum ICal Adapter zum Punkt **ical.0.data.table** eigestellt werden. Achtet auf die Instanznummer beim Adapter +2 = Muss nur angepasst werden, wenn Eure Datenpunkte nicht unter **0_userdata.0.Abfallkalender.** liegen +3 = Die Bezeichnungen der Abfallbehälter in Eurem Kalender. Die Namen müssen passen, das mit das Parsen funktioniert. Tipp: Die Ziffern bei "setze Color auf ....." sind die Farbcodierungen im Dezimalsystem. +4 = Für's parsen wichtig. Bei funktioniert die 0, es kann sein dass dies bei euch anders ist. +![image](https://user-images.githubusercontent.com/99131208/188515648-9fe879b9-fe5c-402b-8924-47710f4baa95.png) + + + +
+ Java Skript + + ``` +var i, Muell_JSON, Event2, Color; + +function subsequenceFromStartLast(sequence, at1) { + var start = at1; + var end = sequence.length - 1 + 1; + return sequence.slice(start, end); +} + + +on({id: 'ical.1.data.table', change: "ne"}, async function (obj) { + var value = obj.state.val; + var oldValue = obj.oldState.val; + for (i = 0; i <= 3; i++) { + Muell_JSON = getState("ical.1.data.table").val; + setStateDelayed((['0_userdata.0.Abfallkalender.',parseFloat(i) + 1,'.date'].join('')), getAttr(Muell_JSON, (String(i) + '.date')), false, parseInt(((0) || "").toString(), 10), false); + Event2 = subsequenceFromStartLast(getAttr(Muell_JSON, (String(i) + '.event')), 0); + setStateDelayed((['0_userdata.0.Abfallkalender.',parseFloat(i) + 1,'.event'].join('')), Event2, false, parseInt(((0) || "").toString(), 10), false); + if (Event2 == 'Restabfalltonne') { + Color = 33840; + } else if (Event2 == 'Bio + tonne') { + Color = 2016; + } else if (Event2 == 'Blaue Tonne') { + Color = 31; + } else if (Event2 == 'Gelbe Tonne') { + Color = 65504; + } + setStateDelayed((['0_userdata.0.Abfallkalender.',parseFloat(i) + 1,'.color'].join('')), Color, false, parseInt(((0) || "").toString(), 10), false); + } +}); +``` +
+ + + +Blockly Skript: + +1 = Hier muss der Pfad zum ICal Adapter zum Punkt **ical.0.data.table** eigestellt werden. Achtet auf die Instanznummer beim Adapter +2 = Muss nur angepasst werden, wenn Eure Datenpunkte nicht unter **0_userdata.0.Abfallkalender.** liegen +3 = Die Bezeichnungen der Abfallbehälter in Eurem Kalender. Die Namen müssen passen, das mit das Parsen funktioniert. Tipp: Die Ziffern bei "setze Color auf ....." sind die Farbcodierungen im Dezimalsystem. +4 = Für's parsen wichtig. Bei funktioniert die 1, es kann sein dass dies bei euch anders ist. + +![image](https://user-images.githubusercontent.com/99131208/188515546-1c2b3048-0d5c-427a-b70c-aab035eeaab4.png) +![image](https://user-images.githubusercontent.com/99131208/188515563-bc6a65a2-4e07-454c-8038-f04366d20516.png) + + + +
+ Blockly Skript + + ``` + + + i + Muell_JSON + Event + Color + + + + ne + + + + ical.1.data.table + + + + + i + + + 0 + + + + + 3 + + + + + 1 + + + + + Muell_JSON + + + val + ical.1.data.table + + + + + false + FALSE + + + Object ID + + + + + + 0_userdata.0.Abfallkalender. + + + + + ADD + + + 1 + + + i + + + + + 1 + + + + + + + .date + + + + + + + TRUE + + + + + 0.date + + + + + + i + + + + + .date + + + + + + + Muell_JSON + + + + + + + 0 + + + + + Event + + + + FROM_START + LAST + + + + + 0.event + + + + + + i + + + + + .event + + + + + + + Muell_JSON + + + + + + + 9 + + + + + + + false + FALSE + + + Object ID + + + + + + 0_userdata.0.Abfallkalender. + + + + + ADD + + + 1 + + + i + + + + + 1 + + + + + + + .event + + + + + + + TRUE + + + Event + + + + + 0 + + + + + + + + EQ + + + Event + + + + + Reststoff + + + + + + + Color + + + 33840 + + + + + + + EQ + + + Event + + + + + Biotonne + + + + + + + Color + + + 2016 + + + + + + + EQ + + + Event + + + + + Blaue Tonne + + + + + + + Color + + + 31 + + + + + + + EQ + + + Event + + + + + Gelbe Tonne + + + + + + + Color + + + 65504 + + + + + + + false + FALSE + + + Object ID + + + + + + 0_userdata.0.Abfallkalender. + + + + + ADD + + + 1 + + + i + + + + + 1 + + + + + + + .color + + + + + + + TRUE + + + Color + + + + + 0 + + + + + + + + + + + + + + + + + + +``` +
+ + +* **Konfigurationsskript** +Im Konfigurationsskript muss ein Grid passend zu den Aliasen angelegt werden. Hier das Bsp. aus dem Default: +``` +var Abfall: PageEntities = +{ + "type": "cardEntities", + "heading": "Abfallkalender", + "useColor": true, + "subPage": false, + "parent": Abfall, + "items": [ + { id: "alias.0.NSPanel_1.Abfall.event1",icon: "trash-can"}, + { id: "alias.0.NSPanel_1.Abfall.event2",icon: "trash-can"}, + { id: "alias.0.NSPanel_1.Abfall.event3",icon: "trash-can"}, + { id: "alias.0.NSPanel_1.Abfall.event4",icon: "trash-can"} + ] +}; +``` + +* **Fazit**: +Eine vermeintlich einfache Sache, die aber ziemlich knifflig werden kann.