Alle KNX Rolladen sollen per Schalter gesteuert werden können
Verfasst: 7. Feb 2019 10:01
Hallo,
ich bin noch sehr neu in der Welt von openHAB und Hausautomatisierung. Ich habe bisher erst alle meine Geräte eingepflegt und versucht eine Regel zu erstellen welche alle Rolladen über einen Schalter Steuern soll. Der Code der Regel sieht wie folgt aus:
So nun zu meinem Problem, wenn ich dem Schalter den Befehl zum schließen gebe funktioniert dies auch Problemlos. Wenn ich nun dazu aber noch einen Stop Befehl gebe fahren die Rolladen immer ein Stück runter, bleiben stehen, fahren runter und immer so weiter.
Ich dachte es liegt vielleicht daran, dass der aufm dem Bus immer beide Befehle parallel gesendet werden und es daher zu diesem Phänomen kommt. Also habe ich versucht eine Absicherung zu "bauen" die es verhindern soll, dass ein weiterer Befehl gesendet wird solange der vorherige noch nicht beendet wurde. Meine Idee sah so aus:
Als ich das ganze dann einmal getestet habe, habe ich damit gerechnet, dass die Rolladen bis zum Ende runterfahren bevor ich einen weiteren Befehl senden kann (z.B. STOP). Aber komischerweise wurde der STOP Befehl, als ich ihn gesendet habe auch ausgeführt. Diesmal sogar ohne Probleme.
Somit habe ich mein Problem selbst gelöst, habe aber immer noch die Frage wieso immer noch mehre Befehle gesendet werden können? Da die Variable "frei" nur dann wahr ist wenn die Regel einmal bis zum Ende ausgeführt wurde.
ich bin noch sehr neu in der Welt von openHAB und Hausautomatisierung. Ich habe bisher erst alle meine Geräte eingepflegt und versucht eine Regel zu erstellen welche alle Rolladen über einen Schalter Steuern soll. Der Code der Regel sieht wie folgt aus:
Code: Alles auswählen
rule "Gesamte Rolladen Steuerung"
when Item rolladenAlle received command // rolladenAlleEG ist der Schalter der für die Steuerung zuständig sein soll
then
Rolladen_EG.members.forEach[ rs |
rs.sendCommand(receivedCommand)
Thread::sleep(100)
]
end
Ich dachte es liegt vielleicht daran, dass der aufm dem Bus immer beide Befehle parallel gesendet werden und es daher zu diesem Phänomen kommt. Also habe ich versucht eine Absicherung zu "bauen" die es verhindern soll, dass ein weiterer Befehl gesendet wird solange der vorherige noch nicht beendet wurde. Meine Idee sah so aus:
Code: Alles auswählen
val frei = true
rule "Gesamte Rolladen Steuerung"
when Item rolladenAlle received command // rolladenAlleEG ist der Schalter der für die Steuerung zuständig sein soll
then
if(frei){
frei = false
Rolladen_EG.members.forEach[ rs |
rs.sendCommand(receivedCommand)
Thread::sleep(100)
]
frei = true
}
end
Somit habe ich mein Problem selbst gelöst, habe aber immer noch die Frage wieso immer noch mehre Befehle gesendet werden können? Da die Variable "frei" nur dann wahr ist wenn die Regel einmal bis zum Ende ausgeführt wurde.