Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklung Plugin für Denon / Marantz Receiver

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

  • Morg
    antwortet
    Ah, Moment...

    Verstärker einschalten hat ja erstmal nix mit dem Suspend-Item zu tun...? Oder wieso sollte das Plugin "von alleine" aus dem Suspend rauskommen?

    Der Code sieht richtig aus; wenn das Plugin in suspend geht, wird das suspend_item auf True (=suspended) gesetzt; bei resume auf False (=aktiv). Das sollte soweit passen. Bei anderen Plugins funktioniert das (hier) auch.

    Wie schaltest du den Verstärker denn ein? Du müsstest dann dabei / zusätzlich das Suspend-Item auf False setzen, dann sollte das Plugin auch wieder aufwachen. In der Visu ist das etwas schwierig, wenn der Status nicht richtig angezeigt wird. Was sagt im suspended-Zustand die Admin-UI?

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Naja ich erkenne es daran, dass nach längerer Zeit in dem der Verstärker aus ist und ich ihn dann wieder einschalte die Bedienung nicht geht (Fehlermeldung im Logging, dass das Plugin suspendiert ist). Das item habe ich ebenfalls in der VISU dargestellt und dort ist dann 0. Auch ist es mit enforce_update=true definiert. Wenn ich es dann über die VISU ein und aus schalte kann ich anschließend den Verstärker wieder bedienen.

    Der code in den beiden Zeilen sieht folgendermaßen aus. Ich hoffe das ist nicht falsch. Oben ist es anders herum geschrieben aber im Code stand vorher an den beiden Stellen auch true und false und ich habe das dann so belassen.
    Code:
        def suspend(self, by=None):
            """
            sets plugin into suspended mode, no network/serial activity and no item changed
            """
            if self.alive:
                self.logger.info(f'plugin suspended by {by if by else "unknown"}, connections will be closed')
                self.suspended = True
                if self._suspend_item is not None:
                    self._suspend_item(True, self.get_fullname()) # ##### LOESER ##### vorher: self._suspend_item(True)
                if hasattr(self, 'disconnect'):
                    self.disconnect()
    
        def resume(self, by=None):
            """
            disabled suspended mode, network/serial connections are resumed
            """
            if self.alive:
                self.logger.info(f'plugin resumed by {by if by else "unknown"}, connections will be resumed')
                self.suspended = False
                if self._suspend_item is not None:
                    self._suspend_item(False, self.get_fullname()) # ##### LOESER ##### vorher: self._suspend_item(False)
                if hasattr(self, 'connect'):
                    self.connect()

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Das Item sollte automatisch auf True gehen, wenn standby aktiviert wird. Es ist als Schalt- und als Statusitem konzipiert. Woran siehst du, dass es das nicht tut?

    Erneutes Setzen auf False sollte funktionieren; das Item muss mit enforce_updates: true erstellt werden.

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Es geht auf suspend, wenn der Verstärker stromlos ist und damit mehrere Versuche ihn zu erreichen fehlschlägt. Das ist ja auch verständlich und sinnvoll. Das item selbst wird allerdings nicht auf TRUE gesetzt sondern bleibt False. Natürlich würde ein Erneutes Setzen auf False nichts bringen, wenn der Verstärker aus ist.

    Aber wenn der Verstärker an ist dann hilft ein Toggeln (-->True-->False) und dies schaltet das Plugin wieder ein und ich kann wieder den Verstärker bedienen. Klasse. Das kann ich nun in meine Funktion mit einbauen. Ich habe ein Skript, welches den Verstärker einschaltet (Strom an) und wenn ich dann das Plugin dann aus dem Suspend aufwecke können auch die Befehle wieder ausgeführt werden.

    Schöner wäre es natürlich wenn man noch abfragen kann, ob das Plugin im Suspend ist. Ansonsten brauche ich das Toggeln ja nicht. Allerdings geht das nicht über das Item. Aber vielleicht ist das ja in dem DEVLOP Branch auch anders, da dieser Teil ja komplett überarbeitet wurde.

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Das Plugin sollte (nur) automatisch (also von sich aus) auf suspend gehen, wenn die Verbindung gem. Parametern mehrfach fehlschlägt (z.B., wenn der Receiver keinen Strom hat). Dann wird auch das Item entsprechend gesetzt. Ich kann aber nicht sicher sagen, wie gut die "disconnect"-Erkennung in dem Fall funktioniert. In dem Fall würde dann auch "auf False setzen" nicht helfen, weil der Verstärker ja nicht erreichbar ist.

    Wann geht es denn automatisch auf suspend?

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Toll dass Du das so schnell gefunden hast. Ich habe mal Variante zwei genommen und die beiden Zeilen umgeändert und den Master bei mir ansonsten belassen. Das scheint schon zu gehen mit dem SUSPEND.

    Habe mal folgendes gemacht
    + Neustart SH - Plugin läuft / Verstärker ist an
    + Kommando gesendet -- geht
    + SUSPEND auf True
    + Kommando gesendet -- geht nicht (also auch okay)

    + Log Einstellungen auf DEBUG (siehe Logausgabe START)
    + SUSPEND auf False gesetzt
    + Kommando gesendet -- geht
    + SUSPEND auf True gesetzt
    + Kommando gesendet -- geht nicht (also auch okay)
    + SUSPEND auf False gesetzt
    + Log Einstellungen auf INFO (siehe Logausgabe ENDE)

    Log Ausgabe
    Code:
    2024-09-30  20:24:46 NOTICE   modules.admin.loggers Logger 'lib.model.sdp' changed from WARNING to DEBUG
    2024-09-30  20:24:52 NOTICE   modules.admin.loggers Logger 'plugins.denon' changed from NOTICE to DEBUG
    2024-09-30  20:25:35 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:25:35 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-30  20:25:35 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-30  20:25:35 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-30  20:25:35 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller denon, source None and dest None
    2024-09-30  20:25:35 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-30  20:25:35 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7f9ade8ffb50>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-30  20:25:35 WARNING  lib.network         (denon_192.168.123.26:23) TCP connection failed 1/5 times, last error was: [Errno 111] Verbindungsaufbau abgelehnt
    2024-09-30  20:25:35 WARNING  lib.network         self._connect() for denon did not work
    2024-09-30  20:25:38 INFO     lib.model.sdp.connection on_connect called by denon
    2024-09-30  20:26:01 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.zone1.control.power" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:26:01 INFO     plugins.denon       Update item: R16.MARANTZ.zone1.control.power: item has been changed outside this plugin
    2024-09-30  20:26:01 DEBUG    plugins.denon       Writing value "True" from item R16.MARANTZ.zone1.control.power with command "zone1.control.power"
    2024-09-30  20:26:01 DEBUG    plugins.denon       command zone1.control.power with value True yielded send data_dict {'payload': 'ZMON\r', 'data': 'ON', 'limit_response': b'\r'}
    2024-09-30  20:26:01 DEBUG    lib.model.sdp.connection received raw data "ZMON" from "denon"
    2024-09-30  20:26:01 DEBUG    plugins.denon       received data "ZMON" from denon without command specification
    2024-09-30  20:26:01 DEBUG    lib.model.sdp.commands matched reply_pattern ZM(ON|OFF) as regex against data ZMON, found command zone1.control.power
    2024-09-30  20:26:01 DEBUG    lib.model.sdp.command parse_str command got data ZMON of type <class 'str'>
    2024-09-30  20:26:01 DEBUG    plugins.denon       received data "ZMON" for command zone1.control.power converted to value True
    2024-09-30  20:26:01 DEBUG    plugins.denon       Command zone1.control.power wants to update item R16.STECKDOSE.MARANTZ.zone1.control.power with value True received from denon
    2024-09-30  20:26:01 DEBUG    plugins.denon       Update_item was called with item "R16.STECKDOSE.MARANTZ.zone1.control.power" from caller denon, source None and dest None
    2024-09-30  20:26:01 DEBUG    plugins.denon       Command zone1.control.power wants to update item R16.MARANTZ.zone1.control.power with value True received from denon
    2024-09-30  20:26:02 DEBUG    lib.model.sdp.connection received raw data "PWON" from "denon"
    2024-09-30  20:26:02 DEBUG    plugins.denon       received data "PWON" from denon without command specification
    2024-09-30  20:26:02 DEBUG    lib.model.sdp.commands matched reply_pattern PW(ON|STANDBY) as regex against data PWON, found command general.power
    2024-09-30  20:26:02 DEBUG    lib.model.sdp.command parse_str command got data PWON of type <class 'str'>
    2024-09-30  20:26:02 DEBUG    plugins.denon       received data "PWON" for command general.power converted to value True
    2024-09-30  20:26:02 DEBUG    plugins.denon       Command general.power wants to update item R16.STECKDOSE.MARANTZ.general.power with value True received from denon
    2024-09-30  20:26:02 DEBUG    plugins.denon       Update_item was called with item "R16.STECKDOSE.MARANTZ.general.power" from caller denon, source None and dest None
    2024-09-30  20:26:02 DEBUG    plugins.denon       Command general.power wants to update item R16.MARANTZ.general.power with value True received from denon
    2024-09-30  20:26:02 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.general.power" from caller denon, source None and dest None
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.connection received raw data "SSINFAISSIG 02" from "denon"
    2024-09-30  20:26:08 DEBUG    plugins.denon       received data "SSINFAISSIG 02" from denon without command specification
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.commands matched reply_pattern SSINFAISSIG (01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18) as regex against data SSINFAISSIG 02, found command general.inputsignal
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.command parse_str command got data SSINFAISSIG 02 of type <class 'str'>
    2024-09-30  20:26:08 DEBUG    plugins.denon       received data "SSINFAISSIG 02" for command general.inputsignal converted to value PCM
    2024-09-30  20:26:08 DEBUG    plugins.denon       Command general.inputsignal wants to update item R16.STECKDOSE.MARANTZ.general.inputsignal with value PCM received from denon
    2024-09-30  20:26:08 DEBUG    plugins.denon       Command general.inputsignal wants to update item R16.MARANTZ.general.inputsignal with value PCM received from denon
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.connection received raw data "SSINFAISFSV 48K" from "denon"
    2024-09-30  20:26:08 DEBUG    plugins.denon       received data "SSINFAISFSV 48K" from denon without command specification
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.commands matched reply_pattern SSINFAISFSV (\d{2,3}|NON) as regex against data SSINFAISFSV 48K, found command general.inputrate
    2024-09-30  20:26:08 DEBUG    lib.model.sdp.command parse_str command got data SSINFAISFSV 48K of type <class 'str'>
    2024-09-30  20:26:08 DEBUG    plugins.denon       received data "SSINFAISFSV 48K" for command general.inputrate converted to value 48
    2024-09-30  20:26:08 DEBUG    plugins.denon       Command general.inputrate wants to update item R16.STECKDOSE.MARANTZ.general.inputrate with value 48 received from denon
    2024-09-30  20:26:08 DEBUG    plugins.denon       Command general.inputrate wants to update item R16.MARANTZ.general.inputrate with value 48 received from denon
    2024-09-30  20:26:10 DEBUG    lib.model.sdp.connection received raw data "PWON" from "denon"
    2024-09-30  20:26:10 DEBUG    plugins.denon       received data "PWON" from denon without command specification
    2024-09-30  20:26:10 DEBUG    lib.model.sdp.commands matched reply_pattern PW(ON|STANDBY) as regex against data PWON, found command general.power
    2024-09-30  20:26:10 DEBUG    lib.model.sdp.command parse_str command got data PWON of type <class 'str'>
    2024-09-30  20:26:10 DEBUG    plugins.denon       received data "PWON" for command general.power converted to value True
    2024-09-30  20:26:10 DEBUG    plugins.denon       Command general.power wants to update item R16.STECKDOSE.MARANTZ.general.power with value True received from denon
    2024-09-30  20:26:10 DEBUG    plugins.denon       Command general.power wants to update item R16.MARANTZ.general.power with value True received from denon
    2024-09-30  20:26:40 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.zone1.control.power" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:26:40 INFO     plugins.denon       Update item: R16.MARANTZ.zone1.control.power: item has been changed outside this plugin
    2024-09-30  20:26:40 DEBUG    plugins.denon       Writing value "False" from item R16.MARANTZ.zone1.control.power with command "zone1.control.power"
    2024-09-30  20:26:40 DEBUG    plugins.denon       command zone1.control.power with value False yielded send data_dict {'payload': 'ZMOFF\r', 'data': 'OFF', 'limit_response': b'\r'}
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.connection received raw data "PWSTANDBY" from "denon"
    2024-09-30  20:26:40 DEBUG    plugins.denon       received data "PWSTANDBY" from denon without command specification
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.commands matched reply_pattern PW(ON|STANDBY) as regex against data PWSTANDBY, found command general.power
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.command parse_str command got data PWSTANDBY of type <class 'str'>
    2024-09-30  20:26:40 DEBUG    plugins.denon       received data "PWSTANDBY" for command general.power converted to value False
    2024-09-30  20:26:40 DEBUG    plugins.denon       Command general.power wants to update item R16.STECKDOSE.MARANTZ.general.power with value False received from denon
    2024-09-30  20:26:40 DEBUG    plugins.denon       Update_item was called with item "R16.STECKDOSE.MARANTZ.general.power" from caller denon, source None and dest None
    2024-09-30  20:26:40 DEBUG    plugins.denon       Command general.power wants to update item R16.MARANTZ.general.power with value False received from denon
    2024-09-30  20:26:40 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.general.power" from caller denon, source None and dest None
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.connection received raw data "ZMOFF" from "denon"
    2024-09-30  20:26:40 DEBUG    plugins.denon       received data "ZMOFF" from denon without command specification
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.commands matched reply_pattern ZM(ON|OFF) as regex against data ZMOFF, found command zone1.control.power
    2024-09-30  20:26:40 DEBUG    lib.model.sdp.command parse_str command got data ZMOFF of type <class 'str'>
    2024-09-30  20:26:40 DEBUG    plugins.denon       received data "ZMOFF" for command zone1.control.power converted to value False
    2024-09-30  20:26:40 DEBUG    plugins.denon       Command zone1.control.power wants to update item R16.STECKDOSE.MARANTZ.zone1.control.power with value False received from denon
    2024-09-30  20:26:40 DEBUG    plugins.denon       Update_item was called with item "R16.STECKDOSE.MARANTZ.zone1.control.power" from caller denon, source None and dest None
    2024-09-30  20:26:40 DEBUG    plugins.denon       Command zone1.control.power wants to update item R16.MARANTZ.zone1.control.power with value False received from denon
    2024-09-30  20:27:12 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:27:12 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-30  20:27:12 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-30  20:27:12 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-30  20:27:12 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller denon, source None and dest None
    2024-09-30  20:27:12 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-30  20:27:12 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-30  20:27:12 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-30  20:27:24 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.zone1.control.power" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:27:24 INFO     plugins.denon       Update item: R16.MARANTZ.zone1.control.power: item has been changed outside this plugin
    2024-09-30  20:27:24 DEBUG    plugins.denon       Writing value "True" from item R16.MARANTZ.zone1.control.power with command "zone1.control.power"
    2024-09-30  20:27:24 WARNING  plugins.denon       trying to send command zone1.control.power with value True, but plugin is suspended.
    2024-09-30  20:27:24 DEBUG    plugins.denon       Writing value "True" from item R16.MARANTZ.zone1.control.power with command "zone1.control.power" failed, resetting item value
    2024-09-30  20:27:24 DEBUG    plugins.denon       Update_item was called with item "R16.MARANTZ.zone1.control.power" from caller denon, source None and dest None
    2024-09-30  20:27:52 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-30  20:27:52 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-30  20:27:52 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-30  20:27:52 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-30  20:27:52 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller denon, source None and dest None
    2024-09-30  20:27:52 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-30  20:27:52 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7f9ade8ffb50>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-30  20:27:52 WARNING  lib.network         (denon_192.168.123.26:23) TCP connection failed 1/5 times, last error was: [Errno 111] Verbindungsaufbau abgelehnt
    2024-09-30  20:27:52 WARNING  lib.network         self._connect() for denon did not work
    2024-09-30  20:27:55 INFO     lib.model.sdp.connection on_connect called by denon
    2024-09-30  20:28:04 NOTICE   modules.admin.loggers Logger 'plugins.denon' changed from DEBUG to NOTICE
    2024-09-30  20:28:13 NOTICE   modules.admin.loggers Logger 'lib.model.sdp' changed from DEBUG to NOTICE​
    Nun muss ich mal sehen, wenn das Plugin selbständig auf Suspend geht, da es den Verstärker nicht mehr erreicht, ob das Item dann auch selbständig auf True geht und ich es auf False setzen kann und alles wieder geht. Alternativ würde ich es dann einmal toggeln.

    Sobald ich das weiss gebe ich nochmal Rückmeldung. Wird wohl morgen werden.
    Aber vielen Lieben Dank schonmal für euren Support.

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Das ist tatsächlich ein bisher nicht aufgefallener Fehler im master. Es passiert genau das, was ich oben befürchtet habe - die SmartPlugin-Klasse setzt - routinemäßig - das Suspend-Item, aber gibt den Parameter nicht mit, der eine erneute Bearbeitung in update_item verhindert.

    Im aktuellen develop ist das durch die komplette Umstellung des suspend-Mechanismus gefixt, falls das für dich eine Option ist. Ansonsten müsstest du bei dir eine Datei anpassen (lib/model/smartplugin.py, Zeilen 92 und 104:
    Code:
    self._suspend_item(False, self.get_fullname())
    bzw.
    Code:
    self._suspend_item(True, self.get_fullname())
    Gib gern Bescheid, wie du dich entscheidest und ob es dann geholfen hat

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Hi Morg
    es ist das plugin "denon" in der Version 1.0.1 aus dem master.
    Habe kein sideload hier gemacht.

    Danke, dass Du Dir das mal ansiehst,

    Einen Kommentar schreiben:


  • Morg
    antwortet
    Das sieht stark danach aus, als wenn sdp auf das suspend-Item reagiert, es setzt/löscht und dieses Update wieder serviert bekommt, ohne zu merken, dass es darauf nicht reagieren sollte...

    Ist mir bei anderen sdp-Plugins noch nicht untergekommen; da ich nicht den gesamten Verlauf lesen möchte - welches Plugin, welcher Stand? Ich meine, ich hätte oben was von master gelesen, stimmt das? Oder ist das Plugin "sideloaded", also ein develop- oder github-Plugin?

    Ich würde mir den Aufruf `standby_item(val)` und den Anfang von `update_item()` dazu ansehen. der erste Aufruf sollte den Pluginnamen als zweites Argument mitgeben, und in update_item sollte auf "selbst geänderte" Items nicht reagiert werden...

    (btw - war jetzt nur Zufall, dass ich hier reingeschaut habe.. im Zweifelsfall bitte kurz anpingen )

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Morg blickt das sicher eher..

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Aber sehr gerne. Danke schonmal für's Helfen.

    item.yaml
    Code:
    %YAML 1.1
    ---
    
    # --------------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Sonderfunktionen
    # --------------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Verschiedene Sonderfunktionen
    SONDERFUNKTIONEN:​
        PLUGINS:
            name: SmartHome Plugin Funktionen
    
            SUSPEND_DENON:
                name: Rxx Denon Plugin suspendieren / fortfuehren
                type: bool
                visu_acl: rw
                enforce_updates: 'True'​
    plugin.yaml
    Code:
    %YAML 1.1
    ---​
    denon:
        plugin_name: denon
        model: AVR-X3300W # Reicht im Wesentlichen für den MARANTZ aus
        host: 192.168.123.26
        port: 23
        conn_type: net_tcp_client
        autoreconnect: true
        autoconnect: true
        suspend_item: 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON'
    #    # denon_port = 80 (optional)
    #    # cycle = 10 (optional)​
    SmartHomeNG Version:v1.10.0-master (4b25822a0) in /usr/local/smarthome (tags/v1.10.0)
    SmartHomeNG Plugins Version:v1.10.0-master (7e00e4ee) in /usr/local/smarthome/plugins (tags/v1.10.0)
    Administrations-Oberfläche:shngAdmin v0.9.3
    Python Version:3.10.12 final (virtual environment) (/usr/local/smarthome/venvs/py_shng/bin/python3)​

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Poste doch mal deine Config Files, sprich das Sonderfunktionen Item und plugin Config..

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Also ich habe nochmal etwas probiert. Du hast Recht, ich schalte den Verstärker öfter aus und damit gibt es dann auch keine Verbindung. Am schönsten wäre es, wenn das das Plugin gar nicht interessieren würde und wenn er erreichbar ist einfach wieder funktioniert. Ich denke das Plugin schaltet sich ab oder geht in suspendiert, da die Verbindung überwacht wird und dann ein Timeout kommt. Hierzu habe ich folgenden Logeintrag gefunden.

    Code:
    2024-09-21  13:37:03 ERROR    lib.network         lib.network (denon_192.168.123.26:23) receive thread died with unexpected error: [Errno 110] Die Wartezeit für die Verbindung ist abgelaufen. Go tell... -- If stack trace is necessary, enable/check debug log
    Danach habe ich dann noch das Suspend Item versucht einmal zu aktiviern und dann wieder zu deaktivieren. Hierbei gab es folgende Logeinträge.Ich weiss auch nicht, warum die sich so oft wiederholen.

    Code:
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    
    
    ...
    das geht gefühlt noch 100x so weiter 
    ...
    
    
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 INFO     plugins.denon       plugin suspended by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be closed
    2024-09-21  16:06:31 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend item changed to True
    2024-09-21  16:06:31 DEBUG    plugins.denon       Suspend mode enabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:31 ERROR    lib.item.item       Item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON: problem running <bound method SmartDevicePlugin.update_item of <plugins.denon.denon object at 0x7fef6f839ff0>>: maximum recursion depth exceeded while calling a Python object
    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/logging/handlers.py", line 75, in emit
        logging.FileHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1218, in emit
        StreamHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1100, in emit
        msg = self.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 943, in format
        return fmt.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 679, in format
        if self.usesTime():
      File "/usr/local/lib/python3.10/logging/__init__.py", line 647, in usesTime
        return self._style.usesTime()
      File "/usr/local/lib/python3.10/logging/__init__.py", line 424, in usesTime
        return self._fmt.find(self.asctime_search) >= 0
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        method(self, caller, source, dest)
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 593, in update_item
        self.set_suspend(by=f'suspend item {item.property.path}')
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 324, in set_suspend
        self.suspend(by)
      File "/usr/local/smarthome/lib/model/smartplugin.py", line 89, in suspend
        self.logger.info(f'plugin suspended by {by if by else "unknown"}, connections will be closed')
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1841, in info
        self.log(INFO, msg, *args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1879, in log
        self.logger.log(level, msg, *args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1547, in log
        self._log(level, msg, args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1624, in _log
        self.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1634, in handle
        self.callHandlers(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1696, in callHandlers
        hdlr.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 968, in handle
        self.emit(record)
      File "/usr/local/lib/python3.10/logging/handlers.py", line 77, in emit
        self.handleError(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1022, in handleError
        traceback.print_exception(t, v, tb, None, sys.stderr)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 353, in extract
        limit = getattr(sys, 'tracebacklimit', None)
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/logging/handlers.py", line 75, in emit
        logging.FileHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1218, in emit
        StreamHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1100, in emit
        msg = self.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 943, in format
        return fmt.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 686, in format
        record.exc_text = self.formatException(record.exc_info)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 636, in formatException
        traceback.print_exception(ei[0], ei[1], tb, None, sio)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 353, in extract
        limit = getattr(sys, 'tracebacklimit', None)
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        method(self, caller, source, dest)
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 593, in update_item
        self.set_suspend(by=f'suspend item {item.property.path}')
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 324, in set_suspend
        self.suspend(by)
      File "/usr/local/smarthome/lib/model/smartplugin.py", line 92, in suspend
        self._suspend_item(True)
      File "/usr/local/smarthome/lib/item/item.py", line 1383, in __call__
        self.__update(value, caller, source, dest, key, index)
      File "/usr/local/smarthome/lib/item/item.py", line 2267, in __update
        logger.exception("Item {}: problem running {}: {}".format(self._path, method, e))
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1512, in exception
        self.error(msg, *args, exc_info=exc_info, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1506, in error
        self._log(ERROR, msg, args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1624, in _log
        self.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1634, in handle
        self.callHandlers(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1696, in callHandlers
        hdlr.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 968, in handle
        self.emit(record)
      File "/usr/local/lib/python3.10/logging/handlers.py", line 77, in emit
        self.handleError(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1022, in handleError
        traceback.print_exception(t, v, tb, None, sys.stderr)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 552, in __init__
        context = TracebackException(
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 383, in extract
        f.line
      File "/usr/local/lib/python3.10/traceback.py", line 306, in line
        self._line = linecache.getline(self.filename, self.lineno)
      File "/usr/local/lib/python3.10/linecache.py", line 30, in getline
        lines = getlines(filename, module_globals)
      File "/usr/local/lib/python3.10/linecache.py", line 42, in getlines
        if len(entry) != 1:
    RecursionError: maximum recursion depth exceeded while calling a Python object
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-21  16:06:31 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-21  16:06:31 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-21  16:06:31 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:31 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    
    
    ...
    das geht gefühlt 100x so weiter 
    ...
    
    
    2024-09-21  16:06:34 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:34 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:34 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-21  16:06:34 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:34 DEBUG    lib.model.sdp.connection close method called for connection
    2024-09-21  16:06:34 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient closing connection
    2024-09-21  16:06:34 DEBUG    plugins.denon       scheduler_get: name = plugins.denon.denon_cyclic
    2024-09-21  16:06:43 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller smartVISU, source 192.168.123.17 and dest None
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:43 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-21  16:06:43 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:43 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-21  16:06:43 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2
    
    
    ...
    das geht gefühlt 100x so weiter
    ...
    
    
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:43 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-21  16:06:43 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:43 INFO     plugins.denon       plugin resumed by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON, connections will be resumed
    2024-09-21  16:06:43 DEBUG    plugins.denon       Update_item was called with item "Rxx Denon Plugin suspendieren / fortfuehren" from caller Logic, source None and dest None
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend item changed to False
    2024-09-21  16:06:43 DEBUG    plugins.denon       Suspend mode disabled (set by suspend item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON)
    2024-09-21  16:06:43 ERROR    lib.item.item       Item SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON: problem running <bound method SmartDevicePlugin.update_item of <plugins.denon.denon object at 0x7fef6f839ff0>>: maximum recursion depth exceeded while calling a Python object
    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/logging/handlers.py", line 75, in emit
        logging.FileHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1218, in emit
        StreamHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1100, in emit
        msg = self.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 943, in format
        return fmt.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 679, in format
        if self.usesTime():
      File "/usr/local/lib/python3.10/logging/__init__.py", line 647, in usesTime
        return self._style.usesTime()
      File "/usr/local/lib/python3.10/logging/__init__.py", line 424, in usesTime
        return self._fmt.find(self.asctime_search) >= 0
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        method(self, caller, source, dest)
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 593, in update_item
        self.set_suspend(by=f'suspend item {item.property.path}')
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 326, in set_suspend
        self.resume(by)
      File "/usr/local/smarthome/lib/model/smartplugin.py", line 101, in resume
        self.logger.info(f'plugin resumed by {by if by else "unknown"}, connections will be resumed')
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1841, in info
        self.log(INFO, msg, *args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1879, in log
        self.logger.log(level, msg, *args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1547, in log
        self._log(level, msg, args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1624, in _log
        self.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1634, in handle
        self.callHandlers(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1696, in callHandlers
        hdlr.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 968, in handle
        self.emit(record)
      File "/usr/local/lib/python3.10/logging/handlers.py", line 77, in emit
        self.handleError(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1022, in handleError
        traceback.print_exception(t, v, tb, None, sys.stderr)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 353, in extract
        limit = getattr(sys, 'tracebacklimit', None)
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/logging/handlers.py", line 75, in emit
        logging.FileHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1218, in emit
        StreamHandler.emit(self, record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1100, in emit
        msg = self.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 943, in format
        return fmt.format(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 686, in format
        record.exc_text = self.formatException(record.exc_info)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 636, in formatException
        traceback.print_exception(ei[0], ei[1], tb, None, sio)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 353, in extract
        limit = getattr(sys, 'tracebacklimit', None)
    RecursionError: maximum recursion depth exceeded while calling a Python object
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        method(self, caller, source, dest)
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 593, in update_item
        self.set_suspend(by=f'suspend item {item.property.path}')
      File "/usr/local/smarthome/lib/model/smartdeviceplugin.py", line 326, in set_suspend
        self.resume(by)
      File "/usr/local/smarthome/lib/model/smartplugin.py", line 104, in resume
        self._suspend_item(False)
      File "/usr/local/smarthome/lib/item/item.py", line 1383, in __call__
        self.__update(value, caller, source, dest, key, index)
      File "/usr/local/smarthome/lib/item/item.py", line 2267, in __update
        logger.exception("Item {}: problem running {}: {}".format(self._path, method, e))
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1512, in exception
        self.error(msg, *args, exc_info=exc_info, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1506, in error
        self._log(ERROR, msg, args, **kwargs)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1624, in _log
        self.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1634, in handle
        self.callHandlers(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1696, in callHandlers
        hdlr.handle(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 968, in handle
        self.emit(record)
      File "/usr/local/lib/python3.10/logging/handlers.py", line 77, in emit
        self.handleError(record)
      File "/usr/local/lib/python3.10/logging/__init__.py", line 1022, in handleError
        traceback.print_exception(t, v, tb, None, sys.stderr)
      File "/usr/local/lib/python3.10/traceback.py", line 119, in print_exception
        te = TracebackException(type(value), value, tb, limit=limit, compact=True)
      File "/usr/local/lib/python3.10/traceback.py", line 552, in __init__
        context = TracebackException(
      File "/usr/local/lib/python3.10/traceback.py", line 502, in __init__
        self.stack = StackSummary.extract(
      File "/usr/local/lib/python3.10/traceback.py", line 383, in extract
        f.line
      File "/usr/local/lib/python3.10/traceback.py", line 306, in line
        self._line = linecache.getline(self.filename, self.lineno)
      File "/usr/local/lib/python3.10/linecache.py", line 30, in getline
        lines = getlines(filename, module_globals)
      File "/usr/local/lib/python3.10/linecache.py", line 42, in getlines
        if len(entry) != 1:
    RecursionError: maximum recursion depth exceeded while calling a Python object
    2024-09-21  16:06:43 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-21  16:06:43 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7fef6f839ff0>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-21  16:06:45 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-21  16:06:45 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7fef6f839ff0>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-21  16:06:46 WARNING  lib.network         (denon_192.168.123.26:23) TCP connection failed 1/5 times, last error was: [Errno 113] Keine Route zum Zielrechner
    2024-09-21  16:06:46 WARNING  lib.network         self._connect() for denon did not work
    2024-09-21  16:06:47 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-21  16:06:47 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7fef6f839ff0>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-21  16:06:49 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-21  16:06:49 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7fef6f839ff0>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    2024-09-21  16:06:49 WARNING  lib.network         (denon_192.168.123.26:23) TCP connection failed 2/5 times, last error was: [Errno 113] Keine Route zum Zielrechner
    2024-09-21  16:06:49 WARNING  lib.network         self._connect() for denon did not work
    2024-09-21  16:06:51 DEBUG    lib.model.sdp.connection open method called for connection
    2024-09-21  16:06:51 DEBUG    lib.model.sdp.connection SDPConnectionNetTcpClient opening connection with params {'serialport': '', 'baudrate': 9600.0, 'bytesize': 8.0, 'parity': 'N', 'stopbits': 1.0, 'protocol': None, 'host': '192.168.123.26', 'port': 23, 'binary': False, 'timeout': 3.0, 'autoreconnect': True, 'autoconnect': True, 'connect_retries': 5.0, 'connect_cycle': 3.0, 'retry_cycle': 30.0, 'retry_suspend': 3.0, 'terminator': b'\r', 'connected_callback': None, 'disconnected_callback': None, 'suspend_callback': <bound method SmartDevicePlugin.set_suspend of <plugins.denon.denon object at 0x7fef6f839ff0>>, 'done': False, 'model': 'AVR-X3300W', 'conn_type': 'net_tcp_client', 'command_class': 'SDPCommandParseStr', 'suspend_item': 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'webif_pagelength': 0, 'plugin_path': 'plugins.denon', 'custom_patterns': {1: '', 2: '', 3: ''}}
    ​

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Stell doch mal das log auf debug, am besten auch von lib.model.sdp

    Eventuell wird suspend Item drum aktiviert weil die Verbindung nicht (mehr) klappt..?

    Einen Kommentar schreiben:


  • loeserman
    antwortet
    Hmm ich dachte ich hätte es teilweise gefunden. Die Suspend Funktion scheint ja zum SmartDevicePlugin zu gehören. Allerdings weiss ich dadurch immer noch nicht, wann es sich suspendiert und ob ich das auch komplett abschalten kann.

    Habe ein Item eingeführt dazu

    item.conf
    Code:
    SONDERFUNKTIONEN:
        PLUGINS:
            name: SmartHome Plugin Funktionen
    
            SUSPEND_DENON:
                name: Rxx Denon Plugin suspendieren / fortfuehren
                type: bool
                visu_acl: rw
                enforce_updates: 'True'​

    dann bei dem Plugin mit angegeben
    Code:
    denon:
        plugin_name: denon
        model: AVR-X3300W # Reicht im Wesentlichen für den MARANTZ aus
        host: 192.168.xxx.xxx
        port: 23
        conn_type: net_tcp_client
        autoreconnect: true
        autoconnect: true
        suspend_item: 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON'​
    
    smartvisu:
        plugin_name: smartvisu
        smartvisu_dir: /var/www/html/smartvisu​
    Dann neu gestartet. Es läuft alles, auch das Plugin. Aber dann wird es ganz kurios. Ändere ich das Item in der Admin Oberfläche, und aktualisiere es wieder, dann bleibt es immer False. Die Zeit der letzten Änderung und auch Updates läuft einfach weiter, als hätte ich den Wert gar nicht geändert. Aber ansonsten läuft noch alles.

    Verändere ich hingegen in der VISU den Wert, dann schmiert mir die ganze VISU ab. Danach kann ich nichts mehr bedienen, auch keine anderen Items
    Code:
    {{ basic.stateswitch('', 'SONDERFUNKTIONEN.PLUGINS.SUSPEND_DENON', 'mini', [1,0], ['refresh', 'refresh'], '', ['icon1', 'icon0'], 'blink') }}
    Danach hilft nur noch ein Neustart. Dann läuft wieder alles bis ich in der VISU auf den Button drücke.

    Einen Kommentar schreiben:

Lädt...
X