Hallo,
versuche in einer RG zwei Befehle mit einem Button auszuführen, aber ich habe offenbar einen Fehler in dem Code. Finde diesen aber nicht. Die Buttons "Ein", bzw."Aus" lassen sich nicht anklicken:
attr commands {'Ein' => '(set $DEVICE createStereoPair OG.br.SON.ZP_S3';{Init ($DEVICE, 'S3')}), 'Aus' => 'set $DEVICE SeparateStereoPair'}
wenn ich aber den 2.ten Teil lösche, und den Code wie folgt eingebe
attr commands {'Ein' => 'set $DEVICE createStereoPair KG.sr.SON.ZP_S3', 'Aus' => 'set $DEVICE SeparateStereoPair'}
lassen sich "Ein" und "Aus" wie gewünscht bedienen.
Wie kann ich es denn schaffen, dass beim Drücken von "Ein" auch die "Init Routine" abgearbeitet wird?
Danke und Gruß,
Spartacus
was steht im log?
lass mal die äußeren Runden klammern weg.
Hallo,
danke für die Antwort.
Habe mal die Klammern weggelassen! Bring aber nichts. fhem meint, es gäbe einen Syntaxerror:
2016.07.31 15:49:31 2: syntax error at (eval 291) line 1, near "; {"
Ich bin mir sicher, dass das mal funktioniert hat, aber irgendwie will das nicht mehr!
Christian.
Müsste das 3. ' nicht die ersten beiden Befehle umschliessen und nicht nur den Ersten?
Hallo Ellert,
nein, das klappt auch nicht! Demnach müsse der Ausdruck dann so aussehen:
attr commands {'Ein' => '(set $DEVICE createStereoPair OG.br.SON.ZP_S3;{Init ($DEVICE, 'S3')})', 'Aus' => 'set $DEVICE SeparateStereoPair'}
Doch dann kommt diese Fehlermeldung:
2016.07.31 19:50:21 2: Bad name after S3' at (eval 440) line 1.
Entweder bin ich zu blöd, oder ich sehe den Wald vor Bäumen nicht!
Christian.
Das kommt weil 'S3' die selben Anführungszeichen benutzt. Du müsstest sie wahrscheinlich maskieren.
ja. um S3 die doppelten anführungszeichen verwenden.
gruss
andre
Moin zusammen,
ja, vielen Dank für Eure Unterstützung, aber so richtig klappt das immer noch nicht.
commands sieht nun so aus:
{'Ein' => 'set $DEVICE createStereoPair OG.br.SON.ZP_S3;{Init ($DEVICE, "S3")}', 'Aus' => 'set $DEVICE SeparateStereoPair'}
Der Syntax Error ist nun weg. Der "Aus" Befehl wird ausgeführt und taucht auch im Log auf. Aber ein Klick auf "Ein" bewirkt rein gar nix. Nicht einmal ein Eintrag im Log bei Verbose 5.
Auch wenn ich die äußere Klammer setzte {'Ein' => '(set....
ändert sich nichts.
Der Klick auf "Ein" wird ignoriert.
Christian
sorry. ich habe geschlafen...
du musst alles was in einer url nicht erlaubt ist url encoden. dazu gehören hier das ; und die { }
die fehler solltest du auf der javascript console im browser sehen.
mir ist noch keine einfache und rückwärts kompatible methode eingefallen wie man das url encode automatisch im modul machen kann.
gruss
andre
Hi Andre,
ok. Im Prinzip verstehe ich Deine Aussage, aber wie setzt man das jetzt um? Sorry, aber das übersteigt noch meine Fähigkeiten... Gibt es im Wiki Beispiele, die ich mir angucken kann?
Christian
einfach eine web seite suchen die das url encode macht. z.b. hier: http://meyerweb.com/eric/tools/dencoder/ (http://meyerweb.com/eric/tools/dencoder/), den text eingeben und auf encode klicken. du musst nur drauf achten das das $ nicht mit encoded wird.
du kannst auch hier: https://de.wikipedia.org/wiki/URL-Encoding#Relevante_ASCII-Zeichen_in_Prozentdarstellung (https://de.wikipedia.org/wiki/URL-Encoding#Relevante_ASCII-Zeichen_in_Prozentdarstellung) schauen und die drei zeichen ersetzen.
gruss
andre
Hallo Andre,
ich kriege es nicht hin!
; -> %3B
{ -> %7B
} -> %7D
Wenn ich die 3 Zeichen ersetzte, habe ich diesen Ausdruck:
{'Ein' => 'set $DEVICE createStereoPair KG.sr.SON.ZP_S3%3B%7BInit ($DEVICE, "S3")%7D', 'Aus' => 'set $DEVICE SeparateStereoPair'}
Im Log kommt dann der Fehler:
Loading device description failed with error: 400 URL must be absolute at....
Irgendwie habe ich es doch noch nicht kappiert!
Christian
Hallo,
was habe ich denn hier falsch verstanden? Oder geht das einfach nicht in diesem Zusammenhang!
Danke,
Christian
doch. prinzipiell sollte das gehen.
ich schaue es mir noch mal an sobald ich dazu komme.
gruss
andre
Hallo Andre,
danke für Dein Feedback!
Bis bald,
Christian