Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pfischi
    antwortet
    dafra

    Den Fehler habe ich gefunden. Es handelt sich um einen Endlos-Timeout, den ich noch nicht abfange. Wird gefixt.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Ok, hier nochmal ein frischer log mit der oben angehängten Konfig. Bei 2017-01-20 23:27:28,459 stand der log, als ich den Befehl aus dem sonos-cmd losgefeuert habe.

    Musik lief, mit dem Absetzen des TTS Befehls ist der Broker aus meiner Sicht gecrasht: Das TTS-MP3 sollte wohl abgespielt werden (Titelanzeige im Widget wechselt auf (kryptischen) MP3 Namen, Logo weg,...), aber es ist nichts zu hören, die Musik kommt dauerhaft nicht mehr hoch, das sonos-cmd reagiert nicht mehr auf Eingaben:
    Code:
    sonos-cmd
    Connecting to Sonos broker ... done!
    
    Welcome to Sonos Broker console!
    =>> update
    =>> speaker 1
    
    rincon_b8e937eb649001400 =>> play_tts
    tts (max 100 chars)         []:test
    snippet volume (-1-100)   [-1]:20
    fade in (0|1)              [0]:0
    language (en|de|es|fr|it) [de]:de
    group command (0|1)        [0]:0
    play_tts
    hallo?
    .. und das Widget ist auch tot. Ich komme aus der Nummer nur mit 2x ctrl+c raus:
    Code:
    192.168.32.3 - - [20/Jan/2017 23:41:28] "POST / HTTP/1.1" 200 -
    2017-01-20 23:41:28,320 DEBUG    Thread-78    Server response -- status: True -- response:  -- sonos_service.py:do_POST:107
    ^C2017-01-20 23:41:43,519 DEBUG    MainThread   Shutting down Sonos Broker ... -- sonos-broker:stop:244
    2017-01-20 23:41:43,520 DEBUG    MainThread   unsubscribing from sonos speakers ... -- sonos-broker:stop:245
    ^C2017-01-20 23:41:48,863 DEBUG    MainThread   Shutting down Sonos Broker ... -- sonos-broker:stop:244
    2017-01-20 23:41:48,864 DEBUG    MainThread   unsubscribing from sonos speakers ... -- sonos-broker:stop:245
    Exception ignored in: <module 'threading' from '/usr/lib/python3.5/threading.py'>
    Traceback (most recent call last):
      File "/usr/lib/python3.5/threading.py", line 1288, in _shutdown
        t.join()
      File "/usr/lib/python3.5/threading.py", line 1054, in join
        self._wait_for_tstate_lock()
      File "/usr/lib/python3.5/threading.py", line 1070, in _wait_for_tstate_lock
        elif lock.acquire(block, timeout):
      File "/usr/local/bin/sonos-broker", line 249, in stop
        exit()
      File "/usr/lib/python3.5/_sitebuiltins.py", line 26, in __call__
        raise SystemExit(code)
    SystemExit: None
    2017-01-20 23:41:48,875 INFO     MainThread   Starting new HTTP connection (1): 192.168.33.34 -- connectionpool.py:_new_conn:208
    2017-01-20 23:41:48,880 DEBUG    MainThread   "UNSUBSCRIBE /AlarmClock/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:388
    2017-01-20 23:41:48,884 INFO     MainThread   Unsubscribed from http://192.168.33.34:1400/AlarmClock/Event, sid: uuid:RINCON_B8E937EB649001400_sub0000003642 -- events.py:unsubscribe:583
    2017-01-20 23:41:48,892 INFO     MainThread   Starting new HTTP connection (1): 192.168.33.34 -- connectionpool.py:_new_conn:208
    2017-01-20 23:41:48,896 DEBUG    MainThread   "UNSUBSCRIBE /MediaRenderer/RenderingControl/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:388
    2017-01-20 23:41:48,898 INFO     MainThread   Unsubscribed from http://192.168.33.34:1400/MediaRenderer/RenderingControl/Event, sid: uuid:RINCON_B8E937EB649001400_sub0000003641 -- events.py:unsubscribe:583
    2017-01-20 23:41:48,905 INFO     MainThread   Starting new HTTP connection (1): 192.168.33.34 -- connectionpool.py:_new_conn:208
    2017-01-20 23:41:48,910 DEBUG    MainThread   "UNSUBSCRIBE /MediaRenderer/AVTransport/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:388
    2017-01-20 23:41:48,913 INFO     MainThread   Unsubscribed from http://192.168.33.34:1400/MediaRenderer/AVTransport/Event, sid: uuid:RINCON_B8E937EB649001400_sub0000003640 -- events.py:unsubscribe:583
    2017-01-20 23:41:48,918 INFO     MainThread   Starting new HTTP connection (1): 192.168.33.34 -- connectionpool.py:_new_conn:208
    2017-01-20 23:41:48,922 DEBUG    MainThread   "UNSUBSCRIBE /ZoneGroupTopology/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:388
    2017-01-20 23:41:48,924 INFO     MainThread   Unsubscribed from http://192.168.33.34:1400/ZoneGroupTopology/Event, sid: uuid:RINCON_B8E937EB649001400_sub0000003639 -- events.py:unsubscribe:583
    Gruß, Daniel
    Angehängte Dateien

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Also im Log sehe ich keinen Crash
    Ok, ich wiederhole den Versuch und poste das Ergebnis.

    Nur für mich nochmal zur Verständnis: mit welchen Einstellungen bzw. Vorgehen funktioniert TTS bei dir?
    Siehe Anhang: Ich habe die URL umgestellt.


    Eine Möglichkeit nach der internen Umstellung wäre auch, das Abspeichern der Dateien komplett wegzulassen und den Stream direkt von Google abzuspielen. Nachteil: bisher werden ja Ansagen gespeichert und wiederverwendet ohne jedesmal Google abzufragen. Und es gibt glaube ich eine Beschränkung für die Anfragen. Vorteil wäre, ich könnte auf den ganzen Server-Overheat verzichten, der Code wird einfacher und TTS könnte eigentlich per default an sein. Ich tendiere fast zu 2.
    Ich bin auch immer ein Fan von einfachen Lösungen. Allerdings wäre mir wichtig, dass auch im Falle eines Internetausfalls mein Smart-Home noch möglichst gut funktioniert. Daher würde ich es bevorzugen, die bisherige Lösung zu behalten.
    Auch wenn es aus Coding Sicht nicht einfacher wird: Gehen auch beide Lösungen parallel? Default mäßig ist der Online-TTS aktiv, wenn man entsprechend konfiguriert, der "offline" TTS?

    Gruß, Daniel
    Angehängte Dateien

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Also im Log sehe ich keinen Crash. Nur für mich nochmal zur Verständnis: mit welchen Einstellungen bzw. Vorgehen funktioniert TTS bei dir?

    Eine Möglichkeit nach der internen Umstellung wäre auch, das Abspeichern der Dateien komplett wegzulassen und den Stream direkt von Google abzuspielen. Nachteil: bisher werden ja Ansagen gespeichert und wiederverwendet ohne jedesmal Google abzufragen. Und es gibt glaube ich eine Beschränkung für die Anfragen. Vorteil wäre, ich könnte auf den ganzen Server-Overheat verzichten, der Code wird einfacher und TTS könnte eigentlich per default an sein. Ich tendiere fast zu 2.

    Gruss,

    Stefan
    Zuletzt geändert von pfischi; 20.01.2017, 22:48.

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Sollte dein Logfile den Crash beinhalten? Eigentlich sieht das vollkommen normal aus. Noch eine Frage: die mitgelieferte Config ist diejenige, die die Probleme bei dir verursacht hatte
    Öhh, ja, eigentlich schon. Das Konfig file war das, welches bei mir zum Absturz geführt hatte:
    Code:
    Kueche.track_uri = x-rincon-mp3radio://192.168.32.3:12900/ZGVfX3Rlc3QgMQ==.mp3
    war auf meinem System nicht erreichbar.

    Alle Kommentare aus der TTS-Sektion rauszulöschen war übrigens ähnlich erfolgreich (was das chrashen des Systems anging). Müsste im Resulat dann so ausgesehen haben:
    Code:
      
    [google_tts]
    enabled = true
    save_path = /var/www
    server_url = http://<IP meines Systems>:12900
    quota = 200
    Ich hoffe, nicht die falschen Schnipsel zusammenkopiert zu haben, aber eigentlich müsste es passen. Das Abspielen hat übrigens begonnen, die Lautstärke wurde angepasst, der (kryptische) Titel des TTS-MP3s wurde angezeigt, das Logo ging weg,... einzig man konnte nichts hören und die Musik hat auch nicht wieder neu gestartet und das System war weg...

    Gruß, Daniel
    Zuletzt geändert von dafra; 20.01.2017, 22:33.

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    dafra
    Sollte dein Logfile den Crash beinhalten? Eigentlich sieht das vollkommen normal aus. Noch eine Frage: die mitgelieferte Config ist diejenige, die die Probleme bei dir verursacht hatte?

    Die Vorschläge für die Werte in der Konfiguration setze ich um. Ich werde in der Doku und in der Config-Datei selber nochmal klar alle Default-Werte als Kommentar hinzufügen. Bei der IP-Adresse wirds schon etwas schwieriger. Das hatte ich tatsächlich mal drin, hat aber bei einigen zu falschen IP-Adressen geführt, gerade bei mehreren Interfaces. Mal schauen ob ich da was besseres finde.
    Die Abstürze sind natürlich unschön, spontan habe ich eine Stelle gefunden, die nicht ganz sauber den Fehlerfall abfängt. Ich werde meine Installation mal ein wenig stressen

    Gruss,
    Zuletzt geändert von pfischi; 20.01.2017, 22:21.

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Hallo Stefan,

    dein Tempo ist echt beeindruckend. Die gute Nachricht vorweg: TTS funktioniert jetzt :-) Ich habe verschiedene Szenarien probiert, bislang ist mir nichts aufgefallen. Die Tests habe ich aus dem CLI heraus gemacht, d.h. das smarthomeNG plugin scheint auch zu funktionieren.

    Allerdings musste ich etwas kämpfen, bis es tat. Der Grund war eine fehlerhafte Konfiguration im /etc/default/sonos-broker. Dadurch waren die abzuspielenden TTS-MP3s nicht erreichbar. Dabei ist der Broker bei jedem Versuch ein TTS zu starten gecrasht. Schlimmer noch: wenn der Befehl über das Plugin abesetzt wird, crasht smarthomeNG gleich mit. Im Anhang mal wie meine Konfig incl. Report (logging startet mit dem Absetzen des TTS Befehls). Es reicht aber auch im vorhandenen Konfig alle TTS relevanten Befehle einzukommentieren...

    Ober der Server an Port 12900 funktioniert kann ich nicht sagen, da ich ja über den Apache / Port 80 gegangen bin.

    Für die Version 1.0 würde ich mir noch wünschen, dass das Konfig so vorbelegt ist, das man einfach alles einkommentieren kann und dann der TTS out of the box funktioniert (zumindest bei einer halbwegs gewöhnlichen Konfig, aber insbesondere beim Image).
    Wirklich sauber wäre es, wenn man, analog zu den Plugins im smarthomeNG, nur einkommentieren muss, wenn es abweichend vom Default ist. Also wenn man TTS will reicht ein
    Code:
    [google_tts]
    enabled = true
    ... alle anderen Parameter sind optional. Ob es schon so umgesetzt ist kann ich gerade nicht überprüfen, da bei mir der TTS ja chrasht...
    Auch das (notwendige?) händische Eintragen der IP Adresse finde ich einen Stolperstein. Für den Fall localhost / 127.0.0.1 (oder nichts angegeben) könnte man beim Aufstarten des Brokers die eigene IP ermitteln...

    Ich hoffe mal, o.g. Vorschläge sind nicht auf meine Systemkonfig zurückzuführen, sonst wäre es jetzt peinlich...

    Gruß, Daniel
    Angehängte Dateien

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    dafra

    Nochmal danke für deine Test und Anregungen. Das hilft mir ungemein aus der "Betriebsblindheit" rauszukommen
    Ich werde die ganzen Punkte abarbeiten und den Broker noch besser machen.

    Als erstes hab ich mal den kompletten GoogleTTS-Code entrümpelt und das ganze intern komplett neu verarbeitet. HIER gibts die Testversion v1.0b3. Wäre toll wenn du die nochmal ausprobieren kannst. Bei mir sehr stabil. Der Zustand des Lautsprechers wird korrekt auf den Zustand vor dem Abspielen gesetzt. Bin gepannt, ob sich das Verhalten von GoogleTTS bei dir gebessert hat.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Vielen Dank für deinen Report. Wenn ich zu Hause bin schaue ich mir alles an.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Ich habe noch etwas rumgespielt. Den Sonos-Webserver habe ich deaktiviert
    Code:
    [webservice]
    {....}
    #enabled = true
    ... und für google TTS das Verzeichnis auf
    Code:
    [google_tts]
    # Enable Google-Text-To-Speech. Default: false
    enabled = true
    {...}
    save_path = /var/www/html/sonos
    geändert. Ein Apache läuft bei mir wg. der Visu ja sowieso...

    Wenn ich im sonos-cmd ein play_tts absetze, wird die Musik unterbrochen, dann ist nichts zu hören, dann geht die Musik wieder weiter. Die MP3 Datei liegt aber anschließend im spezifizierten Verzeichnis und ist auch von außen, z.B. mit einem Browser, erreichbar. Dann habe ich die URL im Browser kopiert und den Link einem play_snippet vor die Füße geworfen. Gleiches Verhalten. Dann habe ich den Link einem play_url vor die Füße geworfen, was ohne Probleme funktioniert.

    Außerdem ist mir aufgefallen, dass nach den play_snippet die musik nicht unbedingt da weiterspielt, wo sie unterbrochen wurde.

    Gruß, Daniel

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Nachdem jetzt die Installation, die "normale" Wiedergabe und die Einbindung in Smartvisu geht, habe ich mich jetzt mal an TTS rangemacht. Ist ja echt ne geile Nummer :-)

    Da ich bislang das Plugin nicht genutzt habe, schreibe ich an der Stelle einfach mal hin, worüber man als Anfänger so stolpert:
    - es ist nicht so ganz klar, welche der Default-Optionen in der /etc/default/sonos-broker angeben werden müssen und welche optional sind. Meine Erwartungshaltung wäre gewesen, dass wenn ich [google_tts] enabled = true setze, das tts dann funktioniert. Ich musste den Debug Modus bemühen um rauszufinden warum das TTS nicht funktioniert... (Pfad nicht angegeben)
    - mir ist zwar klar welche items ich für TTS in smarthomeNG definieren muss, aber wie kann ich ein TTS Kommando feuern? Passiert das automatisch, sobald sich das Item sonos_send = play_tts ändert bzw. einen neuen Wert draufgeschrieben bekommt?

    => Punkte für die Doku, für die ich dich an dieser Stelle echt mal loben muss. Die Punkte sind nicht als Kritik zu verstehen, sondern als Versuch Stolpersteine aus dem Weg zu räumen und die Akzeptanz für das Plugin zu erhöhen.

    Zum eigentlichen Betha test.
    Da mir der zweite Punkt noch nicht ganz klar ist, habe ich TTS im sonos-cmd ausprobiert:
    Code:
    :/usr/local/bin# sonos-cmd
    Connecting to Sonos broker ... done!
    
    Welcome to Sonos Broker console!
    =>> update
    =>> list
    
    speaker(s):
    -----------
    (1)             rincon_b8e937eb649001400        [192.168.33.34|Küche|Sonos PLAY:1]
    
    
    =>> speaker 1
    
    rincon_b8e937eb649001400 =>> play_tts
    tts (max 100 chars)         []:test
    snippet volume (-1-100)   [-1]:10
    fade in (0|1)              [0]:0
    language (en|de|es|fr|it) [de]:de
    group command (0|1)        [0]:0
    Als ich es ausprobiert habe, wurde gerade nichts abgespielt. Getan hat sich durch das Kommando zwar erstmal nichts, aber kurz darauf hat aber die Musik losgelegt...


    Versuch 2:
    Im Prizip wie zuvor, allerdings hat Musik schon gespielt. Musik wurde angehalten, nichts zu hören, Musik wieder da. Kurz darauf (ich habe keine weiteren Befehle im sonos-cmd abgesetzt) Musik wieder weg und wieder da. Ich habe parallel mitgeloggt, log hängt dran. Ich habe versucht, die relevanten Teile rauszuschneiden, d.h. startet in dem moment als ich das kommando play_tts abgesetzt habe.

    Beobachtungen:
    - mp3s mit Sprache liegen im gewünschen Verzeichnis (/var/www)
    - während der pausen wurde in der smartvisu-oberfläche die Titel der TTS-mp3s angezeigt. Und zwar eines nach dem anderen (hatte mehrer Tests mit unterschiedlichen Strings gemach, d.h. mehrere mp3s vorhanden). Das Albumcover war in dieser Zeit invalid.

    Gruß, Daniel
    Angehängte Dateien

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Jetzt geht's, Danke.

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Hallo Stefan,

    Ich hatte sonos.html in sonos.html.txt umbenannt, da html Dateien wohl verboten sind... Bei mir zeigts die allerdings an. Ich probiere es nochmal als zip.

    Gruß, Daniel
    Angehängte Dateien

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    dafra

    Die Änderungen (Pfad des Scripts und Encoding) sind jetzt im Dev v1.0b2 drin. Danke nochmal für den Support. Kannst du den Anhang mit deinen Widgetänderungen nochmal hochladen? Der fehlt glaube ich bei deinem Post.

    Danke,

    Stefan

    Einen Kommentar schreiben:


  • dafra
    antwortet
    Au ja, irgendwas zum Playlist / Sender (Stream) ändern wäre schön

    Ich lass mich überraschen,

    Daniel

    Einen Kommentar schreiben:

Lädt...
X