FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: m8ichael am 06 März 2021, 18:36:46

Titel: Wieder mal das richtige Escapen...
Beitrag von: m8ichael am 06 März 2021, 18:36:46
Hallo,

ich wollte einen Einzeiler generalisieren und haben den folgenden Code in meine myutils eingebaut:


sub SonosSpeak($$$) {
my($device,$volume,$text) = @_;
fhem("set SonosTTS tts $text;;sleep SonosTTS:playing:.0 ;; set $device notify $volume [SonosTTS:httpName]");
}


Wenn ich so die Funktion aufrufe, dann werden die Semikolons überhaupt nicht beachtet und statt drei Befehlen wird offenbar nur der erste ausgeführt (und alles rechts daneben als Parameter für den ersten Befehl). Ich stehe irgendwie auf dem Schlauch . Habt ihr nen Tipp?

Viele Grüße

Michael
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: Wzut am 06 März 2021, 18:54:32
kein Wunder :
Zitatsleep SonosTTS
Sleep was ?
sleep 5; SonosTTS ?
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: TomLee am 06 März 2021, 19:01:52
ZitatSleep was ?

eventbasiertes sleep ?
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: betateilchen am 06 März 2021, 19:03:58
Zitat von: Wzut am 06 März 2021, 18:54:32
kein Wunder :Sleep was ?

falsch gestellte Frage...

sleep SonosTTS:playing.0

ist eine korrekte Syntax und bedeutet "sleep bis der event SonosTTS:playing.0 auftritt"

Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: betateilchen am 06 März 2021, 19:10:49
Zitat von: m8ichael am 06 März 2021, 18:36:46
Habt ihr nen Tipp?

Log-Auszüge, ggf. mit verbose=5, wären hilfreich, um Dir helfen zu können.
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: TomLee am 06 März 2021, 19:12:45
ZitatHabt ihr nen Tipp?

Ich mein es liegt an den doppelten ;

Nimm einfache und es klappt.
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: Wernieman am 06 März 2021, 19:23:59
Sehe eich auch so ..

Weiß jetzt nicht, ob es der Fehler ist, aber auf jedem Fall braucht es dort keine 2;
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: TomLee am 06 März 2021, 19:30:55
Ich habs ausprobiert und in der 99_sonos2mqttUtils.pm wirds auch so (mit Übergabe von Variablen) genutzt:

($cmd,$vol,$text) = split(' ', $EVENT,3);
    fhem("set $tts tts $text;sleep $tts:playing:.0 ;set $NAME notify $vol [$tts:httpName]");
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: Otto123 am 06 März 2021, 20:46:43
Hi,

in einer myUtils Datei muss es so aussehen:
sub SonosSpeak {
my($device,$volume,$text) = @_;
fhem("set SonosTTS tts $text;sleep SonosTTS:playing:.0 ; set $device notify $volume [SonosTTS:httpName]")
}


In der FHEM Kommandozeile muss es so aussehen:
{
my($device,$volume,$text) = @_;
fhem("set SonosTTS tts $text;;sleep SonosTTS:playing:.0 ;; set $device notify $volume [SonosTTS:httpName]")
}


Gruß Otto
Titel: Antw:Wieder mal das richtige Escapen...
Beitrag von: m8ichael am 07 März 2021, 00:13:17
Danke euch! Jetzt funktioniert's  8)