Problem mit Zeitabschaltung in einer Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Problem mit Zeitabschaltung in einer Rule

Beitrag von OliverCJ »

Hallo zusammen und ein frohes neues Jahr!

Ich habe am vergangenen Wochenende die folgende rule für meine Außenbeleuchtung geschrieben:

Code: Alles auswählen

var Timer tTerrassenlicht = null
var int Schwellenwert = 35

rule "Terrassenlicht bei Bewegung"
when
    Item WMDO_Draussen_motioncount changed
then
    if (WMDO_Draussen_luminance.state < Schwellenwert) {
        if (tTerrassenlicht !== null) {
            tTerrassenlicht.cancel
            tTerrassenlicht = null
        }
        Hue_OD_Terrasse_Wandleuchte_Color.sendCommand("29,80,80")
        Hue_OD_Terrasse_UpDown1_Color.sendCommand("29,80,80")
        Hue_OD_Terrasse_UpDown2_Color.sendCommand("29,80,80")
        createTimer(now.plusSeconds(300)) [|
        Hue_OD_Terrasse_Wandleuchte_Toggle.sendCommand(OFF)
        Hue_OD_Terrasse_UpDown1_Toggle.sendCommand(OFF)
        Hue_OD_Terrasse_UpDown2_Toggle.sendCommand(OFF)
        ]
    }
end
Die drei Lampen werden auch zuverlässig eingeschaltet, nur leider werden sie auch manchmal ziemlich schnell wieder ausgeschaltet. Wenn das passiert, dann auf jeden Fall viel schneller als nach 300 Sekunden.

Meine Vermutung ist nun (ich werde das heute Abend mal checken), dass wenn die Lampen an sind, die Helligkeit auf der Terrasse über 35% liegt und die nächste Bewegung dann ein Abschalten verursacht. Könnte das sein? Und wenn ja, wie würdet ihr die Regel umschreiben, um das zu verhindern?
Ich scheine da gerade Tomaten auf den Augen zu haben...

Danke!
Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von Darkwin101 »

Du musst auch beim anlegen des Timers ihm den vorgesehenen Namen geben tTerrassenlicht = createTimer sonst kann er nicht abgebrochen werden usw


Gesendet von iPhone mit Tapatalk

ODB
Beiträge: 13
Registriert: 7. Jan 2021 19:15
Answers: 0

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von ODB »

Kann man den timer in OH3 auch über die Design Oberfläche setzen oder ist dies nur via Code möglich?
Das expire binding gibt es scheinbar nicht mehr in OH3

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von OliverCJ »

Darkwin101 hat geschrieben: 8. Jan 2021 11:13 Du musst auch beim anlegen des Timers ihm den vorgesehenen Namen geben tTerrassenlicht = createTimer sonst kann er nicht abgebrochen werden usw
Darkwin.... Danke! Hab ich echt nicht gesehen. Kommt wahrscheinlich davon, wenn man zu lange auf den Bildschirm starrt.

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von violine21 »

ODB hat geschrieben: 8. Jan 2021 14:11 Kann man den timer in OH3 auch über die Design Oberfläche setzen oder ist dies nur via Code möglich?
Ja, das geht.
Such Dir das entsprechende Item raus, klicke unter dem Menüpunkt Add Metadata auf Expiration Timer.
Dort findest Du die Einstellungen. Das gilt dann aber grundsätzlich für das Item.
Ansonsten siehe hier:
udo1toni hat geschrieben: 7. Jan 2021 00:38
violine21 hat geschrieben: 7. Jan 2021 00:15
udo1toni hat geschrieben: 6. Jan 2021 23:10 Auf dem Licht Item richtest Du das expire Tag ein und konfigurierst es auf Command OFF nach 120 Sekunden.
Gilt das dann aber generell für das Item?
Wie gehe ich vor, wenn ich das Item mehrmals unter unterschiedlichen Bedingungen nutzen will?
z.B. in einer Rule:
Bedingung 1 >>> Item 2 Minuten ein
Bedingung 2 >>> Item 30 Sekunden ein
Bedingung 3 >>> Item dauernd ein
Greife ich dann auf die üblichen Timer zurück?
Ja, dann brauchst Du einen dynamischen Timer. Das geht nur über eine Rule.

ODB
Beiträge: 13
Registriert: 7. Jan 2021 19:15
Answers: 0

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von ODB »

Hallo Violine21,

Danke für deine Antwort.
Also es handelt sich bei dem Item um eine Glühbirne
die sollte natürlich nicht immer 60 Sekunden nach dem einschalten ausgehen.

Gedacht ist das nach dem öffnen der eingangstür die Lampe angeht und dann nach 60 sek wieder aus.

Wie kann ich das denn in der rule einstellen mit dem dynamischen Timer.

Sry bin noch sehr neu in der Materie

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Problem mit Zeitabschaltung in einer Rule

Beitrag von udo1toni »

Allgemein ist das Kapern eines Threads keine gute Idee... ;)

Aber sei's drum. Wenn es um eine einfache Leuchte geht, so spricht eigentlich nichts dagegen, den Expiration Timer zu verwenden. Hat man einen Bewegungsmelder, der bei jeder erkannten Bewegung ON sendet, so wird das Licht dann z.B. 60 Sekunden nach dem letzten ON-Befehl abgeschaltet. Es ist also nicht so, dass das Licht genau 60 Sekunden leuchtet.

Ein dynamischer Timer hat unterschiedliche Laufzeiten.
Ich habe bei mir z.B. eine variable Lüfter Nachlaufzeit, abhängig von der Einschaltdauer des Lichts. Beim kleinen Geschäft oder Händewaschen schaltet der Lüfter praktisch sofort wieder aus, beim großen Geschäft läuft er 5 Minuten nach, wenn jemand duscht, läuft er 15 Minuten nach. Das funktioniert eigentlich ganz zuverlässig.

Innerhalb einer Rule erstellt man einen Timer mit dem Befehl createTimer(Startzeitpunkt,Code). Den Startzeitpunkt gibt man gewöhnlich relativ zum aktuellen Zeitpunkt an, also z.B. now.plusMinutes(3). Wenn man nun die 3 durch eine Variable ersetzt, muss man nur noch mit einer Formel dafür sorgen, dass die Variable beim Setzen des Timers den gewünschten Wert enthält.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten