Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

    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

    Kommentar


      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

      Kommentar


        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

        Kommentar


          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
          Sonos

          Kommentar


            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

            Kommentar


              '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
              sigpic
              Christian Huck
              Tel.: 089 / 122 80 995
              Email: mail@homeintelligence.de
              Web: www.homeintelligence.de

              Kommentar


                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"
                sigpic
                Christian Huck
                Tel.: 089 / 122 80 995
                Email: mail@homeintelligence.de
                Web: www.homeintelligence.de

                Kommentar


                  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: ""
                  sigpic
                  Christian Huck
                  Tel.: 089 / 122 80 995
                  Email: mail@homeintelligence.de
                  Web: www.homeintelligence.de

                  Kommentar


                    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.
                    sigpic
                    Christian Huck
                    Tel.: 089 / 122 80 995
                    Email: mail@homeintelligence.de
                    Web: www.homeintelligence.de

                    Kommentar


                      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.
                      sigpic
                      Christian Huck
                      Tel.: 089 / 122 80 995
                      Email: mail@homeintelligence.de
                      Web: www.homeintelligence.de

                      Kommentar


                        Google TTS

                        Google TTS geht ! Suuuupergeil....

                        Ich bin happy...

                        sigpic
                        Christian Huck
                        Tel.: 089 / 122 80 995
                        Email: mail@homeintelligence.de
                        Web: www.homeintelligence.de

                        Kommentar


                          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.
                          sigpic
                          Christian Huck
                          Tel.: 089 / 122 80 995
                          Email: mail@homeintelligence.de
                          Web: www.homeintelligence.de

                          Kommentar


                            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
                            Sonos

                            Kommentar


                              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
                              Sonos

                              Kommentar


                                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
                                Sonos

                                Kommentar

                                Lädt...
                                X