Zitat von Simml
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Müllkalender in RGB LED
Einklappen
X
-
Hm ok dann eben doch via Webserver. Danke fürs ausprobieren.Zitat von Cannon Beitrag anzeigenIch habe das auch auf verschiedenen Wegen lokal probiert. Es läuft einfach nicht. Es gibt keine Fehlermeldung, der Kalender wird aber lokal geladen - hat nur eben keine Werte. Irgendwas scheint da mit dem plugin nicht in Ordnung zu sein.
Haha das hat der Menscheit schon lang gefehlt. Dieser Gestank wenn die Mülltonnen Monate lang nicht geleert werden weil die Besitzer wieder an einer smarthome Mülltonnen RGB Leiste sparen.Zitat von Allesreinwasgeht Beitrag anzeigen
gibt es noch etwas "deutscheres" als die Mülltonnenfarbe per Status im Smarthome. Ich werde nich wieder 
Aber damit ist jetzt endlich Schluss.
Kommentar
-
Schluss mit Lachen! :-) Ich habe den Fehler gefunden. Anscheinend funktioniert jedes plugin, was ich nutzen will nicht richtig. Wo postet man denn Updates, damit die in folgende Versionen auch repariert werden. Das pluggit-Plugin ging nämlich auch nicht.
Bitte in der init-Datei des plugins (__init__.py) folgendes ändern, dann werden auch lokale Kalender geladen. Bitte aber auch noch mal mit "http:"-Kalendern testen.
Das "ical = ical.replace('\n', '')" muss auskommentiert werden, weil sonst der gesamte Kalender in eine einzelne Zeile gepackt wird und dann funktioniert das nicht. Mir ist der Sinn auch nicht ganz klar, weil ja wie gesagt der Kalender danach in mehrere Zeilen gesplittet wird, die nach dem replace nicht mehr existieren. Ich vermute aber mal das hat was mit dem "\r" und "\n" zu tun. Hier werde ich noch mal genau testen und mein Kalender-File mit einem Hex-Editor anschauen. Fürs erste geht das aber jetzt mit lokalen Dateien.Code:def _parse_ical(self, ical, ics): #skip = False events = {} tzinfo = self._sh.tzinfo() #ical = ical.replace('\n', '') for line in ical.splitlines():
Kommentar
-
Am besten du machst einen fork von https://github.com/smarthomeNG/plugins im develop branch. Klonst den dann auf deinen Rechner, machst die Änderung im pluggit Plugin, push der Änderung und Pull Request. Ich empfehle Github Desktop oder was Ähnliches, dann brauchst auch keine Befehle können.
Das ical Plugin hab ich mir grad angesehen. Wozu die replace-Zeile gut ist/war, ist mir auch unklar. Funzt jedenfalls auch bei Online-Feed mit gelöschter Zeile. Ich habe noch ein paar kleine Updates gemacht und PR erstellt: https://github.com/smarthomeNG/plugins/pull/210
Das obige Problem, dass bei delta=0 und offset=1 auch heute mitkommt, kann ich bei ersten Tests nicht bestätigen.
Kommentar
-
Ich habe mir das auch noch mal genauer angesehen und auch meine ics-Datei (die enthält /n und /r). Die Zeile macht wirklich keinen Sinn. Evtl. könnte man da ein "\r" rein schreiben ... aber dann gehen möglicherweise MAC-Dateien nicht.Zitat von Onkelandy Beitrag anzeigenDas ical Plugin hab ich mir grad angesehen. Wozu die replace-Zeile gut ist/war, ist mir auch unklar.
Gut, dass du das Update gemacht hast bei github, dann brauche ich nicht darüber nachdenken, wie ich das da hochlade. ;-)
Kommentar
-
Man kann ja die Tage im Übrigen im Skript abfragen.
Ich habe das ein wenig anders gelöst. Deshalb gibt es hier mal mein Skript. Die Grundlage war sicherlich das Skript hier im Thread. Ich habe ein paar Änderungen vorgenommen. Folgendes habe ich angepasst:
- auch am Abholtag bis 8:00 Uhr wird die Farbe aktiviert
- da es sich um einen LED-Strip in meiner Diele ab Eingang handelt, leuchtet dieser nur, wenn die Tür geöffnet ist
- die vorherige Lichtfarbe wird zwischengespeichert und wieder hergestellt
- meine Items habe ich als Liste für RGB zusammengefasst
Hier die Logik, beide Varianten mit dem iCal funktionieren, also auch die auskommentierte. Bei der Variante ohne Pfad ist der Pfad in der plugin.yaml konfiguriert:
Hier das item mit relativen Einträgen:Code:if sh.EG.Diele.Tuer.geschlossen: if hasattr(logic, 'RGB_backup'): sh.EG.Diele.DALI.Decke.RGB.Farbwert(logic.RGB_backup) else: sh.EG.Diele.DALI.Decke.RGB.Farbwert([0, 0, 0]) else: logic.RGB_backup = [sh.EG.Diele.DALI.Decke.R.Dimmwert(), sh.EG.Diele.DALI.Decke.G.Dimmwert(), sh.EG.Diele.DALI.Decke.B.Dimmwert()] jetzt = sh.now() heute = jetzt.date() morgen = heute + datetime.timedelta(days=1) zeit = jetzt.time() zeitmax = zeit.replace(hour=8, minute=0, second=0, microsecond=0) #muellkalender = sh.ical('/usr/local/smarthome/muellkalender.ics', delta = 0, offset = 1) muellkalender = sh.ical('muell', delta=1, offset=0) for day in muellkalender: for event in muellkalender[day]: summary = event['Summary'] if day == heute and zeit < zeitmax or day == morgen and zeit >= zeitmax: # Papier: blau if 'Moselstraße - Papier' in str(summary): sh.EG.Diele.DALI.Decke.RGB.Farbwert([0, 0, 255]) # Restmüll: weiß if 'Moselstraße - Hausmüll' in str(summary): sh.EG.Diele.DALI.Decke.RGB.Farbwert([255, 255, 255]) # Biomüll: braun if 'Moselstraße - Biomüll' in str(summary): sh.EG.Diele.DALI.Decke.RGB.Farbwert([87, 35, 0]) # Gelber Sack: gelb if 'Moselstraße - Gelber Sack' in str(summary): sh.EG.Diele.DALI.Decke.RGB.Farbwert([255, 255, 0])
Code:Farbwert: type: list visu_acl: rw on_change: - ...R.Dimmwert = value[0] - ...G.Dimmwert = value[1] - ...B.Dimmwert = value[2] trigger: type: list eval: list([sh.....R.Dimmwert(), sh.....G.Dimmwert(), sh.....B.Dimmwert()]) eval_trigger: - ....R.Dimmwert - ....G.Dimmwert - ....B.Dimmwert on_change: ..self = value
Kommentar
-
Was sehr schade ist.....
das Plugin wertet offensichtlich nach 'summary': / 'description':
nur das erste Wort nach dem Doppelpunkt und bis zum ersten Leerzeichen aus.
Was bei mir immer 'abfallfraktion', / 'abfuhrtermin!', ergibt.
Beispiel:
Im "iCal" Kalender steht folgendes:Code:tzinfo=tzfile('/usr/share/zoneinfo/europe/berlin')), 'categories': 'abfuhrtermine,'}], datetime.date(2019, 2, 25): [{'class': 'public', 'description': 'abfallfraktion', 'summary': 'abfuhrtermin!', 'location': 'glattbach', 'end': datetime.datetime(2019, 2, 25, 15, 0,
Code:DTSTART:20190225T050000Z DTEND:20190225T150000Z LOCATION;LANGUAGE=de:Glattbach TRANSP:OPAQUE SEQUENCE:0 UID:d6191b25babffd99b95d7abfb6440449 DTSTAMP:20190202T230700Z CATEGORIES;LANGUAGE=de:Abfuhrtermine, DESCRIPTION;LANGUAGE=de:[MARKIEREN]Abfuhrtermin [/MARKIEREN]Biomüllabfuhr in Glattbach am 25.02.2019 SUMMARY;LANGUAGE=de:[MARKIEREN]Abfuhrtermin[/MARKIEREN] Biomüllabfuhr am 25.02.2019 PRIORITY:5 CLASS:PUBLIC URL:http://paw-kuhs.de/ STATUS:CONFIRMED BEGIN:VALARM ACTION:DISPLAY TRIGGER:-PT1440M DESCRIPTION:ABFALLFRAKTION SUMMARY:ABFUHRTERMIN!
Gruß, JG
Kommentar
-
Haiphong Kuck nochmals in dein File. Da sind die letzten zwei Zeilen:
Woher auch immer die kommen. Jedenfalls wird vom Plugin nichts abgeschnitten. Das Einzige, was man machen könnte, wäre nur den ersten description-Eintrag heranzuziehen. Aber es könnte ja auch umgekehrt im ical drin stehen..? Oder vielleicht, dass der Eintrag mit "Language" Vorrang hat..? Besser wäre aber, das ical File zu korrigieren.Code:DESCRIPTION:ABFALLFRAKTION SUMMARY:ABFUHRTERMIN!
Kommentar
-
Verstehe. Aber alle Linebreaks deshalb zu löschen macht auch wenig Sinn. Dazu müsste man einen iCal haben, der solche Breaks einfügt. Allerdings, und ich kenne das iCal-Format nicht so gut, sieht es so aus, dass das Format Zeilenbasiert ist, weil jede Zeile mit einem Kommando beginnt. Würde das anders sein, würde das alles durcheinanderbringen, spätestens dann, wenn zufällig ein "Kommando" gleichzeitig z.B. als Termin verwendet wird.Zitat von Onkelandy Beitrag anzeigenIch glaube zu wissen, wofür die eine Zeile mit dem Linebreak war. Eventuell gehen manche Einträge in der nächsten Zeile weiter, da sie sonst zu lang wären. Die werden aktuell ignoriert, ich schau mir das aber noch an.
Ich nutze im Übrigen auch dein Plugin jetzt. Die Installation ist allerdings etwas müßig. Geht das auch anders, also ohne Paste & Copy?
Kommentar
-
Ich denke, copy paste ist das Einfachste.
Habe nochmals ein Update hochgeladen: https://github.com/onkelandy/plugins/tree/ical/ical
Für Haiphong gibt es nun eine Lösung und zwar einen "prio" wert, der nach dem offset und delta angegeben werden kann. z.B. prio = 2, dann kommt die "schlechte" summary und description" Keine prio oder prio=1, dann bleibt der erste Eintrag erhalten.
Bezüglich des Linebreaks habe ich nun glaub auch eine gute Lösung, die sowohl auf Windows als auch Linux funktionieren sollte. Es ist bei manchen Einträgen bei mir tatsächlich so, dass eine Zeile mit "\n" anfängt. das wird nun glatt gebügelt. Falls es wo Probleme macht, schau ich nochmals drüber.
Wäre gut, ihr könntet die neue Version testen. Wenn alles klappt, kommt's in den offiziellen develop Zweig der Plugins.
Noch was anderes. Ich bekomme bei der Abfrage von https URLs folgenden Fehler: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051). Der Server ist aber definitiv "sauber". Hat das Problem sonst noch jemand? Hätte schon eine Lösung parat.
Kommentar
-
Hallo Andy,
danke für Deine Unterstützung.....
Hab das Plugin mit Deinen Änderungen geladen
Nach jeder Änderung mach ich einen Neustart --> " sudo systemctl restart smarthome.service"
Wenn ich's richtig verstanden habe dann sollte es so aussehen:
Egal ob "prio=2" oder "prio=1" , der Kalender wird nicht gelesen.Code:kalender_abfall = sh.ical('http://192.168.178.44/smartVISU2.9/Glattbach-2019.ics', delta=30, offset=0, [MARKIEREN]prio=2[/MARKIEREN]) str_kalender_abfall = str(kalender_abfall) sh.kalender.abfall.text(str_kalender_abfall.lower())
Ohne "prio=x" wird der Kalender unverändert gelesen ( Problem: "Abfuhrtermin" und nix weiter )
Hab mal den Kalender angehängt ( *.ics umbenannt nach *.txt )Angehängte DateienZuletzt geändert von Haiphong; 04.02.2019, 00:54.Gruß, JG
Kommentar


Kommentar