Ankündigung

Einklappen
Keine Ankündigung bisher.

Support-Thread zum iCal Plugin

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

    #61
    Evtl. könnte man den Loglevel für diese Meldung anpassbar machen. z.B. über einen weiteren Plugin Parameter, der kennzeichnet, ob der Kalender von Google oder Nextclooud geladen wird und dann den Loglevel auf INFO setzen.

    Dazu schaue ich gerade nach dem Maintainer für das ical Plugin.. Den scheint es im Moment nicht zu geben. Es hat zwar in letzter Zeit mehrere kleine Anpassungen gegeben, aber für das Plugin scheint sich keiner verantwortlich zu fühlen. Als Maintainer stehen im Plugin noch mknx und cmalo drin, die beide seit lange Zeit nicht mehr aktiv sind.
    Viele Grüße
    Martin

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

    Kommentar


      #62
      Ich wäre dafür, die Meldung prinzipiell von einem Warning auf eine Info zu degradieren: Für das plugin selber hat das setzen von DTEND keine Auswirkung. Dein User der Daten sollte aber z.B. für die Verwendung in Logiken wissen, dass der für das Event hinterlegte DTEND nicht aus dem Kalender kommt, sondern vom Plugin automatisch gesetzt worden ist.

      Kommentar


        #63
        Zitat von aschwith Beitrag anzeigen
        Dein User der Daten sollte aber z.B. für die Verwendung in Logiken wissen, dass der für das Event hinterlegte DTEND nicht aus dem Kalender kommt, sondern vom Plugin automatisch gesetzt worden ist.
        Wenn ich den Level fest auf INFO setze, bekommt er das aber gar nicht mit, wenn er nicht explizit das Logging für das Plugin entsprechend konfiguriert. Deshalb meine Idee mit dem zusätzlichen Parameter, mit dem der Anwender das Logging aus dem Warmings-Log verbannen kann.
        Viele Grüße
        Martin

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

        Kommentar


          #64
          Ich vermute es handelt sich hier um Ganztagesevents, oder? Wie sieht das denn bei Google Kalendern aus? Theoretisch könnte man ja aus value=date auch schließen, dass es ein Tagesevent ist und das dann entsprechend anders handhaben.. denn dafür bräuchte es nicht mal ne Info.
          Hab bei meinen Outlook Ganztagesinfos zwar ein DTEND drin, aber auch value=date. schau ich mir mal an... evtl wäre ein "Ganztagesevent" Flag oder so ganz nett für diese Termine ohne Dauer..? Oder eine Standarddauer von 24 Stunden..?

          Kommentar


            #65
            Ich hatte bei mir ein Problem, wenn die Zeitzoneninfo so wie "timezone://Microsoft .." aussah. Das kam bei mir von einem Kalendereintrag von einem Öffi-Anbieter. Der Doppelpunkt hat das Parsing zerschossen.
            Das Thema mit fehlendem DTEND hätte ich mal so gelöst, dass dann einfach DTSTART als Ende genommen wird.

            Möchte jemand diese Fixes bitte mal testen bzw schauen, ob alles noch so läuft wie bisher? Danke!
            https://github.com/smarthomeNG/plugins/pull/917

            Kommentar


              #66
              Hallo, ich möchte gerne einmal nachts den Kalender abrufen und dann zu Beginn und Ende eines Events möglichst feingranular und "elegant" ein Item schalten, und nicht minütlich die Logik triggern und schauen ob der Startzeitpunkt usw. überschritten ist. Ein Möglichkeit wäre ja eine Anbindung an die uzsu ? Hat sowas zufällig schon jemand gelöst? Im Forum/ Doku hab ich nichts gefunden. Danke

              Kommentar


                #67
                Schau mal hier: https://knx-user-forum.de/forum/supp...10#post1201710

                Ist zwar nicht UZSU aber sollte auch funktionieren

                Kommentar


                  #68
                  Hallo,

                  hier mal meine erste rudimentäre Logik um aus Kalendereinträgen uszu Schaltpunkte mit festen Offsets zu machen.
                  Vielleicht kann ja noch einer was damit anfangen.

                  Code:
                  #!/usr/bin/env python3
                  # heizung.py
                  
                  #!/usr/bin/env python3
                  # kalender_test.py
                  from datetime import timedelta
                  
                  today = sh.now().date()
                  #logger.warning('Kalender wird geladen')
                  
                  mydays = ['SU','MO', 'TU', 'WE', 'TH', 'FR', 'SA']
                  HeizenKlein = ['heizen kl','keywordxyz']
                  HeizenGross = ['heizen gr','keywordxyz2']
                  
                  def IsHeizenKlein(kalenderstring, logic=logic):
                      for keyword in HeizenKlein:
                          if keyword in str(kalenderstring).lower():
                              return True
                      return False    
                  logic.IsHeizenKlein = IsHeizenKlein
                  
                  def IsHeizenGross(kalenderstring, logic=logic):
                      for keyword in HeizenGross:
                          if keyword in str(kalenderstring).lower():
                              return True
                      return False    
                  logic.IsHeizenGross = IsHeizenGross
                  
                  def Schaltpunkteloeschen(item, logic=logic):
                      zeitschaltuhr = item()
                      #logger.warning("Uhr Vorher{0}".format(zeitschaltuhr))
                      zeitschaltuhr['list'] = []
                      item(zeitschaltuhr)
                      zeitschaltuhr = item()
                      #logger.warning("Uhr Nachher{0}".format(zeitschaltuhr))
                  
                  logic.Schaltpunkteloeschen = Schaltpunkteloeschen
                  
                  def SchaltpunktEinfuegen(item,zeitpunkt,value, logic=logic):
                      zeitschaltuhr = item()
                      #logger.warning("Vor Einf{0}".format(zeitschaltuhr))
                      zeitschaltuhr['list'].append({'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY='+ str(mydays[int(zeitpunkt.strftime('%w'))]), 'value': value, 'time': zeitpunkt.strftime('%H:%M')})
                      item(zeitschaltuhr)
                      zeitschaltuhr = item()
                      #logger.warning("Nach Einf{0}".format(zeitschaltuhr))
                  logic.SchaltpunktEinfuegen = SchaltpunktEinfuegen
                  
                  #main
                  
                  #Liste leeren
                  logic.Schaltpunkteloeschen(sh.heizung.klein.mode.uzsu)
                  logic.Schaltpunkteloeschen(sh.heizung.gross.mode.uzsu)
                  
                  #Kalender holen
                  smarthome = sh.kalender('heizung', delta=7, offset=0, prio=2)
                  
                  # Schleife ueber alle Tage
                  for day in smarthome:
                      #logger.warning("Date: {0}".format(day))
                      # Schleife ueber alle Eintraege
                      for event in smarthome[day]:        
                          if 'Start' in event:
                              start = event['Start']
                              #logger.warning("Start: {0}".format(start))
                              start = start + timedelta(hours=-2)
                              #logger.warning("Start-2: {0}".format(start))
                          else:
                              start = None
                          if 'End' in event:
                              ende = event['End']
                              #logger.warning("Ende: {0}".format(ende))
                              ende = ende + timedelta(hours=-0.5)
                              #logger.warning("Ende-1: {0}".format(ende))            
                          else:
                              ende = None
                          if 'Summary' in event:
                              summary = event['Summary']
                          else:
                              summary = None            
                          if 'Description' in event:
                              description = event['Description']
                          else:
                              description = None            
                          #logger.warning("Time: Termin {0} {1} {2}".format(start,summary,description))
                          if (logic.IsHeizenKlein(summary) or logic.IsHeizenKlein(description)) and start != None and ende != None and summary != None:
                  
                              #logger.warning('Heizevent kl gefunden:Start {0} Ende {1} Sum {2} Descr {3}'.format(start,ende,summary,description))
                              logic.SchaltpunktEinfuegen(sh.heizung.klein.mode.uzsu,start,1)
                              logic.SchaltpunktEinfuegen(sh.heizung.klein.mode.uzsu,ende,2)
                  
                          if (logic.IsHeizenGross(summary) or logic.IsHeizenGross(description)) and start != None and ende != None and summary != None:
                  
                              #logger.warning('Heizevent gr gefunden:Start {0} Ende {1} Sum {2} Descr {3}'.format(start,ende,summary,description))
                              logic.SchaltpunktEinfuegen(sh.heizung.gross.mode.uzsu,start,1)
                              logic.SchaltpunktEinfuegen(sh.heizung.gross.mode.uzsu,ende,2)

                  Kommentar

                  Lädt...
                  X