Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

  • pfischi
    antwortet
    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.

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Ich schau es mir auch nochmal an

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    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

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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.

    Einen Kommentar schreiben:


  • dafra
    antwortet
    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.

    Einen Kommentar schreiben:


  • Mobby2304
    antwortet
    Hört sich gut an. Ich hab meines soweit mal zum Laufen bekommen. :-D

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • Mobby2304
    antwortet
    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.




    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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.

    Einen Kommentar schreiben:


  • Mobby2304
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • dafra
    antwortet
    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... :-/

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    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

    Einen Kommentar schreiben:


  • dafra
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X