FHEM Forum

FHEM => fhem-users => Thema gestartet von: Damian am 14 November 2012, 10:44:18

Titel: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 10:44:18
                                                       

Hallo zusammen,

ich wollte über ein Notify ein simples Ausführen von zwei FHEM-Befehlen
hintereinander schalten. Die Syntax:

*set Lampe on; set Rolladen off*

führt zu einer Fehlermeldung.

erst

*{FHEM("set Lampe on")};{FHEM("set Rolladen off")}*

führt zum Erfolg - recht umständlich in solch einem Fall, wie ich finde.

Gibt es evtl. noch eine Alternative für ein Einfaches ausführen mehrere
FHEM-Befehle, die ich evtl. übersehen habe?

Das Auslagern in ein Script halte ich in solchen einfachen Fällen nicht für
sinnvoll.

Oder anders gefragt: wäre eine Syntaxerweiterung, wie im obigen Beispiel
oder ähnlich nicht sinnvoll?

Gruß

Damian


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Puschel74 am 14 November 2012, 11:24:19
                                               

Hallo,

siehe Heimautomatisierung mit fhem.pdf
Es gibt mehrere Möglichkeiten.

a) structure
b) set lamp1 on*;;*set lamp2 on

Das doppelte Semikolon müsste in diesem Fall zum gewünschten Ergebnis
führen.

Müsste auch in der commandref so beschrieben sein - ich finde auf die
schnelle nur die Stelle nicht.

Grüße

Am Mittwoch, 14. November 2012 10:44:18 UTC+1 schrieb Damian:
>
> Hallo zusammen,
>
> ich wollte über ein Notify ein simples Ausführen von zwei FHEM-Befehlen
> hintereinander schalten. Die Syntax:
>
> *set Lampe on; set Rolladen off*
>
> führt zu einer Fehlermeldung.
>
> erst
>
> *{FHEM("set Lampe on")};{FHEM("set Rolladen off")}*
>
> führt zum Erfolg - recht umständlich in solch einem Fall, wie ich finde.
>
> Gibt es evtl. noch eine Alternative für ein Einfaches ausführen mehrere
> FHEM-Befehle, die ich evtl. übersehen habe?
>
> Das Auslagern in ein Script halte ich in solchen einfachen Fällen nicht
> für sinnvoll.
>
> Oder anders gefragt: wäre eine Syntaxerweiterung, wie im obigen Beispiel
> oder ähnlich nicht sinnvoll?
>
> Gruß
>
> Damian
>
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Guest am 14 November 2012, 11:33:55
Originally posted by: <email address deleted>

Hallo Damian,
 
guckst Du: http://fhem.de/Heimautomatisierung-mit-fhem.pdf
 
dort steht auf Seite 24 als Beispiel: *define Schalter1NotifyAn notify
Schalter1:on set wz_Media on;;set wz_Licht off* bedeutet für Dich: *set
Lampe on;; set Rolladen off*
 
Sonder zeichen wie *@*, *;*, *%* müssen durch *@@*, *;;*, *%%* maskiert
werden.
Herzliche Grüße
 
Jörg

Am Mittwoch, 14. November 2012 10:44:18 UTC+1 schrieb Damian:

> Hallo zusammen,
>
> ich wollte über ein Notify ein simples Ausführen von zwei FHEM-Befehlen
> hintereinander schalten. Die Syntax:
>
> *set Lampe on; set Rolladen off*
>
> führt zu einer Fehlermeldung.
>
> erst
>
> *{FHEM("set Lampe on")};{FHEM("set Rolladen off")}*
>
> führt zum Erfolg - recht umständlich in solch einem Fall, wie ich finde.
>
> Gibt es evtl. noch eine Alternative für ein Einfaches ausführen mehrere
> FHEM-Befehle, die ich evtl. übersehen habe?
>
> Das Auslagern in ein Script halte ich in solchen einfachen Fällen nicht
> für sinnvoll.
>
> Oder anders gefragt: wäre eine Syntaxerweiterung, wie im obigen Beispiel
> oder ähnlich nicht sinnvoll?
>
> Gruß
>
> Damian
>
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: rudolfkoenig am 14 November 2012, 11:45:20
                                                   

> Müsste auch in der commandref so beschrieben sein - ich finde auf die
> schnelle nur die Stelle nicht.

http://fhem.de/commandref.html#command

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 12:08:05
                                                       

Danke für euch für die Tipps, jedoch

führt bei mir die Syntax

*set Schreibtisch off;;set R_Dachboden on*

zu folgender Fehlermeldung:

*no set value specified*

die obigen Befehle einzeln aufgeführt funktionieren dagegen.

Schreibtisch ist eine FS20-Steckdose, R_Dachboden ist bei mir ein
HM-Rollladen.

Ist hier was kaputt?

Mein FHEM läuft unter Windows mit ActivePerl.

Gruß

Damian





--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Puschel74 am 14 November 2012, 18:09:15
                                               

Hallo,

du kannst die Geräte aber einzeln mit set schalten?
Also mit
set Schreibtisch on
und
set R_Dachboden on
die Steckdose einschalten und den Rollladen hochfahren (oder runter)?

Grüße

Am Mittwoch, 14. November 2012 12:08:05 UTC+1 schrieb Damian:
>
> Danke für euch für die Tipps, jedoch
>
> führt bei mir die Syntax
>
> *set Schreibtisch off;;set R_Dachboden on*
>
> zu folgender Fehlermeldung:
>
> *no set value specified*
>
> die obigen Befehle einzeln aufgeführt funktionieren dagegen.
>
> Schreibtisch ist eine FS20-Steckdose, R_Dachboden ist bei mir ein
> HM-Rollladen.
>
> Ist hier was kaputt?
>
> Mein FHEM läuft unter Windows mit ActivePerl.
>
> Gruß
>
> Damian
>
>
>
>
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 19:50:09
                                                       

Dass es kompliziert geht, habe ich bereits im ersten Post geschrieben, lt.
Verweis  von Rudi auf die Dokumentation:


   Multiple fhem commands are separated by semicolon (;). In order to use
   semicolon in perl code or shell programs, they have to be escaped by the
   double semicolon (;;). See the *Notes* section of the notify chapter
   on command parameters and escape rules.
   E.g. the following first command switches Lamp1 off at 07:00 and Lamp2
   immediately (at the point of definition), the second one switches both
   lamps off at 07:00.
   define lampoff at 07:00 set Lamp1 off; set Lamp2 off
      *define lampoff at 07:00 set Lamp1 off;; set Lamp2 off*
     
soll es aber auch einfacher gehen.

Gruß

Damian


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: rudolfkoenig am 14 November 2012, 19:58:55
                                                   

> soll es aber auch einfacher gehen.

Kannst Du mal das Ganze mit "attr global verbose 5" durchfuehren, und den
relevanten Abschnitt aus dem Logfile zeigen?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Puschel74 am 14 November 2012, 20:02:43
                                               

Hallo,

also klappt es mit meinem letzten Beispiel nicht?
Ich weiß zwar nicht was an

fhem ("set lamp1 on;;set lamp2 on");;\
kompliziert isein soll aber ok.

@Rudi
Geht das auch "einfacher" aus einem notify heraus?
Ich dachte mir immer ein notify spielt in Perl und fhem muss daher explizit
genannt werden.
Hmm, hab ich mich wohl getäuscht.

Evtl. wäre ein - hier ist mein notify, das klappt so nicht was mach ich
falsch, besser als ein
das geht nicht ich hab das in meinem notify drin.
Poste doch mal dein notify damit wir sehen was und wie abgefragt wird.

Grüße

Am Mittwoch, 14. November 2012 19:50:09 UTC+1 schrieb Damian:
>
> Dass es kompliziert geht, habe ich bereits im ersten Post geschrieben, lt.
> Verweis  von Rudi auf die Dokumentation:
>
>
>    Multiple fhem commands are separated by semicolon (;). In order to use
>    semicolon in perl code or shell programs, they have to be escaped by the
>    double semicolon (;;). See the *Notes* section of the notify chapter
>    on command parameters and escape rules.
>    E.g. the following first command switches Lamp1 off at 07:00 and Lamp2
>    immediately (at the point of definition), the second one switches both
>    lamps off at 07:00.
>    define lampoff at 07:00 set Lamp1 off; set Lamp2 off
>       *define lampoff at 07:00 set Lamp1 off;; set Lamp2 off*
>      
> soll es aber auch einfacher gehen.
>
> Gruß
>
> Damian
>
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 20:06:20
                                                       

Am Mittwoch, 14. November 2012 19:59:00 UTC+1 schrieb Rudolf Koenig:
>
> > soll es aber auch einfacher gehen.
>
> Kannst Du mal das Ganze mit "attr global verbose 5" durchfuehren, und den
> relevanten Abschnitt aus dem Logfile zeigen?
>

2012.11.14 20:02:36 5: Cmd: >set Schreibtisch off;; set R_Dachboden on<
2012.11.14 20:02:36 4:
/fhem?room=Info&cmd=set+Schreibtisch+off%3B%3B+set+R_Dachboden+on / RL: 911
/ text/html; charset=UTF-8 / Content-Encoding: gzip

führt zu der oben genannten Fehlermeldung.
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: rudolfkoenig am 14 November 2012, 20:44:07
                                                   

> 2012.11.14 20:02:36 5: Cmd: >set Schreibtisch off;; set R_Dachboden on<

Das ist Quatsch, weil ;; sagt, bitte nicht trennen, sondern als _ein_ Befehl
betrachten. Das FS20 Modul kriegt fuer Schreibtisch das Befehl
"off; set R_Dachboden on", und liefert eine ziemlich beknackte Fehlermeldung.


> 2012.11.14 20:02:36 4:
> /fhem?room=Info&cmd=set+Schreibtisch+off%3B%3B+set+R_Dachboden+on / RL: 911
> / text/html; charset=UTF-8 / Content-Encoding: gzip

Das ist ein Bug: die FHEMWEB Kommandozeile hat immer nur ein Befehl
ausgefuehrt, nie Ketten, im Gegensatz zu der Telnet Schnittstelle.
Ich hab das geaendert, hoffentlich ohne Nebenwirkungen.  Ab morgen per
updatefhem.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 21:05:03
                                                       

> 2012.11.14 20:02:36 4:

> > /fhem?room=Info&cmd=set+Schreibtisch+off%3B%3B+set+R_Dachboden+on / RL:
> 911
> > / text/html; charset=UTF-8 / Content-Encoding: gzip
>
> Das ist ein Bug: die FHEMWEB Kommandozeile hat immer nur ein Befehl
> ausgefuehrt, nie Ketten, im Gegensatz zu der Telnet Schnittstelle.
> Ich hab das geaendert, hoffentlich ohne Nebenwirkungen.  Ab morgen per
> updatefhem.
>
 
wird damit dann auch ein notify "richtig" funktionieren:

hier nochmal ein Beispiel

CFGFN
DEF
Drucker:on set Schreibtisch off;; set R_Dachboden on
NAME
N_test
NR
158
NTFY_ORDER
50-N_test
REGEXP
Drucker:on
STATE
active
TYPE
notify

im Log steht beim Auslösen von N_test:

2012.11.14 20:22:36 5: Triggering N_test
2012.11.14 20:22:36 5: Cmd: >set Schreibtisch off; set R_Dachboden on<
2012.11.14 20:22:36 3: N_test return value: no set value specified

Gruß

Damian
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: rudolfkoenig am 14 November 2012, 21:15:26
                                                   

> wird damit dann auch ein notify "richtig" funktionieren:

Hat damit nichts zu tun, das war auch vorher nur ein Befehl.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Puschel74 am 14 November 2012, 21:16:50
                                               

Hallo,

versuch es doch indem du ein
trigger Drucker on
absetzt.
Was passiert dann?

Grüße
 

Am Mittwoch, 14. November 2012 21:05:03 UTC+1 schrieb Damian:
>
>
> > 2012.11.14 20:02:36 4:
>
>> > /fhem?room=Info&cmd=set+Schreibtisch+off%3B%3B+set+R_Dachboden+on / RL:
>> 911
>> > / text/html; charset=UTF-8 / Content-Encoding: gzip
>>
>> Das ist ein Bug: die FHEMWEB Kommandozeile hat immer nur ein Befehl
>> ausgefuehrt, nie Ketten, im Gegensatz zu der Telnet Schnittstelle.
>> Ich hab das geaendert, hoffentlich ohne Nebenwirkungen.  Ab morgen per
>> updatefhem.
>>
>  
> wird damit dann auch ein notify "richtig" funktionieren:
>
> hier nochmal ein Beispiel
>
> CFGFN
> DEF
> Drucker:on set Schreibtisch off;; set R_Dachboden on
> NAME
> N_test
> NR
> 158
> NTFY_ORDER
> 50-N_test
> REGEXP
> Drucker:on
> STATE
> active
> TYPE
> notify
>
> im Log steht beim Auslösen von N_test:
>
> 2012.11.14 20:22:36 5: Triggering N_test
> 2012.11.14 20:22:36 5: Cmd: >set Schreibtisch off; set R_Dachboden on<
> 2012.11.14 20:22:36 3: N_test return value: no set value specified
>
> Gruß
>
> Damian
>  
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 21:37:11
                                                       

Hat damit nichts zu tun, das war auch vorher nur ein Befehl. ?
>

Irgendwie reden wir an einander vorbei. Ich versuche es noch einmal:

Laut Doku soll funktionieren, Zitat:

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

Nun mache das Ganze nicht mit Notify, sondern mit einem at-Kommando,
genauso, wie in der Doku:
*
*
also:
*
*
*define A_test at 21:24 set Schreibtisch on;; set R_Dachboden on
*
*
*
im Log steht dann:
*
*
2012.11.14 21:24:00 5: exec at command A_test
2012.11.14 21:24:00 5: Cmd: >set Schreibtisch on; set R_Dachboden on<
2012.11.14 21:24:00 3: no set value specified

auch hier gleiches Verhalten wie bei Notify.

Daher meine Frage: ist die Doku falsch, mache ich etwas falsch oder ist es
ein Bug?

Gruß

Damian
*
*
*
*
*
*
*
*


 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 15 November 2012, 08:06:45
                                                       

Scheinbar ist die Doku falsch.

Wenn Du hier bestätigst, dass es funzt, wenn Du nur ein Semikolon setzt,
> korrigiere ich die Doku gern.
>
 
Hiermit kann ich bestätigen:

Ein Notify oder At-Befehl funktioniert mit einem Semikolon wie erwartet:)

Daher sind die fett markierten Stellen falsch. Denn es wird mit einem
Semikolon auch nichts unmittelbar geschaltet, sondern geht in die
Definition des at-Kommandos ein.

   *E.g. the following first command switches Lamp1 off at 07:00 and* *Lamp2
   immediately (at the point of definition*),* the second one* switches
   both lamps off at 07:00.
   define lampoff at 07:00 set Lamp1 off; set Lamp2 off
      *define lampoff at 07:00 set Lamp1 off;; set Lamp2 off*
   
Mit anderen Worten ist das Einzige, was hier Sinn macht:

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

hiermit werden um 07:00 Uhr beide Lampen geschaltet.

Gruß

Damian

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: rudolfkoenig am 15 November 2012, 10:48:44
                                                   

> Mit anderen Worten ist das Einzige, was hier Sinn macht:
> define lampoff at 07:00 set Lamp1 off; set Lamp2 off

Das stimmte so bis gestern, wenn man diesen Befehl in der FHEMWEB Kommandozeile
eingegeben hat. Im telnet und ab heute nach einem Update in FHEMWEB muss das
dokumentierte ;; verwendet werden.  Im FHEMWEB editiere ich sowas im
Detail-Ansicht, deswegen ist das mir noch nie aufgefallen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 15 November 2012, 13:38:59
                                                       

> Das stimmte so bis gestern, wenn man diesen Befehl in der FHEMWEB
> Kommandozeile
> eingegeben hat. Im telnet und ab heute nach einem Update in FHEMWEB muss
> das
> dokumentierte ;; verwendet werden.  Im FHEMWEB editiere ich sowas im
> Detail-Ansicht, deswegen ist das mir noch nie aufgefallen.
>

Dann bin ich ja beruhigt, dass ich doch nicht auf den Kopf gefallen bin und
meine Frage von oben:

'wird damit dann auch ein notify "richtig" funktionieren?'

durchaus berechtigt war und jetzt mit "ja" zu beantworten ist.

Gut, dass wir darüber gesprochen haben und die Welt (hier zumindest die
Dokumentation und die Software) wieder in Ordnung ist;)

