Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Masterfunk

Zitat von: SVLoneStar am 10 Oktober 2015, 12:44:32
Hallo - ich habe seit 2-3 Tagen das Problem mit der 503 Meldung bei Google Speech. Version von Sonos.pm ist die vom 2.8., die Erweiterung der URL scheint im Modul drin zu sein. Neues Problem bei Google oder alleiniges Problem bei mir...? Danke!

Habe das Problem auch wieder seit heute.
Gestern Nacht hat mir Sonos noch eine Gute Nacht gewünscht, heute schweigt es...

Gruß Detlef

SVLoneStar

Hallo - neuer Fehler bei 'Speak' mit Google TTS (404 statt 503):
SONOS1: Load Google generated MP3 (1. Element) from "http://translate.google.com/translate_tts?tl=20&client=t&prev=input&q=%20sepp" to "/mnt/SonosSpeak/RINCON_5CAAFD22CADC01400_MR_Speak_df85485fe016bd220f6d87485dbab7c3c4bfc243.mp31"
SONOS1: MP3 Download-Error: 404 Not Found


Schaut für mich so aus, als hätte Google die Aufforderung zut TTS-Konvertierung akzeptiert, dann aber kein File zum Download erstellt.
Ich werde mit jetzt wohl mal espeak anschauen...evtl. auch Cepstral, soll laut justme1968 ja auch ganz gut sein.
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors

justme1968

zur zeit verwende ich voicerss. bei bis 350 requests ist der key kostenlos.

ich hab den google aufruf in 00_SONOS.pm durch den folgenden ersetzt:my $url = 'http://api.voicerss.org/?key=xxxxx&hl=de-de&f=16khz_8bit_mono&src='.uri_escape($text);

irgendwo gibt es noch ein problem mit den umlauten. per wget geht es per uri_escape noch nicht. ich vermute da gibt es noch ein encoding problem. ansonsten funktioniert es bist jetzt recht gut.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

SVLoneStar

#2133
Hallo Andre,
habe das gerade mal ausprobiert.....gibt noch Probleme bei der Wiedergabe (klappt manchmal, aber nicht immer), schaut aber erstmal gut aus - besten Dank für den Tip!

Edit:
Hmmm...seltsam.
Im Log erhalte ich

2015.10.11 00:00:55 3: SONOS4: Load Google generated MP3 (1. Element) from "http://translate.google.com/translate_tts?tl=geht&client=t&prev=input&q=%20das%20nicht" to "/mnt/SonosSpeak/RINCON_5CAAFD22CADC01400_MR_Speak_183c9ea3bbc2f95b1a31acf61fbe61a1c22666d6.mp31"
2015.10.11 00:00:56 1: SONOS4: MP3 Download-Error: 503 Service Unavailable


Im 00_SONOS.pm steht in den Teilen 3936 bis 3938:

#my $url = 'http://translate.google.com/translate_tts?tl='.SONOS_URI_Escape(lc($language)).'&client=t&prev=input&q='.SONOS_URI_Escape($text);
#my $url = sprintf($SONOS_GOOGLETRANSLATOR_URL, SONOS_URI_Escape(lc($language)), SONOS_URI_Escape($text));
my $url = 'http://api.voicerss.org/?key=<key>&hl=de-de&f=16khz_8bit_mono&src='.uri_escape($text);

Wie gibt's das? Hast Du evtl. noch an anderer Stelle was geändert?
Reload, Reboot habe ich gemacht.
Der zu sprechende Text war 'Warum geht das nicht'...daher wohl die seltsamen Parameter beim Aufruf von Google Translate...interpretiert als <Lautstaerke> <Sprache> <Text>
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors

Reinerlein

Hi SVLoneStar,

du musst die Parameter-Übergabe anders machen. Ich verwende sprintf für das Ersetzen der Parameter, was bedeutet, dass du ein "%1$s" für die Sprachangabe und ein "%2$s" für den URL-Encodierten Text angeben musst.

In deinem Fall also

my $url = 'http://api.voicerss.org/?key=$$$$$$$$$&hl=%1$s&f=16khz_8bit_mono&src=%2$s';
Natürlich musst du "$$$$$$$$$" noch durch deinen Schlüssel für VoiceRSS ersetzen...

Damit musst du dann deinen Speak-Aufruf so schreiben:

set Sonos_Wohnzimmer Speak 15 de-de Dies ist ein Test


Ich bin auch gerade dabei, dass man zusätzlich zu einem lokalen Programm andere URLs definieren kann. Das wird aber im Ergebnis auf das gleiche hinauslaufen:
Man definiert die URL wie oben (mit den beiden Platzhaltern), und dann wird der Aufruf entsprechend durchgeführt...

Grüße
Reiner

P.S.: In deinem ersten Log hast du einen Speak-Aufruf ohne Sprach und/oder Lautstärke-Angabe durchgeführt. Da verschieben sich dann die Parameter, und es gibt eine Fehlermeldung, dass ein bestimmtes Wort nicht als Lautstärke gesetzt werden konnte :)

