Alle KNX Rolladen sollen per Schalter gesteuert werden können

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
MichaelB
Beiträge: 7
Registriert: 7. Feb 2019 09:39
Answers: 0

Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von MichaelB »

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:

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
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:

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
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.

mamoel
Beiträge: 137
Registriert: 12. Jan 2019 19:56
Answers: 0

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von mamoel »

Hier würde es sicherlich helfen, für die betroffenen Zeiträume in das Log zu schauen. Da siehst Du, wann welcher Befehl gesendet wird und auch wann welche Steuerung auf welchen Befehl gesetzt wird (inkl. Zeitstempel).
openHAB 2.5 (M1) in Docker auf NAS: Synology DS418play
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...

MichaelB
Beiträge: 7
Registriert: 7. Feb 2019 09:39
Answers: 0

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von MichaelB »

Ich müsste dann nochmal nachschauen ob ich es noch in den Logs finden kann. Nachstellen würde ich es ungerne da ich ein wenig Sorge um die Motoren in den Rolladen habe.

mamoel
Beiträge: 137
Registriert: 12. Jan 2019 19:56
Answers: 0

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von mamoel »

Die Logs werden nicht gelöscht. Es sollte also kein Problem sein, die Stelle zu finden.
openHAB 2.5 (M1) in Docker auf NAS: Synology DS418play
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...

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

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von udo1toni »

Du verwendest eine Konstante, (val -> Konstante) Du brauchst aber eine Variable (var), die Du verändern kannst.
Eigentlich sollte die Zuweisung eines Wertes an eine Konstante sogar eine Fehlermeldung erzeugen.
Zum erfolgreichen Sperren musst Du also nur einen Buchstaben ändern :)

Die Konstruktion mit members ist nur dann erforderlich, wenn es zu Timingproblemen kommt (meist wenn zu viele Items in einer Gruppe stecken, dann schickt openHAB zu viele Telegramme in kurzer Zeit. Ansonsten sollte es reichen, dne Befehl an die Gruppe zu senden:

Code: Alles auswählen

Rolladen_EG.sendCommand(receivedCommand)
Vorausgesetzt natürlich, alle beteiligten Items sind vom Typ Rollershutter (auch die Gruppe).
Die rule sähe üblicherweise dann so aus:

Code: Alles auswählen

var Boolean 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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

MichaelB
Beiträge: 7
Registriert: 7. Feb 2019 09:39
Answers: 0

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von MichaelB »

Danke für die Antwort
Alles klar gut zu wissen :D.
Mich wundert es, dass trotzdem alles erfolgreich durchläuft, auch wenn dort Dinge gemacht werden die so nicht funktionieren dürfen.
udo1toni hat geschrieben: 7. Feb 2019 18:13 Die Konstruktion mit members ist nur dann erforderlich, wenn es zu Timingproblemen kommt (meist wenn zu viele Items in einer Gruppe stecken, dann schickt openHAB zu viele Telegramme in kurzer Zeit.
Ich habe mal nachgezählt. In der Gruppe befinden sich 9 Items und die Gruppe besteht aus reinen rollershuttern. Muss ich das dann überhaupt per rule machen? Oder kann ich dies auch einfach über die Gruppe Rolladen_EG lösen wie z.B. auch bei einer Gruppe von Lichtschaltern?

Mit freundlichen Grüßen

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

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von udo1toni »

MichaelB hat geschrieben: 8. Feb 2019 09:18 In der Gruppe befinden sich 9 Items und die Gruppe besteht aus reinen rollershuttern. Muss ich das dann überhaupt per rule machen?
Probiere es aus. Wenn es keine Probleme gibt (einzelne nicht fahrende Rollläden), kannst Du auf die Rule verzichten und stattdessen einfach das Group Item auf die Sitemap pappen, damit der Steuerbefehl direkt dorthin geht.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

MichaelB
Beiträge: 7
Registriert: 7. Feb 2019 09:39
Answers: 0

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von MichaelB »

Gibt es denn die Möglichkeit dieses Steuerelement von rollershuttern (Welches man auf der Sitemap sehen kann) auch der Gruppe zuzuweisen?

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

Re: Alle KNX Rolladen sollen per Schalter gesteuert werden können

Beitrag von udo1toni »

Ja sicher, Du musst nur die Gruppe als Rollershutter definieren:

Code: Alles auswählen

Group:Rollershutter gShutter "Alle Läden"
und in der Sitemap

Code: Alles auswählen

Switch item=gShutter
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten