Escaping von Semikolon

Begonnen von housekeeper, 08 Juni 2013, 14:46:21

Vorheriges Thema - Nächstes Thema

housekeeper

Folgendes habe ich dazu festgestellt:

Gebe ich im FHEM-Eingabefeld  die style Angabe mit einem Semikolon abgeschlossen ein, weist FHEM die Eingabe mit "unknown command" zurück, nehme ich zwei, wird der Eintrag erzeugt, aber in der DEF(inition) taucht nur noch eins auf.

Dadurch erfolgt fehlerhafte Darstellung der Seite.

Trage ich im detail DEF des AT / Notify das fehlende Semikolon von Hand nach, funktionert es.

Nach einigen weiteren Versuchen sieht es so aus:

attr commands devStateStyle style="color:brown;; text-decoration:blink"
Funktioniert tadellos

{ fhem "attr commands devStateStyle style=\"color:brown;; text-decoration:blink\"" }
Das HTML-Attribut wird _mit_ dem ersten Semikolon abgeschnitten. Im DEF Teil der Detailansicht von "commands" steht dann nur noch style="color:brown

und als Antwort auf die Eingabe erhalte ich

Unknown command text-decoration:blink", try help

Nach einigen mehr oder weniger unqualifizierten Versuchen habe ich mit

{ fhem "attr commands devStateStyle style=\"color:brown;;;; text-decoration:blink\"" }

schließlich doch noch den gewünschten Erfolg. In der fhem reference finden wir dazu

ZitatMultiple 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


Commands can be either typed in plain, or read from a file (e.g. the configuration file at startup). The commands are either executed directly, or later if they are arguments to the at and notify fhem commands.

A line ending with \ will be concatenated with the next one, so long lines (e.g. multiple perl commands) can be split in multiple lines. Some web fronteds (e.g. webpgm2) make editing of multiline commands transparent for you (i.e. there is no need for \) .

Außerdem noch wichtig: Anführungszeichen mit \ schützen ( \" ).

Wenn der Befehl in der Befehlseingabe der Webseite, einer Telnet-Sitzung oder direkt in fhem.cfg eingegeben wird muß man selbst auf die richtige Schreibweise achten ( 4xSemikolon) , bei Eingabe im DEF-Feld der detail Ansicht macht FHEM das autumatisch, also müssen hier nur 2 Semikola angegeben werden.

@Rudi
Bitte ergänze in der fhem reference den zitierten Abschnitt um mein Beispiel, ich glaube das hilft dem Einen oder Anderen schneller zum Ziel zu kommen, Danke.


rudolfkoenig

> Außerdem noch wichtig: Anführungszeichen mit \ schützen ( \" ).

Es sei denn, man verwendet aussen '

> Bitte ergänze in der fhem reference den zitierten Abschnitt um mein Beispiel

Hab die Beispiele durch ein ;;;; Beispiel ergaenzt, bin aber bei den Lampen-Beispiel der Doku geblieben, da mir das natuerlicher vorkam.

housekeeper