SVLoneStar

#2135
Hallo Reiner - vielen Dank, kann ich leider erst heute Abend ausprobieren.
Was mich eben wundert, ist, dass trotz des Auskommentieren des Google-Codes und meines falschen VoiceRSS-Codes in der 00_SONOS.pm Ansagen mit 'Speak' kommen und Fehlermeldungen von Google Translate im Log zu sehen sind. Cache?!


Sent from my iPhone using Tapatalk
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors

Reinerlein

Hi SVLoneStar,

du musst in der aktuellen Version natürlich die Variable "$SONOS_GOOGLETRANSLATOR_URL" (irgendwo bei Zeile 240) anpassen. Diese Variable wird zum Aufruf verwendet...

Das hatte ich geändert, als es die ersten Probleme mit Google gab...

Grüße
Reiner

Loredo

Wäre es möglich auf den Speak-Setter mit einem entsprechenden Errorlevel zu antworten, falls es einen Fehler bei der Ausführung des Befehls gab?
Hintergrund: Ich möchte über meine msg-Befehlserweiterung gerne entsprechend auf eine alternative Benachrichtigungsmethode zurückfallen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

SVLoneStar

Hallo Reiner,
ich hab's hingekriegt...Danke für Deine Hilfe und das Modul!  :D

Gruß,
Stefan
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors

viegener

Zitat von: Reinerlein am 25 September 2015, 21:42:26
@viegener: Du kannst das Attribut "ignoredIPs" setzen, und dort die IP-Adresse des fragwürdigen Geräts eintragen. Damit wird dieses Device dann ignoriert...

Grüße
Reiner

Hallo Reiner,
ich komme erst jetzt dazu mich zurückzumelden. Danke für den Hinweis. Der Eintrag von ignoredIPs hat die Meldungen gelöst.
Vielleicht wäre es gut noch einen Kommentar in der Doku aufzunehmen, da ich meine Meldungen nicht mit dem UPnP-Modul in Verbindung gebracht habe, dass in der Attributbeschreibung beschrieben wird:

Irgendwas wie:

Zitat
Use this attribute with specific IP addresses to avoid log entries showing UPnP or other errors with specific IP addresses that are not SONOS devices.
Example:
Loading device description failed with error: 500 Can't connect to 192.168.2.29:2869 (timeout) at ./FHEM/00_SONOS.pm ...


Und natürlich Danke für die vorzügliche Arbeit in Deinem Modul!!!

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Reinerlein

Hallo zusammen,

@SVLoneStar: Schön, dass es geht :)

@Loredo: Eine direkte Rückgabe geht nicht, da das alles asnychron abläuft, damit Fhem nicht belästigt wird.
Was du aber machen kannst, ist auf das Reading "LastActionResult" zu triggern. Da sollte eigentlich eine entsprechende Rückmeldung kommen...

Grüße
Reiner

Loredo

#2141
Zitat von: Reinerlein am 11 Oktober 2015, 19:32:40
@Loredo: Eine direkte Rückgabe geht nicht, da das alles asnychron abläuft, damit Fhem nicht belästigt wird.
Was du aber machen kannst, ist auf das Reading "LastActionResult" zu triggern. Da sollte eigentlich eine entsprechende Rückmeldung kommen...


Nee das funktioniert nicht, die Routing Entscheidung ist in Realtime. :-/






Edit: in LastActionResult steht auch nicht drin, dass Google einen 503er Fehler zurückgegeben hat. Das findet sich nur im Logfile.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Reinerlein

Hi Loredo,

eigentlich sollte dort eine dem Log entsprechende Meldung drinstehen; sowas wie "Speak0: MP3-Creation ERROR during downloading: 503 Service Unavailable"...

Es kann nur sein, dass bereits kurz danach eine neue Meldung in das Reading reingeschrieben wird. Das kannst du dann nur feststellen, indem du mal ein Logfile mit LastActionResult vollschreiben lässt...
Wenn das nicht dort landen sollte, dann muss ich mir diesen Meldeweg nochmal anschauen.

Grüße
Reiner

andre07

Bei meinen Sonsos habe ich das Problem wenn er vom Strom getrennt wird (was über Nacht passiert) er über fhem nicht mehr ansprechbar ist
Erst wenn ich händisch disable 1 0 funktioniert es wieder.
Gibt es dafür eine andere lösung?
Andre

Reinerlein

Hallo Andre,

wenn er aus ist, kannst du ihn auch nicht steuern :)
Sorry... das konnte ich mir nicht verkneifen  ;D

Aber zum Thema: Das Modul erkennt einen abwesenden Player mithilfe eines Ping-Checks. Dieser kann auf verschiedene Arten ausgeführt werden (konfigurierbar über das Attribut pingType).
Wenn bei dieser Prüfung/Erkennung etwas schiefgeht, steht das im Log (dazu verbose am Sonos-Device ruhig auf 5 stellen). Danach kann man handeln und mit dem Attribut spielen...

Grüße
Reiner