FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: firefoxx123 am 20 Dezember 2015, 11:10:37

Titel: HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 20 Dezember 2015, 11:10:37
Hallo, ich habe an 6 Rolladen die Jalousieaktoren HM-LC BI1PBU-FM istalliert. Ist es jetzt möglich, über einen der Aktoren alle Rolladen rauf und runter zu fahren? Über eine Hilfestellung beim Programmieren würde ich mich freuen.

firefoxx123
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 20 Dezember 2015, 11:44:08
Mit einem DOIF und dem Attribut do always geht es etwa so:

define di DOIF ([Aktor1:level]) ((set Aktor2,Aktor3,<usw.> [Aktor1:level]))
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 20 Dezember 2015, 12:34:51
Vielen Dank :)
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 20 Dezember 2015, 14:06:53
Hi,
hab versucht das DOIF umzusetzen. Jedoch klemmt es noch.

define test DOIF ([EG_Jalousie_Az:on]) ((set EG_Jalousie_GWc [EG_Jalousie_Az:on]))
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 20 Dezember 2015, 15:03:16
Konkret, was? http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 20 Dezember 2015, 15:23:15
Hallo
eine Idee:
define test DOIF ([EG_Jalousie_Az] eq on) (set EG_Jalousie_GWc on)
attr test do always


was auch geht ist set EG_Jalousie_.* on
für alle Jalousien im EG

Um Funkverkehr zu sparen könnte man die Auslösende noch ausfiltern

Gruß Otto
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 20 Dezember 2015, 20:38:46
sorry für meine etwas ungenaue Fehlerbeschreibung.  Mit Schalten des Aktors "EG_Jalousie_Az:on" wurde die Jalousie "EG_Jalousie_GWc" nicht geschaltet.

Danke für die weiteren Beispiele. Ich werde diese morgen früh mal testen.

firefoxx
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 20 Dezember 2015, 21:08:16
Zitat von: firefoxx123 am 20 Dezember 2015, 20:38:46
sorry für meine etwas ungenaue Fehlerbeschreibung.  Mit Schalten des Aktors "EG_Jalousie_Az:on" wurde die Jalousie "EG_Jalousie_GWc"
Ich denke dein Code geht einfach gar nicht
ZitatEG_Jalousie_Az:on
ist die trigger Schreibweise beim notify, beim DOIF ist es aus meiner Sicht anders.

Gruß Otto
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 20 Dezember 2015, 21:44:40
Ich hab es getestet.

Es funktioniert:

define di DOIF ([EG_Jalousie_Az:level]) ((set EG_Jalousie_GWc [EG_Jalousie_Az:level]))
attr di do always


Das Ereignis ist zwar zeitversetzt. D.h. erst wenn die Jalousie " [EG_Jalousie_Az:level]" ihre Endposition erreicht hat, wird die Jalousie
"EG_Jalousie_GWc" gestartet. Ist für mich aber schon mal ein Erfolg, wo ich für weitere Test's ansetzen kann.
Danke für die Unterstützung.

firefoxx
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 20 Dezember 2015, 23:34:57
Noch ein Hinweis: Die doppelte Klammer um den set-Befehl ist nur erforderlich, wenn der set-Befehl ein Komma enthält, wie in meinem Vorschlag, wo Geräte (Aktor2,Aktor3,...) aufgezählt werden, s. http://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil (http://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil)
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 21 Dezember 2015, 00:46:33
Sehr interessant, hätte ich nicht gedacht. War mir nicht klar, dass DOIF darauf reagiert.

Das mit dem Zeitversetzt ist logisch, da der level erst am Ende der Fahrzeit per Rückmeldung vom Aktor gesetzt wird. Quasi als Quittung.
Damit erreicht man ein nacheinander fahren der Rolläden, was ja auch sinnvoll sein kann.

Jetzt wird es mir aber klar: Man fragt damit ein Reading ab, bei Änderung des Readings wird DOIF getriggert. 8)
Deine erste Variante ging nicht, weil du kein Reading abgefragt hast. Sondern Du wolltest wissen ob die Jalousie "on" ist.
das wäre mit EG_Jalousie_Az:state gegangen. Der Werte von state sind anders -> on - "level" - off. state wird auch sofort gesetzt, allerdings mit dem Befehl z.B. set_68
Wenn Du dafür einen RegExp (set_ abschneiden) hin bekommst kannst du auch sofort weiterreichen, denke ich.

Gruß Otto
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 21 Dezember 2015, 09:47:43
ZitatWenn Du dafür einen RegExp (set_ abschneiden) hin bekommst kannst du auch sofort weiterreichen, denke ich.

(set EG_Jalousie_GWc [EG_Jalousie_Az:level:d])

s. http://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen (http://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen)
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 21 Dezember 2015, 10:50:12
Ist ne Idee, aber nicht das was ich meine.

Ich habe das probiert und noch nicht sehen können was er da tut, auf alle Fälle Blödsinn.

Außerdem level ist immer eine Zahl, da muss ich nicht filtern
Das habe ich probiert
define di DOIF ([EG_Jalousie_Az:state]) (set EG_Jalousie_GWc [EG_Jalousie_Az:state:d])
Nochmal zur Erklärung:
- Ich mache set EG_Jalousie_Az 20
- Nur state von EG_Jalousie_Az geht sofort auf set_20
- level und state von EG_Jalousie_Az gehen nach der Fahrt auf 20.

Gruß Otto
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 21 Dezember 2015, 11:15:03
ZitatIch habe das probiert und noch nicht sehen können was er da tut, auf alle Fälle Blödsinn.

[EG_Jalousie_Az:level:d] und [EG_Jalousie_Az:level] sind äquivalent, wenn level nur Zahlen enthält.

Ich habe keinen HM-LC BI1PBU-FM und im Wiki wird nur level als sinnvolles Reading erwähnt, für diesen Zweck.

Ich hatte
ZitatDer Werte von state sind anders -> on - "level" - off. state wird auch sofort gesetzt, allerdings mit dem Befehl z.B. set_68
fälschlicherweise auf level bezogen.

define di DOIF ([EG_Jalousie_Az:state]) (set EG_Jalousie_GWc [EG_Jalousie_Az:state:d])

Warum so kompliziert? Die Commandref sagt: "Stati werden mit [<devicename>] ... angegeben." Also einfach nur define di DOIF ([EG_Jalousie_Az]) (set EG_Jalousie_GWc [EG_Jalousie_Az:d])

Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 21 Dezember 2015, 11:32:08
ZitatWarum so kompliziert? Die Commandref sagt: "Stati werden mit [<devicename>] ... angegeben." Also einfach nur
Da hast Du Recht  8) Ich bin vielleicht eher der ausführliche Typ - kürzen und Code optimieren kann man ja später immer.

Aber das mit dem :d hilft eben nicht, da es den set_ Befehl nicht abschneidet. Zumal ja auch ein set_on --> on sinnvoll wäre.
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 21 Dezember 2015, 12:22:06
Ja, da habe ich mich selbst überlistet, bei [EG_Jalousie_Az:d] wird d als Reading interpretiert. Also in diesem Fall doch state [EG_Jalousie_Az:state:d].

Dann wird auch "set_" gefiltert, habs gerade probiert. Der on/off Einwand ist berechtigt, die Problematik bleibt bestehen. So könnte man es ohne Regex lösen.

define di DOIF ([EG_Jalousie_Az] eq "set_on" ) (set EG_Jalousie_GWc on)
DOIF ([EG_Jalousie_Az]  eq "set_off" ) (set EG_Jalousie_GWc off)
DOELSEIF ([EG_Jalousie_Az]) (set EG_Jalousie_GWc [EG_Jalousie_Az:state:d])

Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Otto123 am 21 Dezember 2015, 12:46:39
 
Zitatbei [EG_Jalousie_Az:d] wird d als Reading interpretiert.
8) ich wusste schon irgendwie warum ich es ausführlicher mache.

Aber nein set_ wird nicht wirklich gefilter. Glaube mir. Es passiert etwas komisches wenn man es so macht, ich habe die Aktoren und ich habe es probiert. Der gesteuerte Rolladen fährt kurz an, fährt zurück in die andere Richtung und dann wenn state auf level gesetzt wird  fährt er in die Position. Ich müsste mal mitloggen was da genau passiert, mir fehlt aber jetzt die Zeit.
2015.12.21 10:42:52 2: di_Test1: set RolloAZR : no value specified
2015.12.21 10:42:52 3: CUL_HM set RolloAZR 90
2015.12.21 10:42:52 3: CUL_HM set RolloAZL down
2015.12.21 10:42:52 3: CUL_HM set RolloAZR 99.5
2015.12.21 10:42:59 3: CUL_HM set RolloAZR 90
2015.12.21 10:43:04 3: CUL_HM set RolloAZR 90
2015.12.21 10:43:04 3: CUL_HM set RolloAZR 80
2015.12.21 10:43:04 3: CUL_HM set RolloAZL down
2015.12.21 10:43:04 3: CUL_HM RolloAZR repeat, level B4 instead of A0
2015.12.21 10:43:04 3: CUL_HM set RolloAZR 90
2015.12.21 10:43:10 3: CUL_HM set RolloAZR 80
2015.12.21 10:43:10 3: CUL_HM RolloAZR repeat, level B4 instead of A0


Man muss mit einem Regex einfach die ersten 4 Zeichen löschen oder den String am _ teilen. Dann könnte das was werden.
Es gibt ja noch mehr Fälle: on off down up

Gruß Otto
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 21 Dezember 2015, 13:08:31
Das Filtern funktioniert schon, nur wenn ein anderer Text als on/off unten ankommt, ohne Zahl, dann gibt es "no value specified".
Zusätzlich wird noch auf jede Statusänderung getriggert, also auf alle Zwischenwerte die state annimmt.
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: firefoxx123 am 21 Dezember 2015, 16:40:27
Hi, ich habe versucht das Ganze mit den Notify zu lösen. Damit funktioniert es problemlos auch mit dem Schalten mehrerer Rolladen.

define ntest notify EG_Jalousie_Ku_1 set EG_Jalousie_GWc,EG_Jalousie_AZ $EVENT


Mit dem DOIF gab es beim Schalten von mehreren Rolladen Probleme. Teilweise wurden diese ruckartig angesteuert.

define da DOIF ([EG_Jalousie_Ku_1:state]) (set EG_Jalousie_GWc,EG_Jalousie_Az [EG_Jalousie_Ku_1:state])

Interessant wäre natürlich, warum es mit Doif Probleme gibt.

Für mich ist es nach wie vor noch ein komplexes Thema

Nochmals vielen Dank für eure Unterstützung.  :)



Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: frank am 21 Dezember 2015, 17:06:41
ZitatInteressant wäre natürlich, warum es mit Doif Probleme gibt.
du brauchst dich aber nicht schämen, wenn du "nur" ein notify benutzt.  8)
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Ellert am 21 Dezember 2015, 18:32:41
Zitat(set EG_Jalousie_GWc,EG_Jalousie_Az [EG_Jalousie_Ku_1:state])

dürfte garnicht klappen, weil, wenn Befehl mit Komma, dann Befehl in doppelter Klammer, s. http://forum.fhem.de/index.php/topic,45937.msg377417.html#msg377417 (http://forum.fhem.de/index.php/topic,45937.msg377417.html#msg377417)
Titel: Antw:HM-LC BI1PBU-FM Rolladen steuern
Beitrag von: Puschel74 am 21 Dezember 2015, 18:53:55
Zitat von: frank am 21 Dezember 2015, 17:06:41
du brauchst dich aber nicht schämen, wenn du "nur" ein notify benutzt.  8)
Ich verwende NUR notify und schäme mich auch nicht dafür  :P
Ich will Damians Engagement aber natürlich in keinster Weise schmälern.