Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

    Ich möchte damit nur schauen, ob die Konfig für den Sonos Lautsprecher passt,
    Im CLI kannst du die SH-Items auf einen beliebigen Wert setzen. Du kannst so
    1. ein "Sonos-Item" direkt auf einen Wert setzen. Wenn Broker, Plugin und Config passen wird dein Sonos dann entsprechend darauf reagieren
    2. ein Item, welches der Glastaster über KNX schreiben würde auf den entsprechenden Wert setzen. Wenn deine Logik richtig angelegt ist, wird diese dann loslaufen, irgendetwas machen und dann (vermutlich) dein Sonos-Item triggern.
    Du kannst natürlich auch direkt mit dem Glastaster loslegen, macht aber die Fehlersuche etwas schwieriger.

    Gruß, Daniel

    Kommentar


      Kurze Frage noch: brauchst du wirklich Logiken oder kannst du nicht enfach dem Sonos-Item (z.B. Play) einen knx-Eintrag hinzufügen? Beispiel:

      Code:
      [[[play]]]
          knx_dpt = 1
          knx_listen = 1/1/1
          knx_lsend = 1/1/2
          type = bool
          enforce_updates = True
          visu_acl = rw
          sonos_recv = play
          sonos_send = play
      Sonos

      Kommentar


        Ich bin mir nicht ganz sicher, aber Lautstärke über dpt3 ändern geht vermutlich nur über eine Logik. Wenn da jemand eine Lösung weiß, wie es ohne geht wäre ich auch dran interessiert.

        Alternativ könnte man (=Stefan ;-P ) das Sonos Plugin analog zum HUE plugin machen, da gibt es dafür eine extra Unterstützung (dimmen/HSL via dpt3).

        Gruß, Daniel

        P.s: etwas offtopic: aber wäre eine (dpt3-) Dimmfunktion ein Vorschlag für SH-Core? Das Problem kommt dann doch immer wieder vor und jedes mal mit fade() drum rum programmieren... :-/

        Kommentar


          Ich schaus mir mal an. Danke für den Hinweis.

          Gruss,

          Stefan
          Sonos

          Kommentar


            Servus,

            sorry wenn ich nochmal mit ner Anfängerfrage störe, aber ich glaub ich hab gesehen woran es liegen könnte. Hab aber keine Ahnung wie ich das lösen kann. Wenn ich Smarthome stoppe und starte und dann ins log schauen zeigt er mit fehler bei der meiner knx.conf sowie bei der Sonos.conf an.

            HTML-Code:
            2017-02-13  23:43:44 WARNING  Main         --------------------   Init smarthomeNG 1.2.0.man   --------------------
            2017-02-13  23:43:44 INFO     Main         Init Scheduler
            2017-02-13  23:43:44 INFO     Main         Init Plugins
            2017-02-13  23:43:44 WARNING  Main         CLI: You should set a password for this plugin.
            2017-02-13  23:43:44 INFO     Main         Init UZSU
            2017-02-13  23:43:44 INFO     Main         Init Items
            2017-02-13  23:43:44 ERROR    Main         Problem reading ._eg.conf: 'utf-8' codec can't decode byte 0xb0 in position 37: invalid start byte
            Traceback (most recent call last):
              File "/usr/local/smarthome/bin/smarthome.py", line 278, in start
                item_conf = lib.config.parse(self._items_dir + item_file, item_conf)
              File "/usr/local/smarthome/lib/config.py", line 77, in parse
                for raw in f.readlines():
              File "/usr/local/lib/python3.5/codecs.py", line 321, in decode
                (result, consumed) = self._buffer_decode(data, self.errors, final)
            UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 37: invalid start byte
            2017-02-13  23:43:44 ERROR    Main         Problem reading ._sonos.conf: 'utf-8' codec can't decode byte 0xb0 in position 37: invalid start byte
            Traceback (most recent call last):
              File "/usr/local/smarthome/bin/smarthome.py", line 278, in start
                item_conf = lib.config.parse(self._items_dir + item_file, item_conf)
              File "/usr/local/smarthome/lib/config.py", line 77, in parse
                for raw in f.readlines():
              File "/usr/local/lib/python3.5/codecs.py", line 321, in decode
                (result, consumed) = self._buffer_decode(data, self.errors, final)
            UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 37: invalid start byte
            2017-02-13  23:43:44 INFO     Main         Items: 151
            2017-02-13  23:43:44 INFO     Main         Start Logics
            2017-02-13  23:43:44 INFO     Main         Start Plugins

            Edit: Ich weiß nicht, ob es daran liegt, aber ich kann unter telnet 127.0.0.1 2323 und dem befehl "update EG.wohness.bwz = 1" den Wert steuern. Ich sehe mit dump EG.wohness.bwz die änderungen. In der Visu ändern sich der Wert jedoch nicht.
            Zuletzt geändert von Mobby2304; 14.02.2017, 05:00.
            Gruß
            Micha

            Kommentar


              Grüß dich,

              das Encoding-Problem liegt an den Einstellungen deines Betriebssystem und wurde u.a. hier schon behandelt:

              https://knx-user-forum.de/forum/supp...42#post1048042

              Ich habe das Problem auch in die Developer-Runde von SmarthomeNG geworfen und sollte in der aktuellsten dev-Version gefixt sein.

              Edit:

              Ist bei dem Item
              Code:
              EG.wohness.bwz = 1
              auch
              Code:
              enforce_updates=true
              gesetzt?

              Gruss,

              Stefan
              Zuletzt geändert von pfischi; 14.02.2017, 07:40.
              Sonos

              Kommentar


                Servus, zum ersten Danke. Ich nutze aktuell den Master-Version. Das erklärt die Meldung. Ich hab den Thread gelesen und darauf geachtet, dass ich keine Sonderzeichen wie äöüß einsetze, aber ok.

                Zitat von pfischi Beitrag anzeigen
                Edit:
                Ist bei dem Item
                Code:
                EG.wohness.bwz = 1
                auch
                Code:
                enforce_updates=true
                gesetzt?
                Ja der ist drin. Ich mach aber ein neues Thema auf. Das gehört nicht hier in Sonos Anbindung rein. Ich schaue erst mal, dass ich die eigenliche Visu simulienen kann, bevor ich hier weitermache.

                Aber danke.




                Gruß
                Micha

                Kommentar


                  Zitat von dafra Beitrag anzeigen
                  Ich bin mir nicht ganz sicher, aber Lautstärke über dpt3 ändern geht vermutlich nur über eine Logik. Wenn da jemand eine Lösung weiß, wie es ohne geht wäre ich auch dran interessiert.

                  Alternativ könnte man (=Stefan ;-P ) das Sonos Plugin analog zum HUE plugin machen, da gibt es dafür eine extra Unterstützung (dimmen/HSL via dpt3).

                  Gruß, Daniel

                  P.s: etwas offtopic: aber wäre eine (dpt3-) Dimmfunktion ein Vorschlag für SH-Core? Das Problem kommt dann doch immer wieder vor und jedes mal mit fade() drum rum programmieren... :-/
                  Ich habs implementiert und kommt in der Release-Version 1.0 mit raus. Bin gerade noch am Testen und schnüre das Paket aus Broker, Plugin und Widget. Wenn alles klappt kommt es übermorgen alles raus.

                  Gruss,

                  Stefan
                  Sonos

                  Kommentar


                    Hört sich gut an. Ich hab meines soweit mal zum Laufen bekommen. :-D
                    Gruß
                    Micha

                    Kommentar


                      Hallo Stefan,

                      Ich hoffe es ist noch nicht zu spät, denn die 1.0 steht ja schon in den Startlöchern...

                      Zur Nutzung der TTS Funktion braucht man bislang entweder Logiken oder (längliche und für Anfänger fehleranfällige) evals. Denn meist ist es ja so, dass man beim eintreten eines Ereignisses eine Sprachnachricht absetzen möchte (d.h. boolsches Event). Das Item Play_TTS ist aber ein String...

                      So eine richtig tolle, sich ins Plugin einfügende Lösung ist mir auch nicht eingefallen, aber ich habe es mal lokal so gelöst (Änderungen in rot):
                      item.conf:
                      Code:
                      [test]
                       sonos_uid = rincon_b8e937eb629001400
                           [[play_tts]]
                              type = [COLOR=#FF0000]bool[/COLOR]
                              sonos_send = play_tts    
                      
                              [[[volume]]]
                                  type = num
                                  value = -1
                      
                              [[[language]]]
                                  type = str
                                  value = 'de'
                      
                              [[[group_command]]]
                                  type = bool
                                  value = 0
                      
                              [[[force_stream_mode]]]
                                  type = bool
                                  value = 0
                      
                      [COLOR=#FF0000]        [[[text_on]]]
                                  type = str
                                  value = 'Text für an'
                      
                              [[[text_off]]]
                                  type = str
                                  value = 'Text für aus'[/COLOR]
                      im Plugin habe ich dazu geändert:
                      Code:
                      ...
                                      if command == 'play_tts':
                                          volume_item_name = '{}.volume'.format(item._name)
                                          language_item_name = '{}.language'.format(item._name)
                                          group_item_name = '{}.group_command'.format(item._name)
                                          force_item_name = '{}.force_stream_mode'.format(item._name)
                                          fade_item_name = '{}.fade_in'.format(item._name)
                      [COLOR=#FF0000]                    texton_item_name = '{}.text_on'.format(item._name)
                                          textoff_item_name = '{}.text_off'.format(item._name)[/COLOR]
                                          volume = -1
                                          language = 'de'
                                          group_command = 0
                                          force_stream_mode = 0
                                          fade_in = 0
                      [COLOR=#FF0000]                    text = ''[/COLOR]
                                          for child in item.return_children():
                                              if child._name.lower() == volume_item_name.lower():
                                                  volume = child()
                                              if child._name.lower() == language_item_name.lower():
                                                  language = child()
                                              if child._name.lower() == group_item_name.lower():
                                                  group_command = child()
                                              if child._name.lower() == force_item_name.lower():
                                                  force_stream_mode = child()
                                              if child._name.lower() == fade_item_name.lower():
                                                  fade_in = child()
                      [COLOR=#008000]                        if child._name.lower() == fade_item_name.lower():
                                                  fade_in = child()[/COLOR]
                      [COLOR=#FF0000]                        if child._name.lower() == texton_item_name.lower():
                                                  if value:
                                                      text = child()
                                               if child._name.lower() == textoff_item_name.lower():
                                                  if not value:
                                                      text = child()[/COLOR]
                      [COLOR=#FF0000]                    if text:[/COLOR]
                                              cmd = self._command.play_tts(uid, [COLOR=#FF0000]text[/COLOR], language, volume, group_command, fade_in,
                                                                       force_stream_mode)
                      Schien mir so noch am besten passend, vielleicht hast du ja noch eine bessere Idee. Vielleicht möchtest du ja auch gar nicht ändern...

                      Unabhängig davon sind mir noch zwei Sachen aufgefallen:
                      - eine Items.conf wie oben schmeißt ziemlich viele Fehler nach dem Absetzen des Play-Kommandos. Nur falls jeand seine Musik nicht über SH steuert, sonder ausschließlich TTS...
                      - die Zeile if child._name.lower() == fade_item_name.lower(): im obigen Codeschnipsel scheint doppelt drin zu sein (grün)...

                      Gruß, Daniel

                      Edit: hab die doppelte Zeile nochmal reingemacht, bei mir hatte ich die lokal schon rausgelöscht...
                      Edit 2: Irgendwie klaut mir die Forumsfunktion Leerzeichen im eingefärbten Code. Geänderten Code angehängt.
                      Angehängte Dateien
                      Zuletzt geändert von dafra; 17.02.2017, 22:16.

                      Kommentar


                        Abend zusammen,

                        nach langer Zeit (und Arbeit) habe ich die Release-Version vom Broker, Plugin und Widget fertig.

                        --> Aktuelle Versionen <--

                        An dieser Stelle schon ein wichtiger Hinweis: ich habe sehr viel an dem Broker verändert (natürlich nur zum Besserem ) Jeder der mit Version v0.9 bisher gearbeitet hat, sollte den alten Broker komplett entfernen und neu installieren. Die Installation und Konfiguration ist um einiges einfacher geworden, ich verweise dazu in die Dokumentation. Dort steht auch, wie eine alte Version sauber entfernt werden kann.
                        Im gleichem Atemzug ist auch das Plugin an einigen Stellen angepasst worden. Hier bitte auch komplett die alte Itemstruktur entfernen und die neue verwenden. Es sind einige Items hinzugekommen (für die Visu z.B.), andere wurden etwas angepasst (z.B das volume-Item mit dpt3-Unterstützung).
                        Zu guter Letzt gibt es jetzt auch ein funktonierendes Widget, was ich jetzt nach und nach erweitern werde.

                        Noch ein Hinweis: das Plugin funktioniert mit SmarthomeNG 1.3 (aktuelle dev-Version), alle anderen Versionen sind ungetestet. Es gibt keine Unterstützung mehr für Smarthome.py.

                        Gruss,

                        Stefan


                        dafra Die Sache mit dem PlayTTS-Item überlege ich mir noch, hatte jetzt aber nicht mehr die Möglichkeit das zun integrieren. Die Idee an sich ist aber überlegenswert.

                        EDIT: Schon einen kleinen Bug beim Widget entdeckt: dieses wird nur bei "Pagecache off" angezeigt. Bin schon am fixen.

                        EDIT EDIT: War anscheinend doch kein Fehler. Bei Smartvisu v2.8 bitte manuell den Inhalt des Ordners temp im SmartVisu-Root-Order löschen, dann gehts.
                        Zuletzt geändert von pfischi; 19.02.2017, 10:52.
                        Sonos

                        Kommentar


                          Hallo Stefan,

                          super, ich bin gespannt. Ich hatte am Freitag noch ein Problem mit dem Befehl play_tunein gesehen:

                          WARNING Sonos: Could not send message http://192.168.2.128:12900 {'command': 'play_tunein', 'parameter': {'station_name': 'Acousticity', 'uid': 'rincon_b8e937b1341801400'}} - 400 <html><head><title>Sonos Broker</title></head><body>list indices must be integers, not str</body></html>

                          Das Problem tritt unter Version 1.0b6 auf. Ich installiere die Tage mal Deine neue Version V1.0 und melde mich, ob es es damit auch auftritt.

                          Viele Grüße
                          Alex

                          Kommentar


                            Ich schau es mir auch nochmal an
                            Sonos

                            Kommentar


                              Kurze Bestätigung: Der Fehler oben tritt auch mit dem aktuellen V1.0 Release auf. Außerdem bekomme ich ein Warning pro Sonos Gerät:

                              WARNING Main Sonos: no sonos_vol_max defined, using default value 100.

                              Wo kann sollte denn vol_max definiert sein?

                              VG
                              Alex

                              Kommentar


                                aschwith Danke für den Bug-Report. Habe eine neue Version fertig gemacht:

                                --> HIER <--

                                Es gab ein paar Änderung im SoCo-Framework, das hat die Funktion play_tunein etwas durcheinander gebracht.

                                Code:
                                vol_max
                                wird für das neue Item
                                Code:
                                volume_dpt3
                                gebraucht. Ich habe das Loglevel auf 'debug' geändert. Das Plugin ist noch nicht im Dev-Zweig, kann aber vom verlinkten Thread geladen werden.

                                Edit: Das neue Plugin ist im dev-Zweig eingepflegt.


                                Gruss,

                                Stefan
                                Zuletzt geändert von pfischi; 20.02.2017, 12:24.
                                Sonos

                                Kommentar

                                Lädt...
                                X