Trigger werden scheinbar nicht ausgeführt

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Mawo94
Beiträge: 7
Registriert: 3. Sep 2020 19:11
Answers: 0

Trigger werden scheinbar nicht ausgeführt

Beitrag von Mawo94 »

Hallo openHAB Gemeinde,

ich habe mich jetzt ein wenig in openHAB eingearbeitet und dank eurer Hilfe auch schon etwas um Laufen gebracht. Danke hierfür.

Jetzt stehe ich allerdings komplett auf dem Schlauch.
Ich habe für jedes Rollo im Haus eine *.rules Datei erstellt. Diese sind bis auf den Rollo spezifischen Teil alle gleich.
Hier das Beispiel für das Rollo im Eltern Schlafzimmer:

Code: Alles auswählen

var Timer Rollo = null
var Timer tEltern = null

rule "Astro_Auf"
    when
        Channel 'astro:sun:home:civilDawn#event' triggered START
    then    
         tEltern = createTimer(now.plusSeconds(7), [|             
            Eltern_Zu.sendCommand(OFF)
            Eltern_Auf.sendCommand(ON)
            logInfo("Rollo", "Eltern Auf")])
end 

rule "Astro_Zu"
    when
        Channel 'astro:sun:home:civilDusk#event' triggered END
    then 
        tEltern = createTimer(now.plusSeconds(7), [|             
            Eltern_Auf.sendCommand(OFF)
            Eltern_Zu.sendCommand(ON)
            logInfo("Rollo", "Eltern Zu")])    
end

rule "Auf_Stop"
    when 
        Item Eltern_Auf changed to ON 
    then 
        Eltern_Zu.sendCommand(OFF)
        logInfo("Rollo", "Eltern Zu aus -Auf Stop Triggered")
        Rollo?.cancel
        Rollo = null
        Rollo = createTimer(now.plusSeconds(20), [| 
        Eltern_Auf.sendCommand(OFF)
        logInfo("Rollo", "Eltern Auf aus")])
end

rule "Zu_Stop"
    when 
        Item Eltern_Zu changed to ON 
    then 
        Eltern_Auf.sendCommand(OFF)
        logInfo("Rollo", "Eltern Auf aus - Zu Stop Triggered")
        Rollo?.cancel
        Rollo = null
        Rollo = createTimer(now.plusSeconds(20), [| 
        Eltern_Zu.sendCommand(OFF)
        logInfo("Rollo", "Eltern Zu aus")])
end            
Kurze Erklärung zum Code:
In den ersten beiden Regeln soll bei Morgen bzw. Abenddämmerung das entsprechende Rollo auf bzw. zu gefahren weden. Damit nicht beide Befehle am Aktor (Sonoff dual mit Tasmota per MQTT) anstehen wird vorher der Ggegenbefehl ausgeschaltet. Der Timer vor dem Befehl soll dazu dienen, zum Zeitpunkt des Triggers das WLAN zu entzerren und damit den Trafic im WLAN zu verteilen. Hier sollen die Aktoren mit 1 Sekunde Abstand angesteuert werden.

In den lezten beiden Regeln sollen die Aktoren nach der Laufzeit der Rollos wieder abgeschaltet werden (Abschaltregel). sobald der Aktor, egal von wo ( Taster opebHAB, Webinterface), eingeschaltet wird.

Zum Testen habe ich 5 Rollos mit dieser Regel angelegt. Den Rest habe ich nur mit der Abschaltregel angelegt. Vorher hatte ich alle Rollos nur mit der Abschaltregel angelegt. Diese haben funktioniert, wenn mann die Aktoren nicht zu schnell hintereinander betätigt hat. Bei zu schnellem Betätigen wurden die Reglen nicht alle getriggert (Kontrolle über die Log Ausgaben). Bei einenm Dämmerungs Event,wird ein Trigger ausgeführt, der Rest nicht.

Ab dem Zeitpunkt, zu dem ich die Absschaltregeln aktiviert habe funktioniert auch die Regel aus dem Beitrag viewtopic.php?f=15&t=3970, bei der mich udo1toni sehr hilfreich untersützt hat, auch nicht mehr.

Genug der Erklärung, nun zu einer Frage.
Kann es sein, das openHAB mit der Anzahl Trigger zum gleichne Zeitpunkt überlastet ist und nach der ersten Ausführung ohne Fehlermeldung blockiert? Oder habe ich in meiner Struktur einen Denkfehler?

Gruß
Markus

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

Re: Trigger werden scheinbar nicht ausgeführt

Beitrag von udo1toni »

Definitiv. Allerdings möchte ich auch gleich anmerken, dass Du die Sache unglücklich (falsch klingt so böse...) angehst.

Erste Frage: Welche Version von Tasmota verwendest Du? Tasmota unterstützt schon seit ~v7 die Steuerung von Rollläden (man muss lediglich die entsprechenden SetOptions setzen). Damit kannst Du die Sonoff Dual in "echte" Rollladensteuergeräte umwandeln, mitsamt Positionsfahrten(!).

Was die Gleichzeitigkeit von Rules betrifft: openHAB kann default 5+2 Rules parallel abarbeiten, wobei 2 Threads dem Scheduler gehören (time cron + create timer) und die übrigen 5 den anderen Triggern gehören.
Deshalb sollte man grundsätzlich Rules mit identischem Trigger vermeiden.
Du brauchst aber so oder so nur zwei Rules, eine zum Öffnen, eine zum Schließen (es sei denn, du willst variable unterschiedliche Zeiten natürlich).

Aber wie erwähnt möchte ich als ersten Schritt empfehlen, die Optionen in Tasmota zu nutzen.

Gesendet von meinem SM-G973F mit Tapatalk



openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten