Seite 1 von 1

Rolladen auf Prozent fahren

Verfasst: 31. Mai 2021 02:04
von Epicblue
Hallo zusammen,

ich habe Schwierigkeiten mir eine Rule zu erstellen.
Ich habe auf der Südseite im EG 5 Rolläden. Diese fahre ich aktuell mit dieser Rule auf 60%.

Code: Alles auswählen

rule "Rolladen Südseite EG auf 60%"
        when
            Item Allgemein_RolladenSonnenschutzEGSued changed from OFF to ON
        then
            gEGSonnenschutz.sendCommand(60)
    	end
und mit dieser Rule wieder nach oben

Code: Alles auswählen

rule "Rolladen Südseite EG öffnen"
        when
            Item Allgemein_RolladenSonnenschutzEGSued changed from ON to OFF
        then
            gEGSonnenschutz.sendCommand(UP)
    	end
Manchmal sind aber schon einzelne Rolläden ganz geschlossen (>=60%). Diese sollen dann auch in der aktuelle Position bleiben wenn ich den Sonnenschutz aktiviere.
Die Gruppe gEGSonnenschutz besteht aus KNX_EG_Kueche_Rolladen_Fahren, KNX_EG_Wohnzimmer_Rolladenfesteselement_Fahren, KNX_EG_Wohnzimmer_RolladenTerassentuer_Fahren, KNX_EG_Esszimmer_Rolladenfesteselement_Fahren, KNX_EG_Esszimmer_RolladenTerassentuer_Fahren

Ich dachte an so etwas in diese Richtung, weiß aber nicht wie ich alles verschalten soll

Code: Alles auswählen

gEGSonnenschutz.sendCommand(if (KNX_EG_Kueche_Rolladen_Fahren.state <= 60) 60)

Re: Rolladen auf Prozent fahren

Verfasst: 31. Mai 2021 21:33
von udo1toni
Knapp daneben. So sollte es gehen:

Code: Alles auswählen

rule "Rolladen Südseite EG auf 60%"
when
	Item Allgemein_RolladenSonnenschutzEGSued changed
then
    if(Allgemein_RolladenSonnenschutzEGSued.state == ON)
        gEGSonnenschutz.sendCommand(60)
    else
        gEGSonnenschutz.members.filter[i|(i.state as Number) <= 60].forEach[j|j.sendCommand(0)]
end
Du kannst natürlich auch zwei Rules daraus machen, ist aber gar nicht notwendig.
Beim Hochfahren wird die Gruppe nach denjenigen Elementen gefiltert, deren Status kleiner oder gleich 60 ist. Diese werden dann auf die Position 0 gefahren (da kannst Du natürlich auch UP einsetzen).

Die Gruppe wird hier als Liste mit Einträgen genutzt, und wie man an dem Codebeispiel sehen kann, geht das extrem effizient.