Ivona TTS Modul

Hallo,

Dies ist eine Fehlermeldung vom mplayer. Such mal bei google, das würde ich hier ungern vertiefen, da es nichts mit dem Ivona Modul zu tun hat.

So fuktioniert das Löschen:
Das Skript zum Löschen läuft alle 300 Sekunden.
Grundsätzlich passiert nur was, wenn

  1. der Default Path gesetzt ist (um das temp Verzeichnis sollte sich das OS kümmern)
  2. das Häkchen bei „Delete Files“ gesetzt ist

Wenn dem so ist, wird in dem „Default Path“ für alle mp3 Dateien geschaut, ob das „last access time“ länger als „Minutes“ her ist.
–> Nur wenn das so ist wird die Datei gelöscht.

Wenn die Minuten also auf „1“ gesetzt sind, bedeutet das noch lange nicht, dass sie auch nach einer Minute gelöscht werden. Es ist eher ein „frühestens nach“.
Und „access time“ bedeutet auch lesen!

Gruß,
Thorsten

Ja das habe ich schon gemacht, aber eine richtige Lösung gibt es dazu nicht.
Egal ich bin jetz auf den mpeg321 player umgestiegen, damit klappt es problemlos!

Okay verstanden mit der Löschfunktion.
Allerdings habe ich alles wie beschrieben eingestellt und die Files im Verzeichnis liegen heute noch immer da, wobei ich gestern das letzte mal darauf zu gegriffen habe :confused:

Hallo,

hmpf…
Könntest Du mir noch mal einen Screenshot von den Instanzeinstellungen machen?

Danke,
Thorsten

Klar:

ivona.PNG

Okay alles gut, Thorsten!
Kann Entwarnung geben es läuft alles.

Ich habe die Files einmal händisch gelöscht und die nun neu geschriebenen Files werden wie erwartet gelöscht!

Keine Ahnung, vermutlich durch die hin und her konfiguriererei irgendwas durcheinander geraten…

TipTop!

Hallo,

ich verstehe nicht so recht, wie die Pfade im Modul angegeben werden müssen. Ich möchte die erzeugten Files speichern, damit diese nicht jedes mal neu erzeugt werden müssen. IPS läuft auf einem WSE2012.

  • IPS ist in „C:\IP-Symcon“ installiert.
  • sämtliche Shares liegen auf „D:\ServerFolders…“ welche unter „\NameDesServers…“ erreichbar sind.

Am liebsten würde ich alle erzeugten MP3-Dateien in „C:\IP-Symcon\webfront\user\Ivona“ speichern. Wie sind dann die beiden Pfadangaben zu machen? Muss das Verzeichnis „…\Ivona“ freigegeben werden?

Wie muß es aussehen, wenn die MP3-Dateien in einem vorhandenen Share auf D:\ gespeichert werden sollen ???

Gruß Proxima

system(„mplayer --af=volume=-20“ (IVNTTS_saveMP3(42182,„Guten Morgen! Heute ist „.$Wochentag.“ der „.strftime(“%e. %B“).", die aktuelle Außentemperatur beträgt „.$outtemp,“")));

Hat jemand einen Plan für mich?

Hi Christian und Thorsten. Erstmal vielen Dank an Dich Christian. Hast mir viel Arbeit abgenommen :wink: Hab das og. Script bei mir erfolgreich umgesetzt (bisher…Sonosintegration steht jetzt noch aus :slight_smile: )

Jedoch wird mir der Monat in englisch ausgegeben. Hier mal mein gesamtes Script. Was muss ich hier och ändern?

<?
$outtemp = GetValueFormatted(33952 /*[Draußen\Klima\Temperatur]*/); 
$outtemp = str_replace('.',',',$outtemp);
$Wochentage_Array = array(1=>"Montag",2=>"Dienstag",3=>"Mittwoch",4=>"Donnerstag",5=>"Freitag",6=>"Samstag",0=>"Sonntag");
$Wochentag_Heute = date("w");
$Wochentag = $Wochentage_Array[$Wochentag_Heute];
$time = strftime;
IVNTTS_saveMP3(53149 /*[Ivona]*/,"Guten Morgen! Heute ist ".$Wochentag."der ".strftime("%e. %B").",die aktuelle Außentemperatur beträgt ".$outtemp);
?>

