Syntax bei mehrfachen Schaltvorgängen

Begonnen von stefan7, 25 April 2018, 07:03:47

Vorheriges Thema - Nächstes Thema

stefan7

Guten Morgen,
ich bin gerade dabei, meine ersten at-Events zu bauen und habe Probleme, mehrere Schaltvorgänge in einem Rutsch durchzuführen.
Wenn ich folgendes als Define über Webfrontend eingebe, kommt beim Speichern zumindest keine Fehlermeldung:
define a2 at  *{sunrise("HORIZON=-2.0",0,"06:00:00","07:40:00")} { fhem("set KNX_0003122 off ; set KNX_0002078 off ; set KNX_0500015 off ; set KNX_0500008 off") if(!$we) }
In der Config wurde dann automatisch eine Verdopplung der Semikolons daraus:
define a2 at *{sunrise("HORIZON=-2.0",0,"06:00:00","07:40:00")} { fhem("set  KNX_0003122 off ;; set KNX_0002078 off ;; set KNX_0500015 off ;; set KNX_0500008 off") if(!$we) }

Problem: Zum definierten Zeitpunkt wird nur der erste Schaltvorgang ausgelöst, also "set KNX_0003122 off". Die anderen drei Scaltvorgänge werden nicht ausgeführt.

Ich habe mit den Semikolons und der Syntax schon einiges herumprobiert, bin aber noch nicht auf  den Trichter gekommen. Ein konkretes Beispiel in der Commandref habe ich auch nicht gefunden.

Wie werden alle vie Schaltvorgänge gleichzeitig ausgeführt?

Danke

Wzut

{ fhem("set KNX_0003122, KNX_0002078, KNX_0500015, KNX_0500008 off") if(!$we) }
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

stefan7


Otto123

Zitat von: stefan7 am 25 April 2018, 07:03:47
Ich habe mit den Semikolons und der Syntax schon einiges herumprobiert, bin aber noch nicht auf  den Trichter gekommen. Ein konkretes Beispiel in der Commandref habe ich auch nicht gefunden.
Hi,

zur Vollständigkeit noch die Stelle zum lesen  ;)
ZitatMehrere FHEM-Kommandos hintereinander werden mittels Semikolon (;) getrennt. Weil Semikola auch in PERL-Code oder SHELL-Programmen benutzt werden, müssen sie mittels doppelten Semikola geschützt werden. Lesen Sie sich bitte die Bermerkungen des notify-Abschnittes zu Kommandoparametern und Regeln durch.
Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.

define lampoff at 07:00 set Lamp1 off; set Lamp2 off
define lampoff at 07:00 set Lamp1 off;; set Lamp2 off

Für jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 für 10 Minuten einzuschalten schreibt man:
define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
Keine Angst, das Vorherige kann in FHEM auch deutlich einfacher formuliert werden als:
define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600

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

stefan7

Die Stelle kannte ich schon. Wieso allerdings im einen Fall Semikolons und im anderen Fall Kommata zu verwenden sind, steht da nicht.

stefan7

#5
Das passt doch noch nicht ganz.
Wenn ich folgendes direkt auf der Commandline eingebe
set KNX_0003122, KNX_0002078, KNX_0500015, KNX_0500008 off
erhalte ich folgende Fehlermeldung
Unknown argument knx_0002078,, choose one of on-for-timer string rgb raw off value on on-until on-till-overnight on-till off-till-overnight off-for-timer blink intervals off-till toggle

hier noch die definition (die anderen sind imho gleich definiert)
defmod KNX_0002078 KNX 0/2/78:dpt1.008
attr KNX_0002078 IODev knxd
attr KNX_0002078 alias Alle Rolladen EG auf/ab;; Rolladen_EG
attr KNX_0002078 room Rolladen

setstate KNX_0002078 up
setstate KNX_0002078 2018-04-25 20:38:26 getG1 down
setstate KNX_0002078 2018-04-25 20:38:26 last-sender 1/1/221
setstate KNX_0002078 2018-04-26 06:06:41 setG1 up
setstate KNX_0002078 2018-04-26 06:06:41 state up

Wzut

sorry mein Fehler, natürlich ohne Leerzeichen :(
set KNX_0003122,KNX_0002078,KNX_0500015,KNX_0500008 off
leg mal drei Dummys an : dummy1 dummy2 & dummy3
set dummy1,dummy2,dummy3 on setzt alle drei auf on , aber set dummy1, dummy2, dummy3 on hat ein anderes Ergebniss.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Otto123

Zitat von: stefan7 am 26 April 2018, 06:47:17
Die Stelle kannte ich schon. Wieso allerdings im einen Fall Semikolons und im anderen Fall Kommata zu verwenden sind, steht da nicht.
Weil das eine Äpfel und das andere Birnen sind, da begründet Dir doch auch keiner die Form  :o ;D
Befehle werden mit Semikolon getrennt.
Befehl1;Befehl2;Befehl3
Geräte werden mit Komma getrennt
set Device1,Device2,Device3 on

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

stefan7