Rollladen rules nach gebrauch defekt?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
earlybird
Beiträge: 43
Registriert: 28. Dez 2018 22:13

Rollladen rules nach gebrauch defekt?

Beitrag von earlybird »

Hallo zusammen,
habe hier folgendes Problem:

Mit diesen beiden Regeln kann ich meine Rolladen rauf/runter fahren.

Code: Alles auswählen

	
rule "Rollladen Gesamt runter mit Timer"
 
when

Channel 'astro:sun:7d149c19:set#event' triggered START

then


createTimer(now.plusMinutes(1)) 
        [
            sendCommand(gRollladenGesamt, DOWN)
        ]
    
end


rule "Rollladen Gesamt rauf mit Timer"
 
when

Channel 'astro:sun:7d149c19:rise#event' triggered START

then


createTimer(now.plusMinutes(67)) 
        [
            sendCommand(gRollladenGesamt, UP)
        ]
    
end

Nach der Ausführung z.B Abends sieht die Regel in VS-Code so aus

20200730-Rolladen_rules-01.png
die beiden Regeln sind komplett markiert (in der Seitenansicht rot hinterlegt)

und es wird (s.u.) der Fehler:
"message": "The type Rolladen_bewgenRules is already defined in Rolladen_bewgen.rules.",
ausgegeben.

Kann mir jemand sagen woran das liegen kann oder wo ich suchen sollte ?!

Für Eure freundliche Hilfe im vorhinein "herzlichen Dank"

Jürgen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rollladen rules nach gebrauch defekt?

Beitrag von peter-pan »

Ist ein bisschen merkwürdig. Hast du schon mal geschaut, ob es in deiner Rule die Variable, Konstante "Rolladen_bewgenRules" gibt ? Der Fehler muss nicht zwangsläufig in Zeile 9/1 sein. Was hast du denn in den Zeilen davor definiert ? Das Rules-File "Rolladen_bewgen.rules" scheint ja ziemlich gross zu sein.

Eine Möglichkeit wäre diese zwei Rules mal aus der grossen Rules-Datei heraus zu nehmen und in ein eigenes Rules-File zu setzen.

Ich weiss zwar nicht, ob das eine Auswirkung auf die Regeln hat, aber ich habe sie mal etwas modifiziert. (Klammerung und | ).

Code: Alles auswählen

rule "Rollladen Gesamt runter mit Timer"
  when
    Channel 'astro:sun:7d149c19:set#event' triggered START
  then
    createTimer(now.plusMinutes(1), [|
            sendCommand(gRollladenGesamt, DOWN)
    ])
end

rule "Rollladen Gesamt rauf mit Timer"
  when
    Channel 'astro:sun:7d149c19:rise#event' triggered START
  then
    createTimer(now.plusMinutes(67), [|
            sendCommand(gRollladenGesamt, UP)
    ])
    
end
Bist du sicher, das die Regeln auch funktionieren ?

Was mir noch einfällt ist die "UP/DOWN"-Geschichte bei den Gruppen zu den Rollläden. Ich meine, dass hier mit 0 und 100 arbeiten müsste. Ich glaube Udo hat das hier erst vor kurzem noch einmal schön erklärt und die Logik dahinter erläutert. Ich dachte nämlich auch, dass das so gehen könnte. Da ich aber keine steuerbaren Rollos habe, ist mir der Fehler in meinem Test-Equipment nicht aufgefallen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Rollladen rules nach gebrauch defekt?

Beitrag von udo1toni »

Da kann ich mich jetzt gar nicht erinnern... ;)

Beim Steuern von Rollladengruppen sollte eigentlich das .sendCommand an die Member durchgereicht werden. Es kann aber sein, dass es da ein grundsätzliches Problem gibt, bei mir hat das nämlich auch nie funktioniert.

Man kann sich aber mit einem einfachen Trick behelfen, indem man nämlich nicht die Gruppe steuert, sondern alle Member. Also statt

Code: Alles auswählen

sendCommand(gRollladen,UP)
einfach

Code: Alles auswählen

gRollladen.members.forEach[r|r.sendCommand(UP)]
bedeutet: Nimm die Gruppe gRollladen, benutze die Liste der unmittelbaren Member (das sind die, die direkt der Gruppe zugeordnet sind), führe für jedes Item dieser Liste folgende Befehle aus. r ist der für das Listenelement verwendete Platzhalter.
Und dann kommen alle Befehle, die pro Listenelement ausgeführt werden sollen, in diesem Fall ein einziger Befehl, nämlich r.sendCommand(UP).
Damit bekommt zuverlässig jeder Rollladen seinen eigenen Steuerbefehl.
Die 0 und 100 mögen als Befehl ebenfalls funktionieren, beim Wort STOP klappt das aber vielleicht nicht, mit der oben beschriebenen Variante geht das aber zuverlässig.

Weiterhin mache ich immer wieder gerne Werbung für die Verwendung der Methoden, wann immer das geht. Die Actions sind nicht so zuverlässig wie die Methoden.


Gesendet von iPad mit Tapatalk
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten