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
kein Wunder :
Zitatsleep SonosTTS
Sleep was ?
sleep 5; SonosTTS ?
ZitatSleep was ?
eventbasiertes sleep ?
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"
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.
ZitatHabt ihr nen Tipp?
Ich mein es liegt an den doppelten ;
Nimm einfache und es klappt.
Sehe eich auch so ..
Weiß jetzt nicht, ob es der Fehler ist, aber auf jedem Fall braucht es dort keine 2;
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]");
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
Danke euch! Jetzt funktioniert's 8)