Gruß

Damian

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Damian am 14 November 2012, 18:42:58
                                                       

du kannst die Geräte aber einzeln mit set schalten?

> Also mit
> set Schreibtisch on
> und
> set R_Dachboden on
> die Steckdose einschalten und den Rollladen hochfahren (oder runter)?


ja, wie bereits oben geschrieben kann ich:

*set Schreibtisch off *

schalten

sowie

*set R_Dachboden on*

Allerdings funktioniert das Hintereinanderschalten der Kommandos nicht.

Alle folgenden Beispiele funktionieren nicht:

*set Schreibtisch off;;set R_Dachboden on
*
*
*
*set Schreibtisch off ;;set R_Dachboden on
*
*
*
*set Schreibtisch off;; set R_Dachboden on
*
*
*
*set Schreibtisch off ;; set R_Dachboden on
*

Das Gleiche mit einem Semikolon funktioniert genauso wenig.

Bei allen Versuchen kommt die oben genannte Meldung:

*no set value specified*
*
*
*fhem.pl* ist vom 31.10.2012

Hat sich da etwa ein Fehler eingeschlichen?

Kann das Jemand verifizieren?

Gruß

Damian

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Syntax: Mehrere FHEM-Befehle hintereinander
Beitrag von: Puschel74 am 14 November 2012, 19:01:20
                                               

Hallo,

ich hab bei mir für den Bewegungsmelder ein

set EG_Eingang_Licht_innen on-for-timer 30; sleep 1; set EG_Vorraum_Licht on-for-timer 48

im Einsatz (ACHTUNG!!! Aus der DEF für das notify entnommen daher nur einfache Semikolon.

Mit Notepad++ sieht das ganze so aus

define zuhause_on notify EG_Eingang_Bewegungsmelder:on.* { \
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
if(sunrise_abs(3600) gt $now || $now gt sunset_abs(-3600)) {\
fhem ("set EG_Eingang_Licht_innen on-for-timer 30;; sleep 1;; set EG_Vorraum_Licht on-for-timer 48");;\
 }\
}
attr zuhause_on room 20_Erdgeschoss

Ich hab auch grad versucht in fhem
set EG_Eingang_Licht_innen on-for-timer 30;; sleep 1;; set EG_Vorraum_Licht on-for-timer 48
abzusetzen und bekomme auch ein
no set value spezified
Wenn du das ganze natürlich über ein notify machen willst musst du auch

fhem ("set EG_Eingang_Licht_innen on-for-timer 30;; sleep 1;; set EG_Vorraum_Licht on-for-timer 48");;\

schreiben, oder bei dir

fhem ("set Schreibtisch on;; set R_Dachboden on");;\
wenn du das über notepad++ eingibst oder im DEF direkt dann

fhem ("set Schreibtisch on;; set R_Dachboden on");

Damit sollte es auch bei dir klappen.

Grüße

Am Mittwoch, 14. November 2012 18:42:58 UTC+1 schrieb Damian:
>
> du kannst die Geräte aber einzeln mit set schalten?
>
>> Also mit
>> set Schreibtisch on
>> und
>> set R_Dachboden on
>> die Steckdose einschalten und den Rollladen hochfahren (oder runter)?
>
>
> ja, wie bereits oben geschrieben kann ich:
>
> *set Schreibtisch off *
>
> schalten
>
> sowie
>
> *set R_Dachboden on*
>
> Allerdings funktioniert das Hintereinanderschalten der Kommandos nicht.
>
> Alle folgenden Beispiele funktionieren nicht:
>
> *set Schreibtisch off;;set R_Dachboden on
> *
> *
> *
> *set Schreibtisch off ;;set R_Dachboden on
> *
> *
> *
> *set Schreibtisch off;; set R_Dachboden on
> *
> *
> *
> *set Schreibtisch off ;; set R_Dachboden on
> *
>
> Das Gleiche mit einem Semikolon funktioniert genauso wenig.
>
> Bei allen Versuchen kommt die oben genannte Meldung:
>
> *no set value specified*
> *
> *
> *fhem.pl* ist vom 31.10.2012
>
> Hat sich da etwa ein Fehler eingeschlichen?
>
> Kann das Jemand verifizieren?
>
> Gruß
>
> Damian
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com