Wieder mal das richtige Escapen...

Begonnen von m8ichael, 06 März 2021, 18:36:46

Vorheriges Thema - Nächstes Thema

m8ichael

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

Wzut

kein Wunder :
Zitatsleep SonosTTS
Sleep was ?
sleep 5; SonosTTS ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

TomLee

ZitatSleep was ?

eventbasiertes sleep ?

betateilchen

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"

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

ZitatHabt ihr nen Tipp?

Ich mein es liegt an den doppelten ;

Nimm einfache und es klappt.

Wernieman

Sehe eich auch so ..

Weiß jetzt nicht, ob es der Fehler ist, aber auf jedem Fall braucht es dort keine 2;
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

TomLee

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]");

Otto123

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
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

m8ichael