Als erstes möchte ich mich entschuldigen falls die Fragen die ich stelle schon beantwortet wurden oder sehr doof sind :-).
Ich habe die Suchfunktion benutzt aber keine passende Antwort gefunden die zu meinem Problem passt.
Zu meinem System
ESXi mit mehreren VM’s
IP-SSymcon läuft einer Windows Server 2012 VM. Ohne Soundkarte
IPSSOnos wurde installiert und funktioniert
SONOS PLAY1
Ich würde gerne Texte durch Scripte durch Sonos Play1 durchsagen lassen.
Soweit ich gelesen habe funktioniert es mit TTS nicht und mich muss den Text mit TTS_GenerateFile durchsagen lasse…
Leider weis ich nicht wie ich das anstellen soll…
Benötigt der Server eine Soundkarte um Texte Über Sonos aussprechen zu lassen?
Wenn ich folgenden Script laufen lasse wird die Musik leiser geschaltet für 10 Sekunden und wieder laut ohne dass ein Text gesprochen wird.
ich mache wohl irgend etwas falsch.
IPSUtils_Include (‚IPSSonos.inc.php‘, ‚IPSLibrary::app::modules::IPSSonos‘);
IPSSonos_PlayTTSByRoomSimple(‚Küche,Schlafzimmer‘, ‚Dies ist ein Test‘
Mir ist aufgefallen dass die Datei richtig generiert wird.
Wenn ich diese über die Sonos app abspilene funktioniert es auch aber nicht über den Script…
Weiss jemand Warum?
ich weiss nicht obs was hilft, da ich andere SonosScripte verwende, aber ich hatte am Anfang auch Porbleme mit TTS auf Sonos. Bei mir gings, nachdem ich das Verzeichnis in das meine TTS-Files abgelegt werden freigegeben habe und in der Sonos-Software unter „Verwalten - Einstellungen der Musikbibliothek - Ordner“ dieses Verzeichnis hinzugefügt hab.
Hallo
Vielen Dank für deine Antwort. Dies habe ich gemacht kann die generierte Datei auch manuell über Sonos abspielen. Nur wird sie eben nicht durch den Script abgespielt.
Hast du sonst noch eine Idee woran es liegen kann? Könntest Du vieleicht mal deinen ascript posten
Mfg
Ich habe das Problem lösen können. Es lag tatsächlich an der Freigabe. Die Ordnerstruktur in der die Datei abgespeichert wurde: c:ips-config/sounds
Die Freigabe hatte ich auf den Ordner Sounds erteilt und in Sonos interface hinzugefügt: \ip/sounds
Konnt auch mit dem sonos interface darauf zugreifen.
Ich erstellte erneut eine Freigabe diesmal jedoch auf den Ordner ips-config und in Sonos folgendermassen hinzugefügt:
\ip/ips-config/sounds
Dann hats funktioniert, villeicht kann das jemandem weiterhelfen
Die PHPSonos.inc.php im Scripts-Verzeichnis ist die Basis.
Dann hab ich ein PHP-Script (irgend wo hier aus dem Forum leicht abgeändert) FunctionAnsageAufSonos:
<?
include("PHPSonos.inc.php");
function TTS_Play_Sonos($Player_IP,$ansagetext)
{
/*=============================================================
TTS_Play_Sonos - Martin Heinzel - 09.07.2013
Version: 0.1
Beschreibung:
Diese Funktion ersetzt die Sprachausgabe von "Ferengie-Master"
für die Sprachausgabe auf Soundkarten. Zur Sprachausgabe wird
ein Sonosplayer genutzt.
Parameter:
$Player_IP -> Die IP-Adresse des Sonosplayers
$ansagetext -> Der Ansagetext der ausgegeben werden soll
*/
//--------------------------- Main ----------------------------
// Sonos Player
$sonos = new PHPSonos($Player_IP); //Sonos ZP IPAdresse
//Einlesen und runterrampen der Lautstärke
$volume = $sonos->GetVolume(); // gibt die Lautstärke als Integer zurück
//Runterrampen der Lautstärke
while ($sonos->GetVolume()>=6)
{
$sonos->SetVolume($sonos->GetVolume() -5);
IPS_Sleep(500);
}
//Speichern der Aktuellen Informationen
$oldpi = $sonos->GetPositionInfo();
$oldmi = $sonos->GetMediaInfo();
$radio=(strpos($oldmi['CurrentURI'],"x-sonosapi-stream:")>0)===false;
$oldti = $sonos->GetTransportInfo();
//Generieren der Sprachausgabe
TTS_GenerateFile(29148 /*[Logisch\Alarme\Ausgaben\TTS\TTS-Steffi]*/ , $ansagetext,IPS_GetKernelDir()."/media/Sprachausgaben/sprachausgabe.wav",39);
IPS_Sleep(75);
//Abspielen der Sprachausgabe
$sonos->SetVolume(12);
$sonos->SetAVTransportURI("x-file-cifs://laptop01/media/Sprachausgaben/sprachausgabe.wav");
$sonos->Play();
//Abfragen ob der Player noch spielt
//IPS_Sleep(1000);
while ($sonos->GetTransportInfo()==1)
{
IPS_Sleep(20); //Alle 200ms wird abgefragt
}
//Player wieder Starten
if ($radio)
{
$sonos->SetRadio($oldmi['CurrentURI']);
}
else
{
$sonos->SetAVTransportURI($oldmi['CurrentURI'],$oldmi['CurrentURIMetaData']);
}
try
{
// Seek TRack_Nr
$sonos->Seek("TRACK_NR",$oldpi['Track']);
// Seek REl_time
$sonos->Seek("REL_TIME",$oldpi['RelTime']);
}
catch (Exception $e)
{
}
if ($oldti==1) $sonos->Play();
$sonos->SetVolume($volume);
}
?>
Aufgerufen wird dieses Script mit einem anderen, das die Parameter übergibt:
<?
include('59538.ips.php'); // function ansage auf sonos ohne ton
$Player_IP = '192.168.x.x'; // anpassen!
$ansagetext = 'Die Waschmaschiene ist fertig';
//function TTS_Play_Sonos($Player_IP,$ansagetext)
/*=============================================================
TTS_Play_Sonos - Martin Heinzel - 09.07.2013
Version: 0.1
Beschreibung:
Diese Funktion ersetzt die Sprachausgabe von "Ferengie-Master"
für die Sprachausgabe auf Soundkarten. Zur Sprachausgabe wird
ein Sonosplayer genutzt.
Parameter:
$Player_IP -> Die IP-Adresse des Sonosplayers
$ansagetext -> Der Ansagetext der ausgegeben werden soll
*/
TTS_Play_Sonos($Player_IP,$ansagetext)
?>