Ankündigung

Einklappen
Keine Ankündigung bisher.

Treppenlichtfunktion flexibel

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

  • wvhn
    antwortet
    So: hier nochmal die hoffentlich letzte Aktualisierung. Jetzt bringen auch die updates im 5sec-Rhythmus auf der Doku-Seite das Widget nicht mehr durcheinander. Die Version ist auch auf smartvisu-newstuff zur Nachrüstung von v2.9.2, sowie im develop.

    Die 5 Sekunden sind übrigens eine Schleife im io_offline.js Treiber. Die kann man auch abschalten, indem man io.stop() aufruft - beispielsweise beim Browser-Event 'pageshow'. Das ist aber mit dem aktuellen Stand des Widgets nicht mehr nötig. In die Doku-Seite würde ich gerne noch einen Button einbauen, der jeweils die aktuelle Zeit als Zeitstempel an das starttitme item schickt. Ich weiß aber noch nicht, wie ich das im offline-Modus dynamisch auf den Button bekomme.

    Onkelandy , ich hoffe jetzt funzt der Countdown auch mit der Stateengine. Sonst gerne mehr Info auf Gitter.

    Gruß
    Wolfram
    Angehängte Dateien
    Zuletzt geändert von wvhn; 28.10.2020, 10:32.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    OK. Das Anzeigen des negativen Werts und das Stoppen des Countdowns habe ich im Griff. Siehe Datei anbei.

    Das Widget geht davon aus, dass die update-Methode nur bei Änderungen der items getriggert wird. Tatsächlich kommt aber auf meinem Raspi in der Doku-Seite alle 5 Sekunden ein Update mit denselben items. Das führt dazu, dass der Countdown trotz Abbruch alle 5 sec. wieder weiter läuft, solange die Gesamt-Duration noch nicht abgelaufen ist.

    Hat irgendjeman eine Idee, warum die update-Methode alle 5 Sekunden aufgerufen wird?

    Gruß
    Wolfram
    Zuletzt geändert von wvhn; 27.10.2020, 23:53.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Es ist immer wieder erstaunlich, was trotz intensivem Testen alles passieren kann. Vor allem der Browser-Cache spielt eine nicht unerhebliche Rolle
    Bei mir stoppt der Countdown auf dem PC mit lokalem Apache und Firefox seit heute morgen beim ersten Mal sofort wieder. Mit Apache auf dem Raspberry läuft er sauber an, startet dann aber nach dem Abbruch immer wieder neu.

    Wartet mal mit dem Testen. Ich stelle nochmal eine neue Version bereit.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Danke für das coole Widget! Jetzt gibts mal prinzipiell keinen Fehler mehr Komisch ist aber, dass auf der Dokuseite ca. 5 Sekunden vergehen, bis der Countdown angezeigt wird. Zudem erscheint eine Sekunde lang ein sehr hoher Minusbetrag, ehe der Wert korrigiert wird.

    Für Stateengine scheint das Widget leider nicht tauglich. Dort wird nämlich immer das Suspend Item auf falsch und sofort auf wahr gesetzt - und somit wohl der Countdown sofort gestoppt, ehe er begonnen hat, denke ich..? Muss ich nochmals durchgucken.

    Ich generiere den Timestamp in shng via: sh.tools.dt2ts(shtime.now())
    Muss das dann halt * 1000 nehmen, damit es klappt. Allerdings wäre es natürlich schön, das Widget würde das selber kapieren, ob die Angabe in s oder ms ist..?

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Musste nochmal was korrigieren und habe die Dateien ausgetauscht. Siehe #12

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Jetzt hat es doch ne Weile gedauert, bis ich mich dransetzen konnte. Im Anhang nun die erste Version mit Bitte um ausführliches Testen.
    Das widget clock.countdown benötigt
    • ein item, das im Backend mit timer geschaltet wird
    • ein item für die Startzeit (Unix Zeitstempel)
    • ein item für die Schaltdauer (Format y m d h i s, e.g. "2i 30s"). y, m und d werden vom widget in Stunden umgerechnet und angezeigt.
    • eine optionale Angabe für das Zählintervall (default: 10s)
    Der Countdown wird gestartet, wenn Startzeit und Dauer gesetzt sind und die Summe größer als die aktuelle Zeit ist.
    Abgebrochen wird der Countdown, wenn das Schaltitem geändert wird, aber die Startzeit gleich bleibt. Wenn das item im Backend nach Ablauf des Timers nicht verändert wird, läuft der Countdown einfach weiter.
    Startzeit und Dauer können vom Backend verändert werden, während der Countdown läuft. Die Anzeige wird entsprechend angepasst.

    Dateien einschl. Docu-Seite anbei. Einfach entsprechend der Ordnerstruktur entpacken. Viel Spaß!

    Gruß
    Wolfram

    P.S.: neue Dateien hochgeladen nach Korrektur der Anzeige negativer Werte und Verbesserung der Triggerung des Countdowns

    P.P.S: übrigens ist das Widget auch in github auf smartvisu-newstuff
    Zuletzt geändert von wvhn; 25.10.2020, 22:58.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Die Restzeit in shNG zu berechnen ist IMHO Ressourcenverschwendung. Da gebe ich bmx recht. Das kann die Visu viel schlanker. Zudem läuft sie auf dem Client und führt das Ganze auch nur dann aus, wenn die entsprechende Seite angewählt ist.

    Ich mache mich also in den nächsten Tagen mal an die Countdown-Funktion, wie oben beschrieben. Nach der Diskussion hier würde ich die Anzeige allerdings bei jeder Änderung des Schaltitems abbrechen, also nicht nur, wenn es 0 (aus) ist. Vermutlich ist es sinnvoll, wenn shNG das item für den Startzeitpunkt auf 0 setzt, wenn der Autotimer abgelaufen oder der Vorgang abgebrochen ist.

    Gruß
    Wolfram
    Zuletzt geändert von wvhn; 28.09.2020, 17:58.

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Cannon Beitrag anzeigen
    Der Ansatz ist die USZU. Ich kriege die bei mir gar nicht zum Laufen. SmartHomeNG lässt sich dann nicht starten, wenn das plugin aktiviert ist. Dennoch interessanter Ansatz ich schau mal rein.
    Nein, weiter hinten im Thread geht es um eine allgemeine Zeitschaltuhr, die z.B. durch einen Taster ausgelöst wird ("Stoßlüftung"). Weiterhin eine Rückkehrfunktion auf den vorher eingestellten Wert (=Lüftungsstufe vor Stoßlüftung) sowie Abbruchmöglichkeit (=Stop, Rückkehr auf alten Wert) und Restzeitanzeige. Geht alles ohne UZSU. Stefan und Wolfram haben damals ja auch viele gute Ideen dazu gehabt.

    Wie schon geschrieben, steht eine für derlei Dinge einsetzbare, allgemeingültige Itemstruktur mit den dafür notwendigen Hilfsitems noch auf meiner ToDo-Liste. Ich nehm aber auch gern 'fertigen' Input von anderer Seite.

    /tom

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ne, das hat mit dem stateengine nix zu tun - wollte nur Interesse bekunden, dass es ein Countdown in dem Zusammenhang auch interessant wäre.
    Fürs UZSU gibt es einen Supportthread. zu 99% liegt es an der fehlenden Scipy Installation. Am Raspi auch noch lib-atlas. Steht aber in der Doku und im Supportthread.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von bmx Beitrag anzeigen
    Wozu brauchst Du die Restzeit? Da müßtest Du das ja andauernd triggern damit sich das neu berechnet? Und wenn Du die ggf. in der SmartVISU anzeigen willst, dann ist das Websocket da permanent mit beschäftigt das anzuzeigen. Wir haben diese Diskussion schon mal irgendwo gehabt. Die Quintessenz war IMHO das man einmalig beim Schalten die Restzeit einem Item gibt und für die Visualisierung dann Item und Dauer in der SmartVISU verknüpfen müßte um das dort korrekt anzuzeigen.
    Was heißt denn andauernd? Die Welt geht nicht unter, wenn es einmal pro Minute aktualisiert wird. Ich will einfach auf der VISU sehen, wie lange die Bewässserung noch laufen wird. Ich könnte alternativ allerdings noch die Endzeit berechnen und dann hinschreiben. Dann habe ich zwar keine Restzeitanzeige, aber die Uhrzeit, wie lange das noch läuft.

    Zitat von Tom Bombadil Beitrag anzeigen
    Wir hatten schonmal eine ähnliche Problematik beim Thema "Stoßlüften" hier - sind aber nie zu einer finalen Lösung gekommen.
    Der Ansatz ist die USZU. Ich kriege die bei mir gar nicht zum Laufen. SmartHomeNG lässt sich dann nicht starten, wenn das plugin aktiviert ist. Dennoch interessanter Ansatz ich schau mal rein.

    Zitat von wvhn Beitrag anzeigen
    Was wäre denn eine sinnvolle countdown-Frequenz? Ich kann die einstellbar machen. Dann kann jeder selbst festlegen, wie sehr er sein System mit Zählen beschäftigen will. Ich würde folgendes abhängig von der Dauer als Default vorschlagen:
    Klingt interessant. Nutzen und reinlesen müsste ich mich dazu aber in das stateengine-plugin?

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Ich würde von Formaten ausgehen, die SV und shNG schon beherrschen. Das sind die Zeitstempel, die z.B. vom database-Plugin gesendet werden und die duration-Formate, die bei den Plots üblich sind. Beispiel: 1h 5i 3s sind 1 Stunde, 5 Minuten und 3 Sekunden.
    Also Anfangszeit -> Zeitstempel und gesetzte Dauer -> duration.

    Was wäre denn eine sinnvolle countdown-Frequenz? Ich kann die einstellbar machen. Dann kann jeder selbst festlegen, wie sehr er sein System mit Zählen beschäftigen will. Ich würde folgendes abhängig von der Dauer als Default vorschlagen:
    • über 10 Minuten: 1 x pro Minute
    • über 1 Minute: alle 10 Sekunden
    • unter 1 Minute: alle 5 Sekunden
    Ich würde das Feature clock.countdown(id, Schaltitem, Startzeit, Dauer, [Freuenz]) nennen und die Ausgabe per javaScript in ein html-Element schreiben.

    Passt das so?

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Wenn wir da grad dabei sind bezüglich Countdown. Das wäre uU noch ein nettes Feature für das stateengine Widget. Dort ist die Dauer in einem Item definiert. Und bis dato die Endzeit als String. Letzteres wird vermutlich nicht viel bringen - aber es wäre sicher easy, beim entsprechenden Schaltzeitpunkt ein Item mit der aktuellen Uhrzeit zu befüllen. In welchem Format/Type müsste das dann vorliegen?

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Wenn der Schaltzeitpunkt und die gesetzte Einschaltdauer als items definiert werden, kann ich diese in smartVISU in einem Widget als Countdown anzeigen lassen - z.B. alle 5 oder 10 Sekunden, solange das Schaltitem eingeschaltet ist.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Eine praktikable Lösung wäre ggf, nicht den Rest, sondern den Einschaltzeitpunkt zu nutzen und an die Visu zu übermitteln.

    Die Anzeige "jetzt - Aktivierung" könnte man über JS dauerhaft und mit wenig Aufwand aktuell halten.

    Mit Deaktivierung wird der Startzeitpunkt zurückgesetzt und die Anzeige geht aus...

    Kann ich mangels JS-Fähigkeiten nicht umsetzen, aber die Aktivierungszeit wäre über Item-Properties vom Schaltitem lesbar.

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Wir hatten schonmal eine ähnliche Problematik beim Thema "Stoßlüften" hier - sind aber nie zu einer finalen Lösung gekommen.

    Steht somit noch auf meiner ToDo-Liste:
    Allgemeingültige Itemstruktur austüfteln, die für Autotimer/Countdown (Treppenlicht, Stoßlüftung etc pp) verwendbar ist
    (mit allen denkbaren Features drumherum wie z.B. Abbruch durch Taster/Visu).


    Vielleicht helfen die Gedanken im verlinkten Thread ja trotzdem.

    /tom

    Einen Kommentar schreiben:

Lädt...
X