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
Ankündigung
Einklappen
Keine Ankündigung bisher.
Erweiterung UZSU Plugin um crontab Modus?
Einklappen
X
-
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?Zitat von Onkelandy Beitrag anzeigenBeim PR mit den timeseries hab ich einige Anmerkungen gemacht.
Einen Kommentar schreiben:
-
Macht Sinn, aber das ist sicher das geringste Problem
- Likes 1
Einen Kommentar schreiben:
-
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 DateienZuletzt geändert von wvhn; 13.10.2021, 20:57.
Einen Kommentar schreiben:
-
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
- Likes 1
Einen Kommentar schreiben:
-
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?Zitat von bmx Beitrag anzeigenIch möchte 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.pyZuletzt geändert von bmx; 20.10.2021, 13:00.
Einen Kommentar schreiben:
-
Auf die Schnelle klingt das vernünftig.. könnte funktionieren
Einen Kommentar schreiben:
-
Hallo,Zitat von Onkelandy Beitrag anzeigenNe, 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.
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?
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
Prio hat erstmal das shNG Plugin, denn das muss die Schaltzeiten aus dem UZSU-item ermitteln und an den Scheduler übergeben. Zusätzlich benötigte Angaben musst Du dort implementieren. Das Widget stellt ja nur das Dict für das Plugin zur Verfügung. Zum Testen kann man sich ein Dict auch manuell erstellen und in das item schreiben.
Wenn das alles läuft, bauen wir auf Basis der Arbeiten von AndreK die Widgets so um, dass sie alle benötigten Daten ins Dict schreiben.
Gruß
WolframZuletzt geändert von wvhn; 03.10.2021, 17:00.
- Likes 1
Einen Kommentar schreiben:
-
Das wäre prima. Ich versuche mich mal an der Erweiterung des PluginsZitat von AndreK Beitrag anzeigenIch kann gerne meine angepasste device.js zu Verfügung stellen.
AndreK
Ich habe mir die Erweiterung des Widget nochmal anschaut. Wo würde man die Dauer einstellen? In der "series" sehe ich Start-Zeit, End-Zeit und Intervall. Für die Dauer habe ich nichts gesehen, oder?Zuletzt geändert von Sisamiwe; 03.10.2021, 16:22.
Einen Kommentar schreiben:
-
Hi,
ich habe das Thema hinten angestellt. Bin noch mit anderen Dingen beschäftigt. Ich kann gerne meine angepasste device.js zu Verfügung stellen.
Dann kann gerne jemand den Plugin-Teil übernehmen. Vorgehensweise würde ich auch wie von Andy in Post #132 vorgeschlagen sehen.
Viele Grüsse Andre
Einen Kommentar schreiben:
-
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. Spaßig könnte es dann mit der Interpolationssache werden, müsste man sich dann in nem zweiten Schritt anschauen denke ich.
Man müsste halt aus den series Infos ein rrule basteln, damit möglichst viele Funktionen des Plugins erhalten bleiben.
Zuletzt geändert von Onkelandy; 03.10.2021, 14:11.
Einen Kommentar schreiben:


Einen Kommentar schreiben: