IPSSonos

Der Wunsch geistert bei mir auch umher

GeTapatalked

Zu dem TTS_GenerateFile-Problem hat bumaas sich eine super Umgehungslösung ausgedacht und diese auch im Bug-Tracker hinterlegt. Der Text-to-Wav-Teil wird dabei durch „nircmd“ übernommen (Download HIER).

„Nircmd“ auf derm IPS-Server ablegen und statt „TTS_GenerateFile“ die folgende Funktion an entsprechender Stelle ablegen/aufrufen:

function     TTS_GenerateFile_ex($InstanzID, $Text, $Filename, $Format){
    //Workaround for TTS_GenerateFile problem with Windows 8.1.
    // $InstanzID and $Format are ignored
    $cmd = 'speak text "'.$Text.'" 0 100 "'.$Filename.'" 48kHz16BitStereo';
    IPS_Execute(IPS_GetKernelDir()."nircmd.exe", $cmd, false, true);
    return true;
}

Ich habe das ursprüngliche „IPS_ExecuteEx“ durch „IPS_Execute“ ersetzt - warum auch immer das bei mir nicht ging.
Jedenfalls eine schöne Sache um natives TTS zu nutzen!

Cheers
/Jens

Hallo,

ich nutze IPSSonos täglich und bin so was von begeistert …

Was mir jedoch noch fehlt, ist die Möglichkeit, Räume zu gruppieren. Es klingt halt schon dämlich, wenn das gleiche Lied 4x versetzt wiedergegeben wird.

Vieleicht könnten Codeschnipsel aus PHPSonos für diese Funktion in IPSSonos integriert werden ???

Also nochmals vielen vielen Dank für das super Modul !!!

Gruß Proxima

Wollte mich die Tage auch mal mit dem Gruppieren auseinandersetzen… Dann klingen die Durchsagen etwas schöner, je nachdem wo man gerade im Haus steht bei einer Durchsage.

Wollte es damit probieren:
Sonos - Zone erstellen

Grüße,
Chris

Erst einmal vielen Dank für die tolle Arbeit.
Wollte jetzt mal fragen, ob es möglich ist, dass bei der Textmitteilung der Inhalt einer Variablen mit einbezogen wird?
Ich habe eine Stringvariable, in die bei einem Anruf der Name des Anrufers gespeichert wird. Diesen Namen möchte ich mir jetzt mit ansagen lassen. Habe es schon mit folgendem versucht; funktioniert aber nicht:

<?

IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');

$anrufer = GetValue(57404 /*[FritzBox\eingehender Ruf\Name]*/);
//Echo $anrufer;

$params =  array (
  "Rooms"		=>  'Esszimmer',	  // List of rooms to play the messages
  "Volume_Ramp"     	=>  'slow',        		  // Type of volume ramp-up/down: slow, fast

  "Text"                =>  '($anrufer) ruft an',  // Message
  "Text_Volume_Offset"	=>  '-20',			  // Adjust volume (for text only)
  "Type"          	=>  'TTS_Simple',      		  // Type of engine: TTS_Simple (Google), TTS (IPS instance)
  "TTS_Simple_Language" =>  'de',          		  // For TTS_Simple only, possible entries: de, fr, en, en-gb, ... also check google translate service for more languages

  "Sound"         	=>  'ringout.wav',   		  // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
  "Sound_Repeat"   	=>  '3',   			  // Play the sound for # times
  "Sound_Delay"   	=>  '500',   			  // Delay in miliseconds; adds a pause after playing a sound
  "Sound_Volume_Offset" =>  '0',   			  // Adjust volume (for sound files only)
);

IPSSonos_PlayMessage($params);

?>

Wäre für Hilfe dankbar.

LG immergut

Hi immergut,

du musst die komplette Nachricht vorher definieren…

<? 
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos'); 

$anrufer = GetValue(57404 /*[FritzBox\eingehender Ruf\Name]*/); 
$nachricht = $anrufer." ruft an";

$params =  array ( 
  "Rooms"        =>  'Esszimmer',      // List of rooms to play the messages 
  "Volume_Ramp"         =>  'slow',                  // Type of volume ramp-up/down: slow, fast 
  "Text"                =>  $nachricht,  // Message 
  "Text_Volume_Offset"    =>  '-20',              // Adjust volume (for text only) 
  "Type"              =>  'TTS_Simple',                // Type of engine: TTS_Simple (Google), TTS (IPS instance) 
  "TTS_Simple_Language" =>  'de',                    // For TTS_Simple only, possible entries: de, fr, en, en-gb, ... also check google translate service for more languages 
  "Sound"             =>  'ringout.wav',             // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration 
  "Sound_Repeat"       =>  '3',                 // Play the sound for # times 
  "Sound_Delay"       =>  '500',                 // Delay in miliseconds; adds a pause after playing a sound 
  "Sound_Volume_Offset" =>  '0',                 // Adjust volume (for sound files only) 
); 

IPSSonos_PlayMessage($params); 
?>

Grüße,
Chris

Danke Chris,
funktioniert 1A. Jetzt noch die Gruppenfunktion und es wäre perfekt.

Grüße, immergut

Kein Ding.

Ja, eine einfache Lösung mit Gruppen bilden und Gruppen auflösen, das würde mir auch noch gefallen. Hab die Tage kurz mal probiert, aber konnte es nicht zufriedenstellend lösen, deshalb wurde es nach hinten verschoben auf der 2do-Liste :smiley:

Grüße,
Chris

Hallo, brauche nochmal eure Hilfe.
Mein Haussender „Cityradio Trier 88.4“ wird in IPSSonos nicht richtig dargestellt. In der Sonos App ist die Darstellung in Ordnung.

Sonos App:
cityradio.PNG

IPSSonos:

Bitte um Hilfe.
Grüße, immergut

Moin immergut,

das liegt daran (also ich gehe davon aus :smiley: ), dass dein Radiosender (genau wie einer bei mir), doofe Infos anzeigt, deshalb kommt die Automatik im IPSSonos damit nicht klar und ruft ein total falsches Cover ab…

In der Datei „IPSSonos_Query“ kannst du dir das in den Zeilen 183-192 anschauen und gegebenenfalls auf dich anpassen. Also prüfen was dein Radiosender anzeigt, das rausholen und dem IPSSonos dann eine eigene URL vorsetzen.
> ABER denk dran, beim Update wird das einfach wieder überschrieben, also vlt. etwas bauen was NACH der Anzeige des Covers getriggert wird und das Cover durch das richtige ersetzt!? Hab mich damit nicht weiter befasst, steht auf meiner 2do recht weit unten :slight_smile:

Alternativ gibt es vlt. in der von IPSSonos genannten Quelle dein Radio nicht!? Dann trotzdem die Variante mit dem selbst ersetzen…

Grüße,
Chris

Danke Chris für die schnelle Info.
Werde dann wohl noch warten müssen; vielleicht geht es ja in einem der nächsten Updates. In Br Sonos wurde es auch gefixt und hat dann funktioniert.

Grüße, immergut

Edit: Werden die Radiocover eigentlich nicht über TuneIn abgerufen? Da ist der Radiosender gelistet mit richtigem Cover.

Habe diese Tage ein Update auf IPS 3.30 (#3645) gemacht. Bin mir nicht ganz sicher, aber ich glaube, dass ab dem Update bei IPSSonos keine Cover mehr für die Radiosender geladen werden. Habe jetzt also bei keinem Radiosender mehr ein Bild im WFE. Kann das jemand bestätigen, oder habe ich bei mir etwas zerschossen?

Grüße,
immergut

Hallo brownson

Ich habe mich die letzten Stunden drüber gemacht TTS über die Sonos zu aktivieren.
Nach langen probieren hab ich nun endlich herausgefunden, an was es gelegen war.

Kannst du folgendes in der Wiki ergänzen?

Der Freigabeordner für \192.168.xxx.xxx/tts muss auch in der SONOS App auf dem Handy/Ipad oder ähnlichem eingetragen werden.

Beispiel iPad:

  • Sonos App
  • Einstellungen
  • Musikbibliothek verwalten
  • Musikbibliothek einrichten
  • auf die … Punkte
  • Neue Freigabe hinzufügen.

Hattte bei mir immer nur Ton aus, und nichts. Danach gings.

Super IPS Erweiterung!!!

Super Modul. Vielen Dank dafür.

Habs installiert und es funktioniert Super!

Nur ein Problem:
Wenn ich eine Durchsage über die Playbar machen möchte, und die gerade TV abspielt, kommt eine ganze Ladung Fehlermeldungen. Was muss ich noch einbauen, das die Playbar den TV deaktiviert und nach der Durchsage wieder zurück schaltet?
Vielen Dank schon mal.

gibt es die Möglichkeit den Befehl des periodischen Timer auch mit einem Ereignis auszulösen?
Würde gerne ein Ereignis auslösen von einem BwMelder der die Mediendaten so holt wie der per.timer.
Das mein Lcn Gt10 D bei Bewegung den aktuellen Titel angezeigt bekommt ohne das ich den Timer des ips sonos auf eine sec. Stellen muss.
Habe es probiert das Skript des Timers mit einem Ereignis auszulösen läuft aber nicht. Muss mit dem timer zusammenhängen.
Könnte mir jemand helfen?

wer suchet der findet :smiley:
habe es so gelöst

<?

IPSUtils_Include ("IPSSonos_Query.inc.php",      	"IPSLibrary::app::modules::IPSSonos");

IPSSonos_QuerySonos(IPSSONOS_EVT_QUERY);
?>

Hi,

ich stelle in dem Thread meine Frage von Ostern nochmal, ich hoffe, sie ist hier besser platziert …

Wie hoffentlich aus dem Titel erkennbar suche ich nach einer Möglichkeit über die wunderbare SONOS Library auch den Eingang des SONOS CONNECT auszuwählen.

Es gibt:
PHP-Code:

  function IPSSonos_PlayPlaylistByName($roomName, $value)  

oder auch
PHP-Code:
function IPSSonos_PlayRadiostationByID($roomName, $value)

ich bräuchte aber ;-)))
PHP-Code:
function IPSSonos_PlayEingangByName($roomName, $value)

oder so ähnlich ;-)))))))))))))))))))))))

Jemand eine Idee?

herbertf

Hallo,

ich benutze das Script wie in diesem Beitrag von Jevico beschrieben
Text To Speech Using Google API In PHP

Leider kommt es manchmal (1 mal in 5 Ansagen) vor dass die Ansagen dierekt am Anfang abgebrochen werden. Man hört dann ca 1 sekunde die Ansage und dann nichts mehr
Hat jemad das gleiche festellen können … Weiss jemand woran das liegen könnte…

MFG

Leider kommt es manchmal (1 mal in 5 Ansagen) vor dass die Ansagen dierekt am Anfang abgebrochen werden. Man hört dann ca 1 sekunde die Ansage und dann nichts mehr
Hat jemad das gleiche festellen können …

war bei mir das auch so. :mad:
habe in der IPS_SonosServer folgendes abgeändert.

	// Play Sound ---------------------------------------------------------------
		   if (@$params["Sound"]!='') {
		   
				// Set Volume for playing sound
				for ($i = 0; $i < $count_rooms; $i++) {
					$l_volume = $volume_start[$i] + @$params["Sound_Volume_Offset"];
					$sonos[$i]->SetVolume($l_volume);
					$l_song = "x-file-cifs:".$MessageConfig[IPSSONOS_VAR_SMBPATH].$params["Sound"];
					$sonos[$i]->SetAVTransportURI($l_song);
				}
IPS_sleep(2000);// Warten bis Play
				// Loop to play sound several times
				for ($h = 0; $h < $l_sound_repeat; $h++) {
					for ($i = 0; $i < $count_rooms; $i++) {
     
						$sonos[$i]->Play();
					}
					//Wait till first player ended with playing text
					while ($sonos[0]->GetTransportInfo()==1)
					{
					   IPS_Sleep(200);
					}
					// Wait specified time, but not in the last loop.
					if ($h < ($l_sound_repeat - 1)) {
					IPS_Sleep((int) $l_sound_delay);
					}
					else IPS_Sleep(200);
			  }
			}

in zeile 846 ein IPS_sleep(2000); eingesetzt.
seither läuft es

Moin !

habe das IPSSonos Modul installiert, bekomme aber bei Auswahl einer Playlist:

danach ist die Playlist immerhin ausgewählt - der Player steht aber auf Pause.

Hat jemand eine Idee ?

Grüße,
Tom