Jalousieverschattung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Jalousieverschattung

Beitrag von SaschaQ »

Hallo zusammen,

bei mir werden um 21:45 (Winterzeit) und 22.45 (Sommerzeit) die Jalousien auf 100 % gefahren.

Vorher wird bei einem bestimmten Dämmerungswert die Jalousie auf 50% gefahren.

Ich möchte nun verhindern, falls ich die Jalousie vor eintreten des Dämmerungswerts auf 100 % gesetzt habe, dass diese wieder zurück auf 50 % fährt.

Jemand eine Idee wie ich das realisieren kann?

Meine Verschattungsrule sieht wie folgt aus: ( Hier ist auch noch eine Lüftungsstufe in Abhängigkeit zu den Magnetkontakten implementiert)

rule "Jalousie Abendverschattung inkl Lüftungsstufe"

when

Time cron "0 45 22 24-30 APR ?" or // vom 24. - 30. April
Time cron "0 45 22 * MAY-AUG ?" or // vom 1. Mai bis 31. August
Time cron "0 45 22 1-15 SEP ?" or // vom 1. bis 15. September
Time cron "0 45 21 16-30 SEP ?" or // vom 16. bis 30. September
Time cron "0 45 21 * JAN-MAR,OCT-DEC ?" or // vom 1. Oktober bis 31. März
Time cron "0 45 21 1-23 APR ?" // vom 1. bis 23. April

then

if(sp_jalousie_automatik_alexa.state == OFF)

{
eg_wohnzimmer_rechts_rol.sendCommand(100)
gEGOGRolladen.members.forEach[r|
val cKontakt = gEGOGMagnetkontakte.members.filter[c|c.name.split("_").get(1) == r.name.split("_").get(1)].head
r.sendCommand(
if(cKontakt.state == CLOSED) 100 else 80
)
]

}
end

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Jalousieverschattung

Beitrag von int5749 »

Hi,

Du könntest beim erreichen des Dämmerugswertes auf 100% prüfen? bzw. würde ich ehere auf 50% prüfen um zu vermeiden, dass ein Rollo von 90% aufgefahren würde.

Code: Alles auswählen

gEGOGRolladen.allMembers.filter(f|(f.state as DecimalType).intValue!<=50).forEach[ s|
	s.sendCommand(50)
]
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: Jalousieverschattung

Beitrag von SaschaQ »

Danke Dir

Verstehe ich nicht ganz.

Wie muss ich das bei mir einbauen und was meinst du mit auf50% bzw. 90 % prüfen?

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Jalousieverschattung

Beitrag von int5749 »

SaschaQ hat geschrieben: 5. Jan 2022 08:07 Danke Dir

Verstehe ich nicht ganz.

Wie muss ich das bei mir einbauen und was meinst du mit auf50% bzw. 90 % prüfen?
Diese Prüfung erfolgt in dem von mir bereitgestellten Sniplet ;-)

Code: Alles auswählen

f.state as DecimalType).intValue!<=50
Jeder Rollladen, der kleiner oder gleich 50 ist wird gefahren.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: Jalousieverschattung

Beitrag von SaschaQ »

Hi int5749,

ich habe die Rule wie folgt aufgebaut:

Code: Alles auswählen


rule "Jalousieverschattung 50% DG 100% bei Dämmerung an"
when
	
	Item ws_daemmerung changed to OPEN
 
then

if(sp_jalousie_automatik_alexa.state == OFF) {

gEGOGRolladen_all.allMembers.filter(f|(f.state as DecimalType).intValue!<=50).forEach[ s|
	s.sendCommand(50)
]

dg_schlafzimmerlinks_rol.sendCommand(100)
dg_schlafzimmerrechts_rol.sendCommand(100)
dg_badezimmer2_rol.sendCommand(100)
dg_arbeitszimmersascha_rol.sendCommand(100)

}

Ich bekomme folgende Fehlermeldungen:

Code: Alles auswählen


2022-01-17 14:48:10.606 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'Jalousie.rules' has errors, therefore ignoring it: [266,72]: missing ')' at '!'

[266,74]: no viable alternative at input '='

[266,75]: mismatched input '50' expecting '>'

[266,77]: mismatched input ')' expecting '}'

[275,1]: mismatched input '}' expecting 'end'
Hast du eine Idee?

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

Re: Jalousieverschattung

Beitrag von udo1toni »

Du hast da !<= stehen, das ist falsch. ! bedeutet not (nicht). <= bedeutet kleiner oder gleich. Entweder meinst Du tatsächlich "nicht kleiner oder gleich, das wäre dann "größer als", also >, oder Du meinst "kleiner oder gleich" (also ! weg machen) oder Du meinst "ungleich", dann wäre das < überzählig.
In der Folge sucht der Parser nach einer schließenden Klammer, welche aber erst später kommt, deshalb die seltsame Meldung.

By the way: es fehlt das Schlüsselwort "end" zum Schluss. Außerdem wäre es besser, nicht mit DecimalType zu arbeiten, wo Du doch eigentlich Number als Typ brauchst. Und wenn Du den Wert als Number auswertest, denke daran, ein Item kann auch einen ungültigen Wert enthalten, dann ist es nicht als Number oder DecimalType darstellbar, es kommt dann bei Deinem Code zu einer NullPointer Exception, das solltest Du also abfangen:

Code: Alles auswählen

        gEGOGRolladen_all.allMembers.filter[i|i.state instanceof Number].filter[f|(f.state as Number) < 50].forEach[ s |
.filter() geht, aber eigentlich ist es .filter[]. Shutter, die schon auf 50 stehen, benötigen keinen Befehl, auf 50 zu fahren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

SaschaQ
Beiträge: 196
Registriert: 2. Mär 2020 13:50

Re: Jalousieverschattung

Beitrag von SaschaQ »

Hallo udo1toni,

Ziel soll es aber sein, dass wenn die Jalousie von mir Manuell auf 100 gefahren wurden und die Dämmerung dann auf an springt, die Jalousie nicht wieder auf 50 gesetzt werden.

Bei mir nämlich zuerst bei Eintritt der Dämmerung auf 50 gesetzt und wenn ich dann vorher aber schon auf 100 gesetzt habe, dann fährt die Dämmerung an die Jalousie wieder auf 50 und das möchte ich vermeiden.

Ich meine dass deine Code Zeile das nicht so macht oder?

Kann ich die ansonsten so in meine Rule einbauen?

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

Re: Jalousieverschattung

Beitrag von udo1toni »

Doch, selbstverständlich. Wenn Du auf einen Wert über 50 (oder gleich 50) fährst, wird der Laden nicht angefasst. Wie gesagt, !<= ist Quatsch und als Statement nicht existent. Deshalb wird die Rule auch nicht ausgeführt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Jalousieverschattung

Beitrag von int5749 »

udo1toni hat geschrieben: 17. Jan 2022 18:48 Wie gesagt, !<= ist Quatsch und als Statement nicht existent. Deshalb wird die Rule auch nicht ausgeführt.
Ich sollte mich darauf beschränken Fragen zu stellen, anstatt zu beantworten. Zum Glück passt immer jemand auf :?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Jalousieverschattung

Beitrag von udo1toni »

:) das könnte ich genauso zurück geben :) Wobei ich zugegebenermaßen nur selten Fragen habe. Aber Fehler mache ich auch...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten