Ankündigung

Einklappen
Keine Ankündigung bisher.

Treppenlichtfunktion flexibel

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

  • bmx
    antwortet
    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.

    Ich würde das Ganze mit einer Logik unterstützen und nicht nur mit einem Autotimer.

    Einen Kommentar schreiben:


  • Cannon
    hat ein Thema erstellt Treppenlichtfunktion flexibel.

    Treppenlichtfunktion flexibel

    Ich habe einen neuen Aktor, der leider nicht die Möglichkeit hat die Zeit der Treppenlichtfunktion über den Bus zu senden. Für die Gartenbewässerung wäre das aber sinnvoll. Da aber die ganze Steuerung ohnehion mit SmartHomeNG läuft, möchte ich auch die Treppenlichtfunktion umsetzen. Ich kriegs aber nicht so hin, wie ich mir das vorstelle. Das heißt:

    - es gibt ein Item schalten
    - es gibt ein Item Dauer
    - Dauer soll in Minuten sein
    - wenn Dauer > 0, dann soll das Item schalten eingeschaltet werden und bei 0 abgeschaltet werden

    - Dauer soll gleichzeitig die Restzeit beinhalten, wenn per Dauer eingeschaltet wurde
    - wenn das Item schalten manuell eingeschaltet wird, dann wird Dauer ignoriert (oder mit einen Standardwert vorbelegt)

    Im Prinzip funktioniert alles, bis auf die letzten beiden Punkte. Da weiß ich nicht mal ansatzweise, wie ich das lösen kann. Den Rest kann ich zwar berechnen, aber nicht im Item, welches die Dauer beinhaltet.

    Code:
        schalten:
            type: bool
            autotimer: sh..Dauer.Sekunden() = 0
            visu_acl: rw
            database: yes
            on_update:
                - .wannAktiv = sh.now() if value else None
            # Beregnungsdauer in Minuten
            Dauer:
                type: num
                visu_acl: rw
                on_change:
                    - .Sekunden = value * 60
                    - .Rest = value
                    - ..self = True if value > 0 else False
                Sekunden:
                    type: num
                    enforce_updates: yes
                Rest:
                    type: num
                    cycle: 60
                    enforce_updates: yes
                    visu_acl: rw
                    eval: sh...self() - round(sh...self.update_age() / 60, 0) if sh...self() > 0 else 0
Lädt...
X