Ankündigung

Einklappen
Keine Ankündigung bisher.

Support-Thread zum iCal Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Zitat von Morg Beitrag anzeigen
    Habt ihr eine praktikable Lösung für die anderen Angaben?
    Kennst Du schon diese Forum-Seiten:
    Müllkalender
    Urlaubskalender

    Ich habe mich daran orientiert und als Cron-Logik täglich ausführen lassen.
    Damit sollte Deine Idee umsetzbar sein.

    Kommentar


      #32
      Super, das schau ich mir mal an, vielen Dank!

      Kommentar


        #33
        Hallo,

        ich möchte das ical Plugin zur Abfrage von Termine (ein und mehrtägig) wie bspw Urlaub nutzen.
        Aktuell versuche ich das Plugin in meiner Testumgebung mit dem aktuellem Develop zum laufen zu bringen.
        Es wird die Function ical nicht gefunden.

        Meine Konfig:
        plugin.yaml
        Code:
        kalender:
            plugin_name: ical
            cycle: 3600
            directory: ics
            timeout: 10
            calendars:
            -   abwesenheit:https://calendar.google.com/calendar/ical/mdk3cgnknu1ngnqr25r1h8sq4c%40group.calendar.google.com/public/basic.ics
        logik:
        Code:
        #!/usr/bin/env python3
        # kalender_abwesenheit.py
        heute = sh.now().date()
        morgen = heute + datetime.timedelta(days=1)
        abwesenheit = sh.ical('abwesenheit', delta=3, offset=0)
        logger.debug("logic abwesenheit running...")
        logger.debug(abwesenheit)
        Debug Log:
        Code:
        2020-01-04  12:57:36 WARNING  __main__            --------------------   Init SmartHomeNG 1.6a.31195c7c.develop   --------------------
        2020-01-04  12:57:36 WARNING  __main__            Running in Python interpreter 'v3.7.3 final' (pid=29803) on linux platform
        2020-01-04  12:57:37 WARNING  lib.shtime          Nutze Feiertage für Land 'DE', Provinz 'BY', State 'None', benutzerdefinierte Feiertagsdefinition(en) nicht definiert
        2020-01-04  12:57:39 INFO     plugins.backend     WebInterface: Running from '/usr/local/smarthome/plugins/backend/webif'
        2020-01-04  12:57:39 INFO     plugins.backend     BackendSysteminfo __init__
        2020-01-04  12:57:39 INFO     plugins.backend     BackendServices __init__
        2020-01-04  12:57:39 INFO     plugins.backend     BackendItems __init__ <lib.item.Items object at 0x75671e50>
        2020-01-04  12:57:39 INFO     plugins.backend     BackendLogics __init__ self.logics = None
        2020-01-04  12:57:39 INFO     plugins.backend     BackendLogics __init__ self.plugins = <lib.plugin.Plugins object at 0x712ef3b0>
        2020-01-04  12:57:39 INFO     plugins.backend     BackendLogics __init__ self.scheduler = <Scheduler(Scheduler, started 1969661024)>
        2020-01-04  12:57:39 INFO     plugins.backend     BackendSchedulers __init__ self.scheduler = <Scheduler(Scheduler, started 1969661024)>
        2020-01-04  12:57:39 INFO     plugins.backend     BackendPlugins __init__ self.plugins = <lib.plugin.Plugins object at 0x712ef3b0>
        2020-01-04  12:57:39 INFO     plugins.backend     BackendScenes __init__
        2020-01-04  12:57:39 INFO     plugins.backend     BackendThreads __init__
        2020-01-04  12:57:39 INFO     plugins.backend     BackendLogging __init__
        2020-01-04  12:57:39 WARNING  plugins.cli         CLI: You should set a password for this plugin.
        2020-01-04  12:57:41 INFO     plugins.ical        Registering calendar https://calendar.google.com/calendar/ical/mdk3cgnknu1ngnqr25r1h8sq4c%40group.calendar.google.com/public/basic.ics with alias abwesenheit.
        2020-01-04  12:57:41 WARNING  lib.item            load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
        2020-01-04  12:59:22 ERROR    logics.kalender_abwesenheit Logic: logics.kalender_abwesenheit, File: /usr/local/smarthome/logics/kalender_abwesenheit.py, Line: 5, Method: <module>, Exception: 'SmartHome' object has no attribute 'ical'
        Traceback (most recent call last):
          File "/usr/local/smarthome/lib/scheduler.py", line 527, in _task
            exec(obj.bytecode)
          File "/usr/local/smarthome/logics/kalender_abwesenheit.py", line 5, in <module>
            abwesenheit = sh.ical('abwesenheit', delta=3, offset=0)
        AttributeError: 'SmartHome' object has no attribute 'ical'
        Liegt hier in Problem vor oder passt der aktuelle Stand von Develop Core nicht zum Plugin?

        PS:
        Ich habe es soeben mit dem aktuellen Master probiert und bekomme die gleiche Fehlermeldung.
        Sisamiwe
        Forums-Einsteiger
        Zuletzt geändert von Sisamiwe; 04.01.2020, 13:14. Grund: Test mit aktuellem Master durchgeführt

        Kommentar


          #34
          Nenn den Eintrag im plugin.yaml mal ical statt kalender bzw. nutze sh.kalender(..)

          Kommentar


            #35
            Seit meinem Upgrade vor ein paar Tagen auf den neuesten smarthomeNG Master habe ich das gleiche Problem wie Sisamiwe, allerdings enthält das plugin.yaml schon den ical Eintrag:

            Code:
            ical:
                class_name: iCal
                class_path: plugins.ical
            # calendars:
            # - FreieTage:https://calendar.google.com/calendar/ical/xxx/basic.ics
            # # cycle: 3600
            Logik:
            Code:
            today = sh.now().date()
            tomorrow= today + datetime.timedelta(days=1)
            
            holidays = sh.ical('https://calendar.google.com/calendar/ical/xxx/basic.ics', delta=3, offset=0)
            Vor dem Upgrade lief der Setup problemlos. Gibt's eine Lösung für das neue Problem?

            Gerade ist mir noch aufgefallen, dass ich in plugin.yaml noch eine alte Syntax verwende. Wenn ich die gemäß Sisamiwes Beispiel anpasse, bekomme ich folgende Fehlermeldung:
            Code:
            2020-01-28 19:12:19 ERROR Main Plugin 'ical' exception during import of __init__.py: invalid syntax (network.py, line 1045)
            Traceback (most recent call last):
            File "/usr/local/smarthome/lib/plugin.py", line 544, in __init__
            exec("import {0}".format(classpath))
            File "<string>", line 1, in <module>
            File "/usr/local/smarthome/plugins/ical/__init__.py", line 32, in <module>
            from lib.network import Http
            File "/usr/local/smarthome/lib/network.py", line 1045
            async def __handle_connection(self, reader, writer):
            ^
            SyntaxError: invalid syntax
            2020-01-28
            Danke für jede Hilfe.

            Kommentar


              #36
              GHild

              Der Hinweis von Onkelandy hat mir geholfen.

              So geht es:

              plugin.yaml
              Code:
              ical:
              plugin_name: ical
              cycle: '3600'
              directory: ics
              timeout: '10'
              calendars:
              - abwesenheit:https://calendar.google.com/calendar/ical/xxxxxxxxxxxxxx%40group.calendar.google .com/private-72bf8da1565b7c04ba3cf9eef0cb0f3b/basic.ics
              - feiertag:http://i.cal.to/ical/65/bayern/feiertage/7cb77059.0fd62ac5-bb0745fa.ics
              logic.yaml
              #!/usr/bin/env python3
              # kalender_abwesenheit.py

              now = sh.now()
              tom = sh.now() + datetime.timedelta(days=1)
              dat = sh.now() + datetime.timedelta(days=2)
              abwesenheit = sh.ical('abwesenheit', delta=3, offset=0)
              #abwesenheit = {datetime.date(2020, 1, 5): [{'Start': datetime.datetime(2020, 1, 5, 0, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')), 'End': datetime.datetime(2020, 1, 8, 0, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')), 'Summary': 'abwesend', 'Description': '', 'Location': ''}]}
              logger.info("logic abwesenheit running...")
              #logger.debug(abwesenheit)

              for day in abwesenheit:
              for event in abwesenheit[day]:
              start = event['Start']
              end = event['End']
              summary = event['Summary']
              logger.debug("Abwesenheitslogik wurde getriggert, Time: {0} {1}".format(start, summary))
              #Abwesenheitslogik wurde getriggert, Time: 2020-01-05 00:00:00+01:00 abwesend
              if start <= now <= end or (start == end and start <= now <= end.replace(second=59, microsecond=999)):
              sh.kalender.abwesend.heute(True)
              else:
              sh.kalender.abwesend.heute(False)
              if start <= tom <= end or (start == end and start <= tom <= end.replace(second=59, microsecond=999)):
              sh.kalender.abwesend.morgen(True)
              else:
              sh.kalender.abwesend.morgen(False)
              if start <= dat <= end or (start == end and start <= dat <= end.replace(second=59, microsecond=999)):
              sh.kalender.abwesend.uebermorgen(True)
              else:
              sh.kalender.abwesend.uebermorgen(False)

              Probier mal.

              PS Natürlich wieder richtig formatieren (Einrückungen) die gehen bei Copy&Paste im Moment verloren.
              Sisamiwe
              Forums-Einsteiger
              Zuletzt geändert von Sisamiwe; 28.01.2020, 21:24.

              Kommentar


                #37
                Mit dem ersten Button oben links im Editor solltest Du "rohe Daten" einfügen können. Da funktioniert IMHO auch das pasten von formatiertem Programmcode. Du kannst Deinen Code ja noch mal editieren :-)

                Kommentar


                  #38
                  Zitat von bmx Beitrag anzeigen
                  Mit dem ersten Button oben links im Editor solltest Du "rohe Daten" einfügen können. Da funktioniert IMHO auch das pasten von formatiertem Programmcode. Du kannst Deinen Code ja noch mal editieren :-)
                  Welchen meinst du genau? Be dem Quelle beim Mouseover erscheint?

                  Kommentar


                    #39
                    Ja.

                    Kommentar


                      #40
                      Vielen Dank für die schnelle Antwort. Aber was auch immer ich probiere, ich bekomme immer noch die oben zitierte Fehlermeldung.

                      Auszug aus plugin.yaml:
                      Code:
                      ical:
                          plugin_name: ical
                          cycle: '3600'
                          directory: ics
                          timeout: '10'
                          calendars:
                          - abwesenheit:https://calendar.google.com/calendar/ical/xxx/basic.ics
                      Ich habe auch smarthomeNG ganz frisch installiert, der Fehler bleibt. Der Fehler deutet ja eher auf ein Problem in /usr/local/smarthome/lib/network.py hin. Habe ich eine Abhängigkeit übersehen?

                      Kommentar


                        #41
                        Welche Python Version hast Du am Laufen?

                        Kommentar


                          #42
                          smarthome@ibbgateway:~$ python3 -V
                          Python 3.4.2

                          Kommentar


                            #43
                            Habe gerade gesehen, dass Python 3.4 nicht mehr von der aktuellen SmarthomeNG (V 1.6) unterstützt wird. Es ist dann scheinbar das erste Mal, dass ich in diese Inkompatibilität gelaufen bin.

                            Ich gehe also zunächst auf ein älteres SmarthomeNG Release zurück und aktualisiere bei Gelegenheit mein Debian 8.11/Jessie System auf meinem BeagleBone Black. Damit sollte diese Inkompatibilität ja behoben sein.

                            Kommentar


                              #44
                              Ja, das mit der Kompatibilität hatte ich vermutet. Das kommende 1.7 wird sicher ein Python 3.6 benötigen. Wenn Du also zukunftssicher aufgestellt sein willst, dann wäre ein Buster schon sinnvoll. Ich weiß allerdings nicht, inwieweit das für den Beaglebone Black geht. (z.B. hier im Blog)
                              Alternativ kann man auch Python 3.6 losgelöst vom System installieren, aber das können wir natürlich nicht leisten das alles zu dokumentieren.

                              Kommentar


                                #45
                                Code:
                                from lib.network import Http
                                File "/usr/local/smarthome/lib/network.py", line 1045
                                async def __handle_connection(self, reader, writer):
                                Das Netwok Plugin benötigt wie man in der Fehlermeldung sieht asyncio. asyncio gibt es erst ab Python 3.5.

                                Zwei Lösungsmöglichkeiten:
                                • Eine ältere Version des network Plugins einsetzen, welche kein asyncio benötigt.
                                • Eine neuere Python Version einsetzen. Vorzugsweise Python 3.6 oder 3.7 (Die aktuelle Version ist zwar bereits Python 3.8, allerdings ist SmartHomeNG noch nicht gegen Python 3.8 getestet.

                                Viele Grüße
                                Martin

                                There is no cloud. It's only someone else's computer.

                                Kommentar

                                Lädt...
                                X