Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

  • pfischi
    antwortet
    Zitat von hoggle Beitrag anzeigen
    Hallo Stefan,

    könntest Du bitte die Stelle anpassen:
    Code:
        try:
            response = requests.get(url)
            if response and response.status_code == 200:
                with open(abs_fname, 'wb') as file:
                    file.write(response.content)
                [B][COLOR=red]os.chmod(abs_fname, 0o660)[/COLOR][/B]
                return fname
            else:
                raise requests.RequestException('Status code: {}'.format(response.status_code))
        except requests.RequestException as e:
            raise ("Couldn't obtain TTS from Google.\nError: {}".format(e.errno))
    Danke Dir.
    So, ich habe das gleich mal in den Dev-Zweig aufgenommen. Ein neues Release gibts noch nicht. Aber natürlich kann man jederzeit per 'git die aktuelle Entwicklerversion downloaden. Nochmal ein dickes Danke an @hoggle.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von duennsch Beitrag anzeigen
    Hallo Stefan,

    meine html-Seite sieht so aus:

    Code:
    {% extends "rooms.html" %}
    
    {% block content %}
    
        <h1><img class="icon" src='{{ icon0 }}scene_bathroom.png' />Multimedia</h1>
    
            <div class="block">
            <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false">
                    <h3>Sonos</h3>
                                {% import "sonos.html" as sonos %}
                                {{ sonos.music('Play3_Sonos', 'Sonos.play', 'Sonos.stop', 'Sonos.previous', 'Sonos.next', 'Sonos.volume_up', 'Sonos.volume_down', 'Sonos.volume', 'Sonos.mute', 'Sonos.track_album_art', 'Sonos.track_artist', 'Sonos.track_title') }}
    
                </div>
            </div>
        </div>
    
    {% endblock %}
    Das Item im CLI so:
    Code:
    Sonos.track_album_art = http://192.168.1.110:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a1ZMODMeLK5x6W8r8jsmmgX%3fsid%3d9%26flags%3d32
    und das ganze sieht dann wie im Anhang aus.

    Grüße

    Sven
    Hm, sieht alles erstmal soweit in Ordnung aus. Da müssen wir uns mal rantasten.

    1. Bleibt das Albumcover auch bei Radio, Musiktiteln von lokaler Freigabe verschwunden?
    2. Welche Versionen von Smarthome.py und SmartVisu setzt du ein?
    3. Ich brauch vorallem den Quelltext der generierten Seite. Der Code den du gepostet hast, erzeugt ja am Ende den eigentlichen Seitenquelltext.

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von hoggle Beitrag anzeigen
    Ein dickes Lob für dafür dass laufende Musik nach Google TTS Ansagenautomatisches fortgesetzt wird.

    Ich dachte erst das müsste ich selber bauen.
    Ich musste ja bei deinen Posts schmunzeln. Solche Beta-Tester wünscht sich ja jeder Programmierer. Danke auch für deinen Hinweis mit den Rechten, das schaue ich mir mal genauer an.

    Diese Funktionalität mit der Wiederaufnahme des aktuellen Titels hat mich auch sehr viel Nerv gekostet

    Danke und Grüsse,

    Stefan

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    automatisches Fortzsetzen nach Ansage

    Ein dickes Lob für dafür dass laufende Musik nach Google TTS Ansagenautomatisches fortgesetzt wird.

    Ich dachte erst das müsste ich selber bauen.

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    Google TTS

    Google TTS geht ! Suuuupergeil....

    Ich bin happy...

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    code change

    Hallo Stefan,

    könntest Du bitte die Stelle anpassen:
    Code:
        try:
            response = requests.get(url)
            if response and response.status_code == 200:
                with open(abs_fname, 'wb') as file:
                    file.write(response.content)
                [B][COLOR="red"]os.chmod(abs_fname, 0o660)[/COLOR][/B]
                return fname
            else:
                raise requests.RequestException('Status code: {}'.format(response.status_code))
        except requests.RequestException as e:
            raise ("Couldn't obtain TTS from Google.\nError: {}".format(e.errno))
    Danke Dir.

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    Berechtigungsproblem

    o.k. wieder einen Fortschritt: Es ist ein Berechtigungsproblem des Orders für die Sound-Dateien. Der Webserver läuft mit einen anderen User als der Broker bzw. smarthome.py. Da sollte der Broker beim Anlegen des Soundfiles Leseberechtigungen für die Gruppe setzen.

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    play_tts schweigt

    also jetzt bin ich wieder einen Schritt weiter...

    Der Broker funktioniert jetzt offensichtlich, da ich in meinem konfiguriertem SMB-Share die MP3 Datei liegen habe. Ist auch das drin was an die API übergeben wurde.

    Allerdings schweigt der Lautsprecher noch.

    Im sh.py log finde ich folgende Meldungen:

    2014-08-02 14:12:52 INFO alarm_armed_disarmed_notify Sonos: Message 192.168.0.87:12900 speaker/rincon_000e5877b6a201400/volume/25 successfully sent - 200 OK
    2014-08-02 14:12:52 INFO alarm_armed_disarmed_notify Sonos: Message 192.168.0.87:12900 speaker/rincon_000e5877b6a201400/play_tts/Alarm+aktiviert/de/-1 successfully sent - 200 OK
    Im broker Log steht folgendes:

    2014-08-02 14:12:52 WARNING Thread-103 Could not handle track info: ""

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    keine Antwort von Google TTS

    so das Problem habe ich selber gelöst. Der Browser hat wohl versucht beim Sonos Broker das favicon anzufragen. Mit curl und wget gehts.

    Dennoch funktioniert tts nicht.

    Beim Senden der TTS Anfrage an den Broker:

    ttp://fileserver.huckmuc.lan:12900/speaker/rincon_000e5877b6a201400/play_tts/Hallo/de100
    erscheint folgende Meldung im Debug-LOG:

    2014-08-02 13:24:08 INFO Thread-74 Starting new HTTP connection (1): translate.google.com
    Danach passiert dann nichts mehr in diesem Thread.

    Wenn ich den google tts service direkt von dieser Maschine teste erhalte ich umgehend ein MP3:

    curl -A "Firefox" -o test.mp3 "http://translate.google.com/translate_tts?tl=de&q=hallo"

    Einen Kommentar schreiben:


  • hoggle
    antwortet
    'Command' object has no attribute 'favicon.ico'

    Hallo,

    ich hab jetzt nochmal einen Anlauf unternommen und stolpere beim Nutzen von Google TTS über folgendes Problem:

    Danach sehe ich im Debug-Mode folgende Ausgabe:

    Code:
    2014-08-02 12:27:39,119 DEBUG    Thread-23    arguments: rincon_000e58a910a801400, hallo, de20 | ip: 192.168.0.114 -- sonos_commands.py:speaker_play_tts:178
    192.168.0.114 - - [02/Aug/2014 12:27:39] "GET /speaker/rincon_000e58a910a801400/play_tts/hallo/de20 HTTP/1.1" 200 -
    2014-08-02 12:27:39,161 INFO     Thread-25    Starting new HTTP connection (1): translate.google.com -- connectionpool.py:_new_conn:171
    2014-08-02 12:27:39,195 ERROR    Thread-24    'Command' object has no attribute 'favicon.ico' -- sonos_commands.py:do_work:44
    192.168.0.114 - - [02/Aug/2014 12:27:39] "GET /favicon.ico HTTP/1.1" 400 -
    2014-08-02 12:27:39,255 DEBUG    Thread-25    "GET /translate_tts?ie=UTF-8&tl=de20&q=hallo HTTP/1.1" 404 0 -- connectionpool.py:_make_request:344
    Exception in thread Thread-25:
    Traceback (most recent call last):
      File "/opt/sonos/server.sonos/lib_sonos/utils.py", line 136, in save_google_tts
        raise requests.RequestException('Status code: {}'.format(response.status_code))
    requests.exceptions.RequestException: Status code: 404
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
        self.run()
      File "/usr/lib/python3.2/threading.py", line 693, in run
        self._target(*self._args, **self._kwargs)
      File "/opt/sonos/server.sonos/lib_sonos/sonos_speaker.py", line 672, in _play_tts_thread
        raise err
      File "/opt/sonos/server.sonos/lib_sonos/sonos_speaker.py", line 663, in _play_tts_thread
        fname = utils.save_google_tts(local_share, tts, language, quota)
      File "/opt/sonos/server.sonos/lib_sonos/utils.py", line 138, in save_google_tts
        raise ("Couldn't obtain TTS from Google.\nError: {}".format(e.errno))
    TypeError: exceptions must derive from BaseException
    
    ^C2014-08-02 12:27:40,481 DEBUG    MainThread   unsubscribing from sonos speakers ... -- sonos_broker:stop:238
    2014-08-02 12:27:40,512 INFO     MainThread   Starting new HTTP connection (1): 192.168.0.117 -- connectionpool.py:_new_conn:171
    2014-08-02 12:27:40,529 DEBUG    MainThread   "UNSUBSCRIBE /ZoneGroupTopology/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:344
    2014-08-02 12:27:40,539 DEBUG    MainThread   Unsubscribed from http://192.168.0.117:1400/ZoneGroupTopology/Event, sid: uuid:RINCON_B8E93752A4E001400_sub0000002367 -- events.py:unsubscribe:403
    2014-08-02 12:27:40,569 INFO     MainThread   Starting new HTTP connection (1): 192.168.0.117 -- connectionpool.py:_new_conn:171
    2014-08-02 12:27:40,585 DEBUG    MainThread   "UNSUBSCRIBE /MediaRenderer/AVTransport/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:344
    2014-08-02 12:27:40,595 DEBUG    MainThread   Unsubscribed from http://192.168.0.117:1400/MediaRenderer/AVTransport/Event, sid: uuid:RINCON_B8E93752A4E001400_sub0000002368 -- events.py:unsubscribe:403
    2014-08-02 12:27:40,626 INFO     MainThread   Starting new HTTP connection (1): 192.168.0.117 -- connectionpool.py:_new_conn:171
    2014-08-02 12:27:40,643 DEBUG    MainThread   "UNSUBSCRIBE /MediaRenderer/RenderingControl/Event HTTP/1.1" 200 None -- connectionpool.py:_make_request:344
    2014-08-02 12:27:40,653 DEBUG    MainThread   Unsubscribed from http://192.168.0.117:1400/MediaRenderer/RenderingControl/Event, sid: uuid:RINCON_B8E93752A4E001400_sub0000002369 -- events.py:unsubscribe:403
    Irgendwie scheint er ein favicon zu erhalten(von wem auch immer) mit dem er nichts anzufangen weiss.

    Hat jemand eine Idee ?

    Gruß

    Christian

    Einen Kommentar schreiben:


  • duennsch
    antwortet
    Hallo Stefan,

    meine html-Seite sieht so aus:

    Code:
    {% extends "rooms.html" %}
    
    {% block content %}
    
    	<h1><img class="icon" src='{{ icon0 }}scene_bathroom.png' />Multimedia</h1>
    
            <div class="block">
    		<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
    			<div data-role="collapsible" data-collapsed="false">
    				<h3>Sonos</h3>
    							{% import "sonos.html" as sonos %}
                                {{ sonos.music('Play3_Sonos', 'Sonos.play', 'Sonos.stop', 'Sonos.previous', 'Sonos.next', 'Sonos.volume_up', 'Sonos.volume_down', 'Sonos.volume', 'Sonos.mute', 'Sonos.track_album_art', 'Sonos.track_artist', 'Sonos.track_title') }}
    
    			</div>
    		</div>
    	</div>
    
    {% endblock %}
    Das Item im CLI so:
    Code:
    Sonos.track_album_art = http://192.168.1.110:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a1ZMODMeLK5x6W8r8jsmmgX%3fsid%3d9%26flags%3d32
    und das ganze sieht dann wie im Anhang aus.

    Grüße

    Sven
    Angehängte Dateien

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Zitat von duennsch Beitrag anzeigen
    Was mir dabei auffällt ist, dass in der Anleitung die Dateien widgets.js und widget_min.js heissen sollen. Diese gibts bei mir aber nicht!!
    Du hast natürlich recht, die Dateien heissen widget.js und widget.min.js. Ich habe es in der Anleitung geändert.

    Und bitte poste oder schicke mir deine komplette html-Seite, in der das Sonos-Widget integriert ist.


    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • duennsch
    antwortet
    Zitat von Bit-te Beitrag anzeigen
    wenn das in deinem echten Item auch so ist, dann könnte es an deinem Rechtschreibfehler ganz oben im Item liegen Sonso anstatt Sonos.
    Hab das oben geändert. War von mir händisch eingetragen und da wollten meine Finger wohl nicht so wie mein Kopf. Das Item heißt [Sonos][[....]].

    Bin auch gestern nochmal alles durchgegangen und hab nichts gefunden. Kenn mich aber auch nich wirklich aus und kopier mir nur alles zusammen.
    Hab mir aber mal die Seite in so einem komischen Entwicklermodus angesehen und hab festgestellt, dass dieses trans.png dargestellt wird.
    Wenn ich das richtig verstanden habe, wird dieses ja eingebunden, wenn kein anderes cover vorliegt.
    Vielleicht hilft das den Profis weiter.

    Grüße und einen schönen Tag

    Sven

    Einen Kommentar schreiben:


  • Bit-te
    antwortet
    Hallo,

    wenn das in deinem echten Item auch so ist, dann könnte es an deinem Rechtschreibfehler ganz oben im Item liegen Sonso anstatt Sonos.

    Da wird deine Item wohl nicht gefunden werden können.

    Gruß
    Wolfgang

    Einen Kommentar schreiben:


  • duennsch
    antwortet
    Zitat von pfischi Beitrag anzeigen
    bitte sende mir mal deine Konfig-Datei(en), wo du das Widget in Smarthome.py einbindest.
    habe in die Datei /var/www/smartvisu/widgets/widget.js und widget.min.js folgendes eingetragen:

    Code:
    //------Sonos---------
     
    $(document).delegate('[data-widget="sonos.music"]',{update:function(e,r){if (r.toString()){document.getElementById(this.id).src=r.toString()+'?_='+new Date().getTime();}else{document.getElementById(this.id).src="pages/base/pics/trans.png";}}});
    Was mir dabei auffällt ist, dass in der Anleitung die Dateien widgets.js und widget_min.js heissen sollen. Diese gibts bei mir aber nicht!!

    In meinem html.file sieht das wie folgt aus:

    Code:
    div class="block" style="width:100%">
            <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                <div data-role="collapsible" data-collapsed="false">
                    <h3>Sonos Esszimmer</h3>
                    <table width=100%>
                        <tr>
                            <td align=left>
                                {% import "sonos.html" as sonos %}                           
                                {{ sonos.music('Play3_Kueche', 'Sonos.play', 'Sonos.stop', 'Sonos.previous', 'Sonos.next', 'Sonos.volume_up', 'Sonos.volume_down', 'Sonos.volume', 'Sonos.mute', 'Sonos.track_album_art', 'Sonos.track_artist', 'Sonos.track_title') }}
                            </td>
                        </tr>
                    </table>
     
                </div>
            </div>
        </div>
    Im Itemsverzeichnis habe ich eine sonos.conf angelegt. Das Item ist wie folgt definiert:

    Code:
    [Sonos]
    [[track_album_art]]
        type = str
        visu_acl = rw
        sonos_recv = track_album_art
    Zitat von pfischi Beitrag anzeigen
    Funktionieren die anderen Buttons wie Play, Pause etc. ?
    Alle anderen Steuerelemente funktionieren.

    Falls noch weitere Angaben benötigt werden, werde ich mein Bestes versuchen, diese mit meinem Linux-Halbwissen bereitzustellen.

    Danke und Grüße

    Sven

    Einen Kommentar schreiben:

Lädt...
X