Nachtrag: Das File wird mit o.g. Script ohne Probleme erstellt. In der Sonos Bibliothek kann ich es auch abrufen und über den Player abspielen lassen.

Nun habe ich versucht, das File direkt mit dem Befehl von Seite 1 über den entsprechenden Player abspielen zu lassen. Hier das Script:


<?
$outtemp = GetValueFormatted(33952 /*[Draußen\Klima\Temperatur]*/); 
$outtemp = str_replace('.',',',$outtemp);
$Wochentage_Array = array(1=>"Montag",2=>"Dienstag",3=>"Mittwoch",4=>"Donnerstag",5=>"Freitag",6=>"Samstag",0=>"Sonntag");
$Wochentag_Heute = date ("w");
$Wochentag = $Wochentage_Array[$Wochentag_Heute];
//$time = date;
SNS_PlayFiles(16606 /*[Sonos_neu\Küche]*/,array(IVNTTS_saveMP3(53149 /*[Ivona]*/,"Guten Morgen! Heute ist ".$Wochentag.",die aktuelle Außentemperatur beträgt ".$outtemp)));
?>

$time = date; musste ich ausklammern, da direkt eine Fehlermeldung kam. Nun generiert er zwar das File und legt es ab, jedoch bekomme ich folgende Rückmeldung:


Warning:  Missing argument 3 for SNS_PlayFiles(), called in /var/lib/symcon/scripts/39806.ips.php on line 8 and defined in /var/lib/symcon/scripts/__generated.inc.php on line 213

Notice:  Undefined variable: volumeChange in /var/lib/symcon/scripts/__generated.inc.php on line 217

Fatal error:  Uncaught exception 'Exception' with message 'File (/home/pi/ivona/d0394857819a9550b214cb79b0854043.mp3) has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3)' in /var/lib/symcon/modules/SymconSonos/Sonos/module.php:433
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(217): Sonos->PlayFiles(Array, NULL)
#1 /var/lib/symcon/scripts/39806.ips.php(8): SNS_PlayFiles(16606, Array)
#2 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/module.php on line 433
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'File (/home/pi/ivona/d0394857819a9550b214cb79b0854043.mp3) has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3)' in /var/lib/symcon/modules/SymconSonos/Sonos/module.php:433
Stack trace:
#0 /var/lib/symcon/scripts/__generated.inc.php(217): Sonos->PlayFiles(Array, NULL)
#1 /var/lib/symcon/scripts/39806.ips.php(8): SNS_PlayFiles(16606, Array)
#2 {main}
  thrown
   Error in Script /var/lib/symcon/modules/SymconSonos/Sonos/module.php on Line 433

Entsprechende SMB Freigabe auf dem Raspi besteht. Wie gesagt, per Sonos App kann ich ebenfalls ohne Probleme auf die erstellte File zugreifen

Viele Grüße

Flo

Hallo!
Also unter IPS 4 konnte ich mein Script nun etwas vereinfachen dank der strftime Funktion. Damit solltest du dann auch den deutschen Monat bekommen.
Hier mal im Kern wie das aussehen kann:


$outtemp = GetValueFormatted(30353); //Temperatur-Variable
$weekday = strftime("%A"); //ausgeschriebener Name des Wochentages
$date = strftime("%e. %B"); // Datum mit Monat z.B. "1. März"


	IVNTTS_saveMP3(42182 /*[Media\Text to Speech - Ivona\Ivona TTS]*/,"Guten Morgen! Heute ist ".$weekday." der ".$date.", die aktuelle Außentemperatur beträgt ".$outtemp."");

Bei dem Songs Problem kann ich dir leider nicht weiterhelfen, bei mir erfolgt die Ausgabe über direkt über Kommandozeile.

kann ja sein, dass Du eine SMB Freigabe hast, aber der Pfad „/home/pi/ivona/d0394857819a9550b214cb79b0854043.mp3“ ist kein SMB Pfad.
Es sollte so etwas wie „//server.name/path/to/d0394857819a9550b214cb79b0854043.mp3“ sein.
Es sieht stark danach aus, als müsstest Du den „AccessPath“ in der Ivona Konfiguration noch pflegen…

Gruß,
Thorsten

Ok. Lag am Pfad. Danke! Das Sonos Problem wäre dann gelöst aber leider noch nicht die Formatierung bzw. die Aussprache.

@Christian: wenn ich dein neues Script nutze, hört sich das ganze so an (leider immer noch auf englisch und das Komma wird nicht ausgeprochen):

https://www.dropbox.com/s/68n3yziivwz4g7q/fb223cde729dac5a00c5e8e6585465cb.mp3?dl=0

Kann mir einer sagen was das hier zu bedeuten hat? Gestern hat Ivona schon funktioniert!

Fatal error:  Uncaught exception 'Exception' with message 'Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)' in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php:525
Stack trace:
#0 /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php(282): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'Pause', Array)
#1 /var/lib/symcon/modules/SymconSonos/Sonos/module.php(407): SonosAccess->Pause()
#2 /var/lib/symcon/scripts/__generated.inc.php(217): Sonos->PlayFiles(Array, 30)
#3 /var/lib/symcon/scripts/19034.ips.php(9): SNS_PlayFiles(27869, Array, 30)
#4 {main}
  thrown in /var/lib/symcon/modules/SymconSonos/Sonos/sonosAccess.php on line 525

Hallo,

Du solltest Dich schrittweise Deinem Problem nähern.

Schau doch zunächst mal, dass Du einen String erzeugst, den Du dann im zweiten Schritt in einen gesprochen Text umwandeln lässt.

Nimm auf jeden Fall strftime anstelle von date. Denn Date ist immer englisch (wenn ich es richtig verstanden habe).

Und strftime reagiert auf Deine verwendete Locale (LANG). Die kannst Du Dir mit „print system(„env“);“ anzeigen lassen. Ich würde Bei Dir jetzt etwas wie en_EN.UTF-8 erwarten. Das kannst Du dann auf dem Betriebssystem für den user root umstellen. Ich habe „de_DE.UTF-8“ und damit bekomme ich alles wunderbar auch Deutsch.

Gruß,
Thorsten

Hallo,

das ist eher ein Sonos Problem.
Invalid Transition bedeutet, Du willst Pause machen, obwohl nichts mehr spielt…
Aber eigentlich kann das kaum vorkommen:


...
 $transportInfo      = $sonos->GetTransportInfo();
        $isGroupCoordinator = @GetValueBoolean($this->GetIDForIdent("Coordinator"));
        if($isGroupCoordinator){
          $volume = GetValueInteger($this->GetIDForIdent("GroupVolume"));
        }else{
          $volume = GetValueInteger($this->GetIDForIdent("Volume"));
        }

        //adjust volume if needed
        if($volumeChange != 0){
          // pause if playing
          if($transportInfo==1) $sonos->Pause();
...

Das kann nur passieren, wenn zwischen der ersten und der letzten Zeile die Box plötzlich nicht mehr spielt…

Kommt das häufiger vor?

Gruß,
Thorsten

Hi Thorsten,

die LOCALE ist bei mir ebenfalls auf de_DE.UTF-8

Screenshot at März 08 11-46-22.png

Ausgabe jedoch immer noch auf englisch.

Mach doch erst mal wie Thorsten gesagt hat, die Augabe in Textform:


$weekday = strftime("%A");
$date = strftime("%e. %B");

echo ("$weekday"),("$date");

Dienstag 8. März

Was kommt da bei dir?

Und was sagt der pi bei:


pi@IPSymcon-Pi:~ $ date
Di 8. Mär 12:15:16 CET 2016

Das ist die Ausgabe des Strings:

Tuesday 8. March

Und das die meines PI´s

pi@raspberrypi ~ $ date
Di 8. Mär 12:18:00 CET 2016

Ich habe nach der umstellung der LOCALE IPS und den Rapsi auch neu gestartet. Noch eine Idee was ich tun kann?

Verrückt, dein System steht richtig, aber IPS anscheinend nicht :confused:

Hallo,

ACHTUNG!

„pi@raspberrypi“ bedeutet, dass Du mit dem Benutzer pi angemeldet bist, nicht mit root!

Führ das mal mit root aus (z.B. über „sudo“ oder vorher ein „su -“), denn IPS läuft als root und jeder Benutzer hat sein eigenes environment!

Gruß,
Thorsten

DANKE!!

Das war es. Die LOCALE im root umstellen :slight_smile:

Läuft jetzt alles.

Tag gerettet von euch beiden :slight_smile:

Flo

Ja momentan kommt das total häufig vor. Ich starte mal IPS neu, vielleicht liegt da drin der Fehler.

EDIT: ändert sich nichts