Allles Klar nun funktionierts, die Bibliothek wars
Was noch schön wäre wenn man die Lautstärke der TTS Ansage noch einstellen könnte.
Nachtrag : Die Lautstärke ist bei mir immer 0 % bei der Ansage ?
Noch ein Nachtrag : Wenn ich den Radio laufen lasse dann klappts, aber wenn ich alles aus habe bleibts leise
momentan kann nur für die Sounds (ringing, bell, …) die Lautstärke angepasst werden. Für die Sprachausgabe wird die aktuelle Lautstärke verwendet (hat so bei den Test bei mir gepasst, zumindest für Google-TTS). Schau mal bei Dir wie groß die Lautstärlke im Zustand „Alles aus“ ist.
Spontan würde aber auch ein zusätzlicher Parameter „Text_Volume_Offset“ Sinn machen.
@wgreipl … Ne nur in der Sonos Bibliothek den Eintrag gemacht. @joki … Wäre super die sonos laufen bei mir ja nicht immer mit Musik … Evtl wäre ja ne default Lautstärke drin
Nur zur Verdeutlichung: Die Meldung wird auch ausgeben, wenn gerade keine Musik/Radio läuft. Für die Sprache wird dann die gerade aktive Lautstärke verwendet.
…peinlich…hab die 1000 Variablen Grenze erreicht und deswegen konnte ich nicht mehr Boxen einbinden :rolleyes:
Trotzdem hätte ich noch eine Frage > kann ich ein Soundfile auf allen Boxen gleichzeitig abspielen lassen? Ich bekomme es nur hin, dass alle Boxen nacheinander die Meldung ausgeben, das ist aber bei einer Benachrichtigung von z.B. der Waschmaschine eher unschön…
Ich hatte mir das so gespeichert…aber funktioniert nicht…
$params = array (
"Rooms" => 'Flur, Schlafzimmer', // List of rooms to play the messages => 'Bad oben, Schlafzimmer',
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Sound" => 'zzz_Waeschetrockner-fertig.mp3', // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
"Sound_Repeat" => '2', // Play the sound for # times
"Sound_Delay" => '500', // Delay in miliseconds; adds a pause after playing a sound
"Sound_Volume_Offset" => '30', // Adjust volume (for sound files only)
);
IPSSonos_PlayMessage($params);
Fehler ist:
Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos_Server.class.php on line 806
Warning: fsockopen(): unable to connect to :1400 (Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
) in C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php on line 2296
Kleiner Tip (falls nicht bekannt): Mit dem Paramter IPSSONOS_VAR_PLAYERDETAILS wird die Anzahl an IPS-Variablen gesteuert, die innerhalb IPSSonos verwendet werden. Eingestellt auf „Low“ werden momentan 8 Variablen pro Raum weniger angelegt. Die durch den Parameter „High“ engelegten Variablen sind eher kosmetischer Natur und können z.B. bei der Erstellung eines eigenen Front-Ends verwendet werden.
Args, hab es hinbekommen mit mehreren Räumen gleichzeitg… Kaum lässt man das doofe Leerzeichen weg
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');
$params = array (
"Rooms" => 'Schlafzimmer,Flur', // List of rooms to play the messages => 'Bad oben, Schlafzimmer',
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Sound" => 'zzz_Waeschetrockner-fertig.mp3', // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
"Sound_Repeat" => '2', // Play the sound for # times
"Sound_Delay" => '500', // Delay in miliseconds; adds a pause after playing a sound
"Sound_Volume_Offset" => '30', // Adjust volume (for sound files only)
);
IPSSonos_PlayMessage($params);
So funktioniert es
@joki: Das mit dem LOW/HIGH hatte ich gesehen, aber ich wollte nicht auf die Variablen verzichten…hab anderweitig etwas aufgeräumt und jetzt ist wieder etwas Platz Zur Not muss ich halt doch auf die Unlimited gehen. Aber bin fast fertig mit der ganzen Umsetzung, also sollten die Variablen ausreichen.
Kann ich irgendwas machen, damit nach dem Abspielen einer Sounddatei nicht mehrere Sekunden Pause ist, bevor die nächste Sounddatei abgespielt oder z.B. das Internetradio weiter abgespielt wird? Das sind bestimmt 10 Sekunden…manchmal auch mehr!
$params = array (
"Rooms" => 'Schlafzimmer,Flur,Bad oben,Wohnzimmer', // List of rooms to play the messages => 'Bad oben, Schlafzimmer',
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Sound" => 'zzz_doorbell1.mp3', // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
"Sound_Repeat" => '1', // Play the sound for # times
"Sound_Delay" => '100', // Delay in miliseconds; adds a pause after playing a sound
"Sound_Volume_Offset" => '30', // Adjust volume (for sound files only)
);
IPSSonos_PlayMessage($params);
// HIER DAZWISCHEN WAREN EBEN ZWISCHEN 10 und 15 SEKUNDEN PAUSE!!!
$params = array (
"Rooms" => 'Schlafzimmer,Flur,Bad oben,Wohnzimmer', // List of rooms to play the messages => 'Bad oben, Schlafzimmer',
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Sound" => 'zzz_Waeschetrockner-fertig.mp3', // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
"Sound_Repeat" => '1', // Play the sound for # times
"Sound_Delay" => '100', // Delay in miliseconds; adds a pause after playing a sound
"Sound_Volume_Offset" => '30', // Adjust volume (for sound files only)
);
IPSSonos_PlayMessage($params);
Wie bereits berichtet -> bei mir haben sich die Pausen zwischen den Meldungen auf rund eine Sekunde verkürzt und auch nach den Meldungen/Sounddateien ist die Wartezeit vorbei, also läuft das Skript nicht mehr noch mehrere Sekunden unnötig nach.
Ich konnte heute schon erfolgreich die Waschmaschine, Klingel und andere Meldungen in allen und einzelnen Räumen erfolgreich im Live-Betrieb für gut befinden
Du kannst bei PlayMessage in den $params nur den Offset einstellen, also die Differenz zur aktuellen Lautstärke (z.B. etwas lauter oder leiser)…
Ich mache das mit der Lautstärke für alle Meldungen so:
<?
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');
IPSUtils_Include ('PHPSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');
$sonosIP = "192.168.1.51" //Sonos ZP IPAdresse
//alte Lautstärke merken
$SonosVolume = 50;
$volume1 = GetValue(43634 /*[Program\IPSLibrary\data\modules\IPSSonos\Wohnzimmer\VOLUME]*/); // Volume Variable deines Sonos-Lautsprechers (wenn du mehrere machen willst, dann einfach erweitern um Volume2, Volume3, ... -- auch am Ende des Skripts beim wiederherstellen der gespeicherten Lautstärke)
//temporäre Lautstärke setzen
$sonos = new PHPSonos($sonosIP); //Sonos ZP IPAdresse
$sonos->SetVolume($SonosVolume); //0-100 in %
/Meldung abspielen in temporärer Lautstärke
$params = array (
"Rooms" => 'Flur', // List of rooms to play the messages
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Text" => 'Ich bin die Nachricht und werde vorgelesen' // Message
"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" => 'zzz_doorbell1.mp3', // Additional sound to play; *.wav/*.mp3 files must be available in the file folder specified in IPSSonos_Configuration
"Sound_Repeat" => '1', // 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);
//alte Lautstärke wieder setzen
$sonos = new PHPSonos($sonosIP);
$sonos->SetVolume($volume1); //0-100 in %
?>
Edit: +1 für Einbindung der TTS-Lautstärken-Regelung in IPSSonos
Momentan kann lediglich die Lautstärke für die Sounds (Klingeltöne) angepasst werden, für die Sprachausgabe wird die gerade aktuelle Lautstärke verwendet.
Kann ich aber gerne noch erweitern, ist nicht aufwendig und scheint mir sinnvoll.
das wäre super.
Bei uns läuft die Musik meistens dezent im Hintergrund und dadurch hört man nur ein leises flüstern bei einer Durchsage.
@Bayaro
Wenn ich die Meldung nur an einem Player ausgebe ist das mit dem SetVolume($SonosVolume) ganz ok, aber wenn ich das für ein ganzes Sonos Rudel mit PlayTTSAllRoomsSimple mache, dann wird es schnell sehr unübersichtlich. Trotzdem danke für die Info.
warum unübersichtlich bei mehreren? Man könnte das auch einfach in eine Funktion in ein externes Skript auslagern. Dann bräuchte man z.B. nur vor und nach einer Meldung schreiben „Sonos_SaveOldVolumeAll“ „Sonos_SetVolumeSprachmeldungAll“ und „Sonos_SetOldVolumeAll“.
Nur als Beispiel
Oder halt direkt im Skript einzeln:
<?
IPSUtils_Include ('IPSSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');
IPSUtils_Include ('PHPSonos.inc.php', 'IPSLibrary::app::modules::IPSSonos');
//alte Lautstärke merken
$SonosVolume = 50;
$volume1 = GetValue(43634 /*[Program\IPSLibrary\data\modules\IPSSonos\Wohnzimmer\VOLUME]*/);
$volume2 = GetValue(16532 /*[Program\IPSLibrary\data\modules\IPSSonos\Schlafzimmer\VOLUME]*/);
$volume3 = GetValue(16718 /*[Program\IPSLibrary\data\modules\IPSSonos\Bad oben\VOLUME]*/);
$volume4 = GetValue(56385 /*[Program\IPSLibrary\data\modules\IPSSonos\Flur\VOLUME]*/);
//temporäre Lautstärke setzen
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($SonosVolume); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($SonosVolume); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($SonosVolume); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($SonosVolume); //0-100 in %
//Meldung abspielen in temporärer Lautstärke
$params = array (
"Rooms" => 'Schlafzimmer,Flur,Bad oben,Wohnzimmer', // List of rooms to play the messages
"Volume_Ramp" => 'fast', // Type of volume ramp-up/down: slow, fast
"Sound" => 'test.mp3', // Additional sound to play; *.wav/*.mp3 files
"Sound_Repeat" => '1', // Play the sound for # times
"Sound_Delay" => '100', // Delay in miliseconds; adds a pause after playing a sound
"Sound_Volume_Offset" => '0', // Adjust volume (for sound files only)
);
IPSSonos_PlayMessage($params);
//alte Lautstärke wieder setzen
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($volume2); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($volume3); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($volume4); //0-100 in %
$sonos = new PHPSonos("192.168.*.*"); //Sonos ZP IPAdresse
$sonos->SetVolume($volume1); //0-100 in %
?>
Aber natürlich hast du Recht, wenn joki das direkt in sein IPSSonos einbaut, dann würde ich das auch klar bevorzugen
Ist eingebaut, der Paramter lautet Text_Volume_Offset.
$params = array (
"Rooms" => 'Schlafzimmer', // List of rooms to play the messages
"Volume_Ramp" => 'slow', // Type of volume ramp-up/down: slow, fast
"Text" => 'Dies ist ein schöner Test', // Message
"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
"Text_Volume_Offset" => '20', // Adjust volume (for text only)
);