Hallo und Guten Morgen
leider habe ich im Forum dieses Mal keine Antwort auf meine Frage gefunden
Es wäre schön, wenn mir hier jemand durch einen Denkanstoss weiterhelfen könnte
folgendes Vorhaben
Somfy Funkrolladen über Somfy Fernbedienung mit HM_LC_SW4 verbunden
auf, ab, stop funktioniert fehlerlos
die verschiedenen Rolladen "Höhen" schalte ich zum Beispiel über
webcmd toggle:stop:off:100:90:80:70:60:50:40:30:20:10:0:on:stop:statusRequest mit so einem notify
define zu50 notify Rolladen:50 set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
funktioniert
da die "Auf - Taste" mit Kanal bedient wird und die "Ab-Taste" mit Kanal 2 suche ich eine Möglichkeit, das vom Schalter erkannt wird das er 50 öffnen oder schliessen soll - mit if Rolladen on set SW 01 oder if Rolladen off set SW 02 wird in diesem Notify nicht nach meinen "Wünschen" angewand
folgende Variationen habe ich nun schon probiert
define zu50 notify Rolladen:50 if ("%" ne "on") set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
hier wird in der Logdatei folgendes angezeigt
zu30 return value: Unknown command if, try help.
und wenn ich
define zu50 notify Rolladen:50 if Rolladen on set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
Auszug aus Log
2013.11.30 11:05:18 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_01 on-for-timer 1
2013.11.30 11:05:18 3: zu30 return value: Unknown command Rolladen, try help.
2013.11.30 11:05:23 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
2013.11.30 11:05:23 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer
oder
define zu50 notify Rolladen:50 if Rolladen "on" set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
schalten die einzelnen Schalter, doch der Rolladen "bewegt" sich nicht
Auszug aus Log
2013.11.30 11:06:53 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_01 on-for-timer 1
2013.11.30 11:06:53 3: zu30 return value: Unknown command Rolladen, try help.
2013.11.30 11:06:59 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
2013.11.30 11:06:59 2: CUL_HM set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1
Was habe ich hier nicht beachtet?
ach so - die Notify Einträge habe ich unter DEF erstellt
Danke für die Hilfe im voraus
tagedieb
in
Hallo Tagedieb,
wenn Du eine if-Anweisung im Notify verwendest, dann ist das kein FHEM-Kommando, sondern Perl-Code, d.h. Du mußt das Kommando in {} setzen.
Laut commandref für notify:
If <command> is enclosed in {}, then it is a perl expression, if it is enclosed in "", then it is a shell command, else it is a "plain" fhem.pl command (chain).
Das Notify-Kommando könnte also etwa folgendermaßen aussehen:
define zu50 notify Rolladen:50 {if ("%" ne "on") fhem("set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1")}
Gruß
Helmut
Hallo Helmut
vielen Dank für die Hilfe - habe es so übernommen
erst kam noch eine Fehlermeldung
2013.11.30 16:50:32 3: zu60 return value: syntax error at (eval 37310) line 1, near ") fhem"
nach dem einfügen einer { vor fhem und } am Ende
funktioniert es wie gewünscht
Vielen,vielen Dank
lg tagedieb
Zitatdefine zu50 notify Rolladen:50 {if ("%" ne "on") fhem("set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1")}
Da fehlen auch paar Klammern. Versuch mal so:
define zu50 notify Rolladen:50 {if ("%" ne "on") {fhem("set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 on-for-timer 1 ;; sleep 8;; set CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03 on-for-timer 1")}}
Und nenn deine Devices um! "CUL_HM_HM_LC_SW4_PCB_224A86_Sw_03" ist ja Grusel! ;-)
Zum Thema Klammern guckst du hier:
http://www.fhemwiki.de/wiki/Klammerebnen
Hallo Zrrronggg
Danke für deine Info - ich hatte es vielleicht nicht richtig ausgedrückt - doch ich hatte es gefunden
"nach dem einfügen einer { vor fhem und } am Ende
funktioniert es wie gewünscht"
meine Device hatte ich mit alias anders betitelt, solange noch nicht alles richtig funktioniert traue ich mich an das "rename" nicht dran - um die Fehlerquelle so klein wie möglich zu halten
...gefällt mir selbst auch nicht :-(
nochmals Danke
lg tagedieb
Meiner Auffassung nach ist ein Device namens "CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02" das dann per Alias betitelt ist einen grössere potentiell Fehlerquelle als eine Umbenennung gleich nach dem Anlegen.
Direkt nach Autocreate alle Vorkommen von CUL_HM_HM_LC_SW4_PCB_224A86_Sw_02 in"Licht_Wohnzimmer_SW_02" oder so umzubennen ist doch kein Problem, oder?
Aber das ist nur meine Meinung.