schuma Ups, sorry. Hätte eigentlich bei mir auch kommen müssen... wie auch immer, sollte nun gefixt sein.
Ankündigung
Einklappen
Keine Ankündigung bisher.
UZSU - Neue Version von Onkelandy
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Zitat von Onkelandy Beitrag anzeigenwie auch immer, sollte nun gefixt sein.
Edit2: Zum Thema WARNING: Habe es jetzt schon bei mir korrigiert! In einer Logik wurde eine UZSU abgefragt. Und trotz if Abfrage auf != none wurde manchmal die uzsu abgefragt. Irgendwie ein Zeitliches Problem beim Systemstart manchmal ist in dem dict schon etwas vorhanden manchmal erst etwas zu spät.
Lag also an meiner Logik!Zuletzt geändert von schuma; 07.01.2019, 22:38.
Kommentar
-
Hab deinen Beitrag schon gelesen gehabt. Das Problem kann ja immer wieder mal vorkommen, wenn man's nicht in der Logik abfängt. Ich habe daher versucht, die Rückmeldung im Plugin anzupassen, wenn der "Plan" fürs Item noch nicht feststeht. Offenbar wird die Logik tatsächlich zu früh getriggert.
Vielleicht kannst du den neuesten Push nochmals mit der alten Logik testen? Beim Log erkennst du durch das logics.BLABLA, dass die Logik einige Sekunden vor dem Schedule Eintrag aufgerufen wird, was bisher zur unklaren Rückmeldung führte. Der "Plan" wird erst angelegt, wenn der komplette Schedule fürs Item durch ist, also erst direkt nach "will add scheduler named...."
Kommentar
-
Zitat von Onkelandy Beitrag anzeigenVielleicht kannst du den neuesten Push nochmals mit der alten Logik testen?
In der debug Ausgabe habe ich folgende Zeile gefunden:
Code:2019-01-08 17:25:29 WARNING __init__ logics.haustuerevent Item 'EG.Raum1.Steckdosen.Fenster_oben.schaltuhr' is active but has no (active) entries. -- __init__.py:_logics_planned:316
Code:2019-01-08 17:34:37 WARNING logics.haustuerevent Item 'EG.Raum1.Steckdosen.Fenster_oben.schaltuhr' is active but has no (active) entries.
Kommentar
-
Hm, einen Versuch machen wir noch. Ansonsten bitte um Info, wie ich die Situation nachstellen kann.
https://github.com/onkelandy/plugins/tree/uzsu/uzsuZuletzt geändert von Onkelandy; 08.01.2019, 23:14.
Kommentar
-
Zitat von Onkelandy Beitrag anzeigenHm, einen Versuch machen wir noch. Ansonsten bitte um Info, wie ich die Situation nachstellen kann.
- Likes 1
Kommentar
-
Zitat von Sisamiwe Beitrag anzeigenMach ich gern. Wird aber wohl Ende der Woche.
Klappt wie es soll.
Bzgl. Feiertag, Urlaub arbeite ich mich gerade in den iCAL mit dem Plugin ein, um die Feiertage etc aus dem (Google)Kalender abzufragen.
Klappt schon ganz gut. Schreibe ich nachher nochmal zusammen.
Kommentar
-
Zum Thema Feiertag und Urlaub folgender Stand:
Kalender:
Ich habe in meinem Google-Kalender je einen Kalender für Feiertage, Muell und einen für Urlaub erstellt.
In den für Feiertag habe ich dann die für mich relevanten Feiertage importiert, fertig. Den Müllkalender dito. Den Kalender für Urlaub fülle ich von Hand, auch mit mehrtägigen, ganztägigen Ereignissen. Dabei kann man durch den Eintrag im Kalender noch unterscheiden, ob der Urlaub zu Hause (also anwesend) verbracht wird, oder ob man weg ist. Bspw. Urlaub_da und Urlaub_weg.
Kalendereinbindung:
Die Kalender habe ich mit dem ical-Plugin eingebunden.
plugin.yaml
Code:ical: class_name: iCal class_path: plugins.ical calendars: - urlaub:https://calendar.google.com/calendar/ical/....ics - feiertag:https://calendar.google.com/calendar/ical/....ics - muell:https://calendar.google.com/calendar/ical/.....ics # cycle: 3600
Items:
Ich habe erstmal folgende Items angelegt:
Code:kalender: feiertag: heute: type: bool morgen: type: bool urlaub: heute: type: bool morgen: type: bool restmúell: heute: type: bool morgen: type: bool papiermuell: heute: type: bool morgen: type: bool
Es gibt diverse Logiken als Beispiele. Daraus habe ich mir mal die folgenden Gebastelt, um die Items zu füllen.
Muell:
Code:#!/usr/bin/env python3 # muell.py heute = sh.now().date() morgen = heute + datetime.timedelta(days=1) muell = sh.ical('muell', delta=3, offset=0) logger.info("logic muell running...") logger.info(muell) for day in muell: for event in muell[day]: logger.info("Muellkalender wurde getriggert, Date: {0}".format(day)) start = event['Start'] end = event['End'] summary = event['Summary'] logger.info("Muellkalender wurde getriggert, Time: {0} {1}".format(start, summary)) if 'Restmuelltonne' in str(summary).lower(): logger.warning("Muellkalender wurde getriggert, calendar entry with Restmuelltonne found") if start.date() == heute: logger.debug("Muellkalender wurde getriggert, Restabfall calendar entry starts today") sh.text.flur_eg.text1("Restmüll heute") if start.date() == morgen: logger.debug("Muellkalekder wurde getriggert, Restmuelltonne calendar entry starts tomorrow") sh.text.flur_eg.text1("Restmüll morgen") if end.date() == morgen: logger.debug("Muellkalender wurde getriggert, Restmuelltonne calendar entry ends tomorrow") elif 'Papiertonne/gelber Sack' in str(summary).lower(): logger.warning("Muellkalender wurde getriggert, calendar entry with Papiertonne found") if start.date() == heute: logger.debug("Muellkalender wurde getriggert, Papiertonne calendar entry starts today") sh.text.flur_eg.text1("Papiertonne heute") if start.date() == morgen: logger.debug("Muellkalekder wurde getriggert, Papiertonne calendar entry starts tomorrow") sh.text.flur_eg.text1("Papiertonne morgen") if end.date() == morgen: logger.debug("Muellkalender wurde getriggert, Papiertonne calendar entry ends tomorrow")
Feiertag:
Code:#!/usr/bin/env python3 # feiertag.py heute = sh.now().date() morgen = heute + datetime.timedelta(days=1) feiertag = sh.ical('feiertag', delta=3, offset=0) logger.info("logic feiertag running...") logger.info(feiertag) for day in feiertag: for event in feiertag[day]: logger.info("Feiertagskalender wurde getriggert, Date: {0}".format(day)) start = event['Start'] end = event['End'] summary = event['Summary'] logger.info("Feiertagskalender wurde getriggert, Time: {0} {1}".format(start, summary)) if start.date() == heute: logger.info("Feiertagskalender wurde getriggert, Feiertagseintrag startet heute") sh.kalender.feiertag.heute(1) else: sh.kalender.feiertag.heute(0) if start.date() == morgen: logger.info("Feiertagskalender wurde getriggert, Feiertagseintrag startet morgen") sh.kalender.feiertag.morgen(1) else: sh.kalender.feiertag.morgen(0) if end.date() == morgen: logger.info("Feiertagskalender wurde getriggert, Feiertagseintrag endet morgen")
Urlaub:
Code:#!/usr/bin/env python3 # feiertag.py jetzt = now = sh.now() heute = sh.now().date() morgen = heute + datetime.timedelta(days=1) urlaub = sh.ical('urlaub', delta=14, offset=0) logger.info("logic urlaub running...") logger.info(urlaub) for day in urlaub: for event in urlaub[day]: logger.info("Urlaubsskalender wurde getriggert, Date: {0}".format(day)) start = event['Start'] end = event['End'] summary = event['Summary'] logger.info("Urlaubskalender wurde getriggert, Time: {0} {1}".format(start, summary)) if start.date() == heute: logger.info("Urlaubskalender wurde getriggert, Urlaubseintrag beginnt heute") if start <= jetzt <= end or (start.date == end.date and start <= jetzt <= end.replace(second=59, microsecond=999)): logger.info("Urlaubskalender wurde getriggert, Urlaubseintrag für heute") sh.kalender.urlaub.heute(1) else: sh.kalender.urlaub.heute(0) if start.date() <= morgen <= end.date(): logger.info("Urlaubskalender wurde getriggert, Urlaubseintrag für morgen") sh.kalender.urlaub.morgen(1) else: sh.kalender.urlaub.morgen(0) if end.date() == morgen: logger.info("Urlaubskalender wurde getriggert, Urlaubseintrag endet morgen")
Allgemeines:
So wie ich es verstanden habe, wird der Kalender (wie in der plugin.yaml) definiert alle 3600s eingelesen. Die AuswerteLogik muss dann noch extra getriggert werden.
Klappt bei mir soweit erst einmal.
Vielleicht hilft es.
Kommentar
Kommentar