Ankündigung

Einklappen
Keine Ankündigung bisher.

Supportthread für UZSU Plugin

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

    Hallo Sisamiwe ,

    die "duration" zu implemtieren sehe ich nicht wirklich als praktikabel. Das UZSU-Widget sowie das Plugin sehen zu einem eingestellten Zeitpunkt ein Schaltereignis vor.
    Wenn man nun eine Dauer vorgeben will muss jeweils das "Event" für Start des Intervalls + das "Event" für Ende des Intervalls angegeben werden.
    Das macht IMHO manchmal Sinn, oft aber auch nicht. Wenn jemand in Intervallen etwas schalten will, so meine Meinung, kann man auch zwei Einträge für die EIN/AUS Intervalle in der visu erfassen. Vielleicht wäre es hilfreich mal zu sammeln was alles Anwendungsfälle für Intervalle wären (Lüfter EIN/AUS, Lüfter 80%/20%, Rasensprenger EIN/AUS, usw.)

    Das sind nur meine Gedanken zum Thema, feel free to optimize it

    Viele Grüsse
    Andre

    Kommentar


      Zitat von Onkelandy Beitrag anzeigen
      Ne, im Plugin selbst ist noch nichts gemacht. Wenn denn würde ich den Ansatz von Andre aufgreifen. Man müsste in der funktion _get_time vor die Zeile 674 ein neues IF Statement einfügen "if time == 'serie':" und dort die series parsen.
      Hallo,
      ich habe mich mal etwas mit dem Plugin beschäftigte, probiert und getestet, um die "Series" Möglichkeit zu implementieren. Mein Favorit zur "minimalinvasiven" Implementierung ist, die UZSU-Einträge mit "time == serie" direkt beim parsen des Items aufzulösen. Ich stelle mir das so vor, dass, wenn das Item mit dem UZSU Eintrag geparst wird direkt nach "time == serie" gerpüft wird. Wenn ein entsprechender Eintrag gefunden wird, wird diese Zeitserie ausgelöst und entsprechnend viele normale UZSU-Einträge erstellt. Somit wäre an im Plugin-Dict, in dem die Items und deren UZSU-Eintrag gespeichert sind, die ausgelösten Zeitserien drin. Somit sollten alle anderen Funktionen des Plugins ohne Änderung auskommen.

      Konkret würde ich das (oder so ähnlich) unterhalb Zeile #390 einfügen:
      Code:
          for entry in uzsu_dict['list']:
                if entry['time'] == 'serie':
                  if entry['series'].get('active') is True:
                      starttime = datetime.strptime(entry['series']['timeSeriesMin'], "%H:%M" )
                      endtime = datetime.strptime(entry['series']['timeSeriesMax'], "%H:%M" )
                      step = entry['series']['timeSeriesIntervall'].split(':')
                      step_min = int(step[0])*60+int(step[1])
                      
                      while starttime <= endtime:
                          start = starttime.strftime("%H:%M")
                          new_entry = entry.copy()
                          del new_entry['series']
                          new_entry['time'] = start
                          new_uzsu_list.append(new_entry)
                          starttime = starttime + timedelta(minutes=step_min)
      
              else:
                  new_uzsu_list.append(entry)

      Was meint ihr?

      Kommentar


        Auf die Schnelle klingt das vernünftig.. könnte funktionieren

        Kommentar


          Ich würde den Thread mit der Erweiterung gerne vom Support Thread ab Post #128 abkoppeln und einen neuen Titel vergeben: Erweiterung UZSU Plugin um crontab Modus

          Weiterhin möchte ich darauf hinweisen, das sich im Core in develop die Implementation von Crontab geändert hat und dort jetzt weitere Möglichkeiten existieren. Es gibt jetzt lib/triggertimes.py

          Kommentar


            Zitat von bmx Beitrag anzeigen
            Ich würde den Thread mit der Erweiterung gerne vom Support Thread ab Post #128 abkoppeln und einen neuen Titel vergeben: Erweiterung UZSU Plugin um crontab Modus
            Das kannst Du gern umsetzen. Das betrifft Post #118 bis hier exklusive Post #125, #130

            Zitat von bmx Beitrag anzeigen
            Weiterhin möchte ich darauf hinweisen, das sich im Core in develop die Implementation von Crontab geändert hat und dort jetzt weitere Möglichkeiten existieren. Es gibt jetzt lib/triggertimes.py
            Bislang ist die Umsetzung so geplant, dass man eine Zeitreihe menugestützt (Widget) erstellt und im UZSU Dict hinterlegt. Das Plugin macht den Rest. Der crontab selbst wird nicht verwendet. Was glaubst Du, welchen Einfluss die Änderung im Core haben wird / kann?

            Kommentar


              Hallo,

              eine erste Version des UZSU-Plugins mit der Umsetzung der TimeSeries ist mal fertig.
              Umgesetzt und getestet sind Einträge im Dict nach dem Schema, wie von AndreK hier vorgeschlagen.

              Zudem sollte es auch funktionieren, wenn man statt der Endzeit für die Zeitserie eine Anzahl von Wiederholungen angibt. der "dict key" dafür ist "timeSeriesCount".

              Wie ist es realisiert:
              Es gibt eine neue interne Funktion im Plugin, die _decode_time_series heißt. Diese wird von der Funktion _schedule aufgerufen, bevor aus den Listeneinträge mit _get_time die letzte und nächste Ausführung ermittelt wird. Die neue Funktion _decode_time_series setzt alle Zeitserien in "normale" Einträge mit Zeitstempel um. Dadurch bleiben alle anderen Funktionen unberührt.

              Hier das Plugin zum Testen.
              Rückmeldung erbeten.

              uzsu_w_timeseries.zip

              Kommentar


                Hallo,
                zu der oben genannten Testversion des Plugins gibt es eine passende smartVISU Widget Version. Die ist unten als ZIP angehängt. Diese Version ist kompatibel zum aktuellen Stand der v3.1.0. Die Ordnerstruktur im ZIP entspricht der Struktur von smartVISU, so dass man die Datei einfach in den smartVISU-Ordner entpacken kann.

                Gruß
                Wolfram

                P.S.: die zum Develop-Stand kompatible Version befindet sich hier. Dazu wird noch die base.css aus der ZIP-Datei benötigt. Letztere befindet sich auch schon im aktuellen Develop von heute.
                Angehängte Dateien
                Zuletzt geändert von wvhn; 13.10.2021, 20:57.

                Kommentar


                  Beim PR mit den timeseries hab ich einige Anmerkungen gemacht.
                  Ich wäre übrigens schwer dafür, beim Type "series" und nicht "serie" zu nutzen. Was meint ihr? Müsste dann im Widget aktualisiert werden wvhn

                  Kommentar


                    Macht Sinn, aber das ist sicher das geringste Problem

                    Kommentar


                      Zitat von Onkelandy Beitrag anzeigen
                      Beim PR mit den timeseries hab ich einige Anmerkungen gemacht.
                      Da war ich wohl etwas voreilig. Wir AndreK wvhn wollen die Zeitserie auch mit sunrise / sunset beginnen und enden lassen. Dafür könnten wir noch etwas Inspiration gebrauchen. @Onkelandy: Könntest Du unterstützen?

                      Kommentar


                        Hi @all,

                        kurzes Update / Stand der Dinge:

                        die eingeschlagene Vorgehensweise geht schief weil jede[list] im UZSU-Item mit "sun" das Item aktualisiert, was ja auch Sinn macht und korrekt ist.
                        Dadurch werden alle "[list]" des items aktualisiert- die "virtuellen Einträge" gehen verloren-. Da bei _update_suncalc() über den Eintragsindex upgedatet wird, was auch Sinn macht stimmen nach dem Update des Items die Indexe nicht mehr -> Fehler "Index out of Range" . Aus meiner Sicht -> Sackgasse.

                        Der Plan (meiner) ist nun in def _get_time() die Serie korrekt zu berechnen und "next" bzw. "previous" korrekt zurückzugeben. Dann sollte, nach heutigem Wissensstand, der Rest auch wieder korrekt arbeiten. Nachdem ich die Berechnung der Serie mit sunset/sunrise eh schon gebastelt habe und nun auch "rrulestr" kennengelernt habe sollte es auch möglich sein dies in einem überschaubaren Zeitrahmen zu realisieren.

                        Sobald wieder Zeit ist, mache ich auf dem Weg weiter (im Moment alles noch Theorie), Hinweise sind gerne willkommen.

                        Viele Grüsse
                        Andre

                        Kommentar

                        Lädt...
                        X