Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos Anbindung

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

  • Sisamiwe
    antwortet
    aschwith

    Hallo,

    ich habe das Item Handling im Plugin auf die Methoden des smartplugin umgestellt und einen PR erstellt.
    Gerne testen und ins develop mergen.

    Danke.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wie ich oben schrieb, sollten Plugins nicht mit item.conf rumspielen. Zu dem was da alles passieren und schiefgehen kann, wenn man in undokumentierte Strukturen des Core rein grätscht, möchte ich mich nicht weiter auslassen.

    Es gab bereits bevor ich mich mit der Entwicklung des Cores von SmartHomeNG beschäftigte Ansätze das item.conf dict abzulösen (was sinnvoll ist und auch bei mir im Backlog steht).

    Bis SmartHomeNG v1.2 wurde item.conf in Plugins LESEND genutzt, um die Attribute des Plugins zu bestimmen. Darüber hinaus ist die Nutzung von item.conf dem Core vorbehalten. Seit SmartHomeNG v1.3 gibt es Methoden um die Informationen aus Plugins heraus abzufragen im Item Objekt. Plugins sollten KEINESFALLS eigene Informationen dort ablegen.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Die von Die angezeigte Meldung kommt normalerweise, wenn Du im Tree ein Item wählst und die Initialisierung von SmartHomeNG noch nicht abgeschlossen ist.
    Das Sonos Plugin ist aktuell so aufgebaut, dass bei Aufruf der Methode "parse_item" die jeweilge item.conf um Einträge ergänzt wird und u.a. um ein "Parent Item". Der Eintrag in die item.conf erfolgt als Type Item. Damit scheint es Probleme zu geben, das Item wird nicht vollständig initialisiert; Fehlermeldung im Log gibt es keine, und im Admin-IF kann das Item nicht mit seinen Details dargestellt werden.

    Meine Frage war, ob es Probleme gibt, wenn in der item.conf
    Code:
    {'sonos_attrib': 'vol_dpt3', 'sonos_dpt3_step': 2, 'sonos_dpt3_time': 1,[MARKIEREN] 'volume_parent': Item: sonos.badonos.volume, 'helper': Item: sonos.badonos.volume.volume_dpt3.helper[/MARKIEREN]}
    Einträge vom Type Item gibt?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Auch wenn in der item.conf nachträglich Einträge geändert werden (was mann nicht tun sollte),sollten die Details das anzeigen.

    Die von Die angezeigte Meldung kommt normalerweise, wenn Du im Tree ein Item wählst und die Initialisierung von SmartHomeNG noch nicht abgeschlossen ist.

    Den Type eines Items darfst Du NICHT verändern und schon GAR NICHT Types verwenden, die SmartHome NG nicht kennt (die in der Doku nicht beschrieben sind)
    Zuletzt geändert von Msinn; 10.11.2024, 17:48.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von Msinn Beitrag anzeigen
    oder was meinst Du?
    Ich meine im AdminIF die rechte Seite des Item-Trees, in der die Details zu dem jeweilig markierten Item angezeigt werden:

    image.png​Meine Vermutung ist, da in der item.conf Einträge (durch das Plugin nachträglich zugefügt) den Type Item haben und das AdminIF dies nicht "kann", die ItemInformationen rechts leer bleiben und eine Exception geworfen wird.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Sisamiwe Informationen (Details) zu Items können nur im Item Tree angezeigt werden, oder was meinst Du?

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich habe die Ursache gefunden.

    Das Attribute 'sonos_attrib') == 'vol_dpt3' ermöglicht das EInstellen der Lautstärke am Sonos mittels relativem Dimmen aus KNX. Das mit das funktioniert, müssen 2 weitere Items, nämlich das eigentlichen Lautstärke-Item und ein weiteres Hilfsitem vorhanden sein.
    Werden die Items im Plugin geparsed, wird geprüft, dass diese beiden Items vorhanden sind und -und das führt zum Problem im Admin-Interface- als Type Item in der item.conf ergänzt..

    Code-Auszug aus dem Plugin:
    Code:
                # check, if a volume parent item exists
                parent_item = item.return_parent()
    
                if parent_item is not None:
                    if self.has_iattr(parent_item.conf, 'sonos_recv'):
                        if self.get_iattr_value(parent_item.conf, 'sonos_recv').lower() != 'volume':
                            self.logger.warning("volume_dpt3 item has no volume parent item. Ignoring!")
                    else:
                        self.logger.warning("volume_dpt3 item has no volume parent item. Ignoring!")
                        return
    
                item.conf['sonos_volume_parent'] = parent_item
    Die item.conf sieht zur Laufzeit so aus:
    Code:
    {'sonos_attrib': 'vol_dpt3', 'sonos_dpt3_step': 2, 'sonos_dpt3_time': 1, 'volume_parent': Item: sonos.badonos.volume, 'helper': Item: sonos.badonos.volume.volume_dpt3.helper}
    Die item.conf bildet auch die Grundlage für die Anzeige der Item-Informationen im Admin-Interface. Das Admin-Interface kann keine Informationen von Type Item darstellen.

    Msinn
    Ist meine Annahme, dass das Admin-Interface keine Informationen vom Type Item darstellen kann, richtig?

    aschwith
    Man könnte zur Speicherung von Information zu Items im Plugin auch die aktuellen Methoden aus der Klasse SmartPlugin nutzen und das Plugin entsprechend umstellen.

    Was meint ihr?

    Beste Grüße
    Michael

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    Hallo Sisamiwe,
    ich nutzte das Sonos Struct nicht und auch kein Item mit Attribut volume_dpt3. Mir sagt der Fehler spontan nichts.
    VG

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    aschwith

    Hallo,

    ich möchte über die SONOS Integration von shNG die Lautstärke via KNX steuern. Ich bin auch der aktuellen develop für smarthomeNG und Plugins
    Dazu gibt es das sonos_attrib: vol_dpt3.

    Code:
              volume_dpt3:
                type: foo
                sonos_attrib: vol_dpt3
                sonos_dpt3_step: 2
                sonos_dpt3_time: 1
                knx_dpt: 3
                knx_listen: 30/2/8
    
                helper:
                  sonos_attrib: dpt3_helper
                  type: num
                  sonos_send: volume


    Bei der Nutzung der mitgelieferten structs, tritt das Problem auf, dass das Item "volume_dpt3" im Backend nicht angezeigt wird
    Es wird eine Warning ausgegeben:

    Code:
    2024-11-05  10:35:36 ERROR    cherrypy.error.136151886323456           [05/Nov/2024:10:35:36] HTTP
    Traceback (most recent call last):
      File "/usr/local/smarthome/venvs/py_shng/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 659, in respond
        self._do_respond(path_info)
      File "/usr/local/smarthome/venvs/py_shng/lib/python3.10/site-packages/cherrypy/_cprequest.py", line 718, in _do_respond
        response.body = self.handler()
      File "/usr/local/smarthome/venvs/py_shng/lib/python3.10/site-packages/cherrypy/lib/encoding.py", line 223, in __call__
        self.body = self.oldhandler(*args, **kwargs)
      File "/usr/local/smarthome/venvs/py_shng/lib/python3.10/site-packages/cherrypy/_cpdispatch.py", line 54, in __call__
        return self.callable(*self.args, **self.kwargs)
      File "/usr/local/smarthome/modules/admin/itemdata.py", line 320, in item_detail_json_html
        return json.dumps(item_data)
      File "/usr/local/lib/python3.10/json/__init__.py", line 231, in dumps
        return _default_encoder.encode(obj)
      File "/usr/local/lib/python3.10/json/encoder.py", line 199, in encode
        chunks = self.iterencode(o, _one_shot=True)
      File "/usr/local/lib/python3.10/json/encoder.py", line 257, in iterencode
        return _iterencode(o, 0)
      File "/usr/local/lib/python3.10/json/encoder.py", line 179, in default
        raise TypeError(f'Object of type {o.__class__.__name__} '
    TypeError: Object of type Item is not JSON serializable​
    Ist das bei Euch auch der Fall?
    Besten Dank

    Einen Kommentar schreiben:


  • marmbruster
    antwortet
    Habe es gerade getestet - perfekt!
    Vielen Dank! Das Plugin ist wirklich genial!!!!

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    In der Tat gab es hier noch einige Reste von Debug Logs. Habe ich entfernt und ins Develop geschoben. Plugin Version hat sich nicht geändert. VG
    Zuletzt geändert von aschwith; 27.05.2024, 20:56.

    Einen Kommentar schreiben:


  • marmbruster
    antwortet
    Habe das Notice-Level... Es geht um warnings im Zusammenhang mit tts mit dem Titel 'DEBUG loop 2'. Glaube aber mittlerweile, dass ich da noch einen Bug in meiner Konfiguration habe...

    Einen Kommentar schreiben:


  • aschwith
    antwortet
    Welches Loglevel hast du denn bei Dir für das Sonos Plugin eingestellt?

    Einen Kommentar schreiben:


  • marmbruster
    antwortet
    Noch eine Kleinigkeit: Lässt sich das DEBUG-Level reduzieren? Im Log stehen sämtliche DEBUG-Meldungen...
    Sorry, kenne mich mit der dev-Version nicht wirklich gut aus...
    Vielen Dank!

    Einen Kommentar schreiben:


  • marmbruster
    antwortet
    Habe es gerade getestet: funktioniert perfekt!

    Vielen Dank für die schnelle Unterstützung!!!

    Einen Kommentar schreiben:

Lädt...
X