[Gelöst] Rollade beim öffen ein wenig öffnen.

Begonnen von Syon, 23 Juni 2017, 14:56:24

Vorheriges Thema - Nächstes Thema

Syon

Hallo, ich versuche gerade meine Rollade etwas intelligenter zu machen. Leider gelingt es mir nicht.

Die Rollade soll auf 80% fahren wenn sie vorher geschlossen war und das Fenster geöffnet wird.
Danach soll sie wieder auf 100% fahren. Also wenn das Fenster wieder geschlossen wird.

Ich habe bisher zwei Möglichkeiten ohne Erfolg getestet.... Hat da jemand einen Tip für mich? Oder besser ein Code-Beispiel?

Liegt das vielleicht an den Werten? Für die Zeitschaltuhr musste ich die Werte so übergeben:
{fhem("set $NAME value $EVENT")}


Hier meine Versuche:

define Wohnen_vorne_rollo_lueftung notify {\
if (Wohnen_vorne_Rollo eq "100" && Wohnen_vorne_Fenster_s eq "on") {\
  fhem set Wohnen_vorne_Rollo "80"\
} else\
\
}\

Und:
define Wohnen_vorne_rollo_lueftung notify  Wohnen_vorne_Fenster_s:.*off.* set Wohnen_vorne_Rollo 80

Die Rollos und der Statusgeber sind folgendermaßen funktionstüchtig eingebunden.:
# Wohnen vorne
define Wohnen_vorne_Rollo KNX 3/3/3:dpt5.001:abs-position 3/2/3:dpt1.008:aufab 3/4/3:dpt5.001:status-position
attr Wohnen_vorne_Rollo IODev KNX
attr Wohnen_vorne_Rollo icon fts_shutter
attr Wohnen_vorne_Rollo room Rollos,Wohnen vorne
attr Wohnen_vorne_Rollo userReadings statePosition


define Wohnen_vorne_Fenster KNX 6/2/1:dpt1.001:fenster
attr Wohnen_vorne_Fenster IODev KNX
attr Wohnen_vorne_Fenster room Wohnen vorne
attr Wohnen_vorne_Fenster sortby 101
attr Wohnen_vorne_Fenster stateRegex /getg:/fenster:/
attr Wohnen_vorne_Fenster webCmd :

define Wohnen_vorne_Fenster_s readingsProxy Wohnen_vorne_Fenster:fenster-get
attr Wohnen_vorne_Fenster_s devStateIcon off:10px-kreis-gruen on:10px-kreis-rot
attr Wohnen_vorne_Fenster_s group Fenster
attr Wohnen_vorne_Fenster_s icon fts_window_1w_open
attr Wohnen_vorne_Fenster_s room Wohnen vorne
attr Wohnen_vorne_Fenster_s sortby 103

Hollo

Bei Deinem 1. Versuch hast Du keinen Trigger für das Notify; also startet da nix.

Beim 2. Versuch sieht das ansatzweise schon ganz gut aus, aber
- es fehlt die Bedingung, dass der Rolladen vorher zu sein muss
- welchen Status gibt denn Dein Fenster raus; oben steht on, unten off

KNX hab ich nicht, da kenne ich mich nicht aus.
Bau das schrittweise zusammen und teste die Einzelschritte.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Otto123

Hi,

zumindest eine Deiner Anforderungen(oder so ähnlich) habe ich so gelöst:defmod nty_RolloLueftungSZ notify FensterSZ:open set RolloSZ:FILTER=STATE!=auf 95
Wenn das Rollo nicht "auf" ist und das Fenster geht auf, dann fahre es auf 95 (fast ganz auf)
Vielleicht hilft das.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Syon

Vielen Dank, das werde ich mal testen.

Syon

Was funktioniert:
define Wohnen_vorne_rollo_lueftung notify Wohnen_vorne_Fenster_s:on.* set Wohnen_vorne_Rollo value 80

Aber ich bekomme die zweite Variable da nicht unter.
Versucht habe ich :
define Wohnen_vorne_rollo_lueftung notify { if ((Wohnen_vorne_Fenster_s:on.*) && (Wohnen_vorne_Rollo:status-position-get: = 100)) { fhem("set Wohnen_vorne_Rollo value 80") } }

und
define Wohnen_vorne_rollo_lueftung notify { if ((Wohnen_vorne_Fenster_s:on.*) && (Wohnen_vorne_Rollo:status-position-get: >= 100)) { fhem("set Wohnen_vorne_Rollo value 80") } }


Ich habe auch mal versucht das mitteld DOIF zu regeln... Doch da scheitere ich schon bei der ersten Regel:
define Wohnen_vorne_rollo_lueftung DOIF ([Wohnen_vorne_Fenster_s:on]) (set Wohnen_vorne_Rollo value 80)


PS: Fenster = Satus off
Mit dem defmod habe ich auch nichts gescheites fabriziert.

Otto123

#5
Sorry aber in Deinen defines muss es doch vor Fehlermeldungen hageln?
Außer dem ersten stimmt doch da fast nix.
Beim zweiten und dritten fehlt der trigger, d steht gleich der Ausführungsteil
Vergleich in Perl ist == und nicht =

Also ich versuche einfach mal mein Konstrukt define Wohnen_vorne_rollo_lueftung notify Wohnen_vorne_Fenster_s:on.* set Wohnen_vorne_Rollo:FILTER=STATE=100 80

Der Teil STATE=100 ist geraten, weil ich nicht weiß was Dein Rollo liefert wen es auf 100 steht.


Oder dies mal etwas bereinigt, aber natürlich völlig ungetestet!define Wohnen_vorne_rollo_lueftung notify Wohnen_vorne_Fenster_s:on.* { if (ReadingsVal("Wohnen_vorne_Rollo","status-position-get",0) == 100) { fhem("set Wohnen_vorne_Rollo value 80") } }
Falls status-position-get ein Reading ist!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Syon

HA....
Das hat funktioniert...  ;D

define Wohnen_vorne_rollo_lueftung notify Wohnen_vorne_Fenster_s:on.* { if (ReadingsVal("Wohnen_vorne_Rollo","status-position-get",0) == 100) { fhem("set Wohnen_vorne_Rollo value 80") } }

Daran hatte ich mir die Zähne ausgebissen....
{ if (ReadingsVal("Wohnen_vorne_Rollo","status-position-get",0) == 100)

Vielen Dank dafür...

Wenn ich jetzt das Rollo wieder in die Ausgangsposition (100%) bekommen will, nachdem das Fenster wieder geschlossen wird, muss ich mir doch irgendwie merken welchen Status das Rollo vor dem set hatte. Oder? Dann muss ich das in eine Variable packen, die bei Wohnen_vorne_Fenster_s:off.* diesen wieder herstellt. Das wird ja noch lustig....

Otto123

Zitat von: Syon am 24 Juni 2017, 17:01:15

Wenn ich jetzt das Rollo wieder in die Ausgangsposition (100%) bekommen will, nachdem das Fenster wieder geschlossen wird, muss ich mir doch irgendwie merken welchen Status das Rollo vor dem set hatte. Oder? Dann muss ich das in eine Variable packen, die bei Wohnen_vorne_Fenster_s:off.* diesen wieder herstellt. Das wird ja noch lustig....
100% ist zu? Warum sollst Du Dir das merken? Wenn Fenster wieder zu dann Rollo wieder zu?

Ich mache das einfach über den Status, in meinem Rollo stehen die Prozente drin wenn es nicht ganz oben ist. Wenn ich aus anstatt ganz auf auf 95 gefahren habe, weiß ich anschließend noch warum ich das gemacht hatte :)
Deswegen ja das Konstrukt mit dem Filter.

Ansonsten kannst Du auch ein eigenes reading Wohnen_vorne_Rollo setzen und genauso abfragen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Syon

Ok, also einfach.
define Wohnen_vorne_rollo_lueftung_zu notify Wohnen_vorne_Fenster_s:off.* { if (ReadingsVal("Wohnen_vorne_Rollo","status-position-get",0) == 80) { fhem("set Wohnen_vorne_Rollo value 100") } }

Sollte dann ja gehen.

Vielen, lieben Dank für die schnelle Hilfe...  ;D

Syon

Habe es gerade getestet... Es läuft perfekt ;)

Danke dafür nochmal.