Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlerhafte Einrückung in einem Item wirft Exception in 1.9.3

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

  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Je nach Python Version wird eine unterschiedliche minimale pymodbus Version benötigt. (Ich vermute, dass müsste man bei den weiter oben aufgeführten Plugins auch so machen.
    Das ist richtig. Ich hatte die plugins zwar alle für die beide mosbus-Versionen gefixt. Nicht aber die requirements. Das müsste ich dann mal nachholen. Bzw. kannst du die requirements einfach aus der pluggit verwenden, also einfach rüber kopieren? Zusätzliche, andere requirements gibt es in keinen der plugins.

    Zitat von Msinn Beitrag anzeigen
    Ein Problem sehe ich hier:

    War leider ein Copy&Paste-Fehler. Entschuldigung. So ist es richtig drin:

    Code:
    # plugin 'modbus_tcp'
    # plugin 'trovis557x'
    # plugin 'ksemmodbus'
    # plugin 'kostalmodbus'
    # plugin 'sma_mb'
    pymodbus>=2.3.0
    
    # plugin 'pluggit'
    pymodbus==2.5.3;python_version<"3.8"
    
    # plugin 'pluggit'
    pymodbus>=3.0.2;python_version>="3.8"
    
    # plugin 'helios_tcp'
    pymodbus3>=1.0.0

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zu
    Code:
    # plugin 'modbus_tcp'
    # plugin 'trovis557x'
    # plugin 'ksemmodbus'
    # plugin 'kostalmodbus'
    # plugin 'sma_mb'
    pymodbus>=2.3.0
    fällt mir auf: sind diese Plugins eigentlich alle pymodbus 3.x kompatibel?

    Bei pluggit ist eine (syntaktisch) richtige Einschränkung gesetzt:

    Code:
    # plugin 'pluggit'
    pymodbus==2.5.3;python_version<"3.8"
    
    # plugin 'pluggit'
    pymodbus>=3.0.2;python_version>="3.8"
    Je nach Python Version wird eine unterschiedliche minimale pymodbus Version benötigt. (Ich vermute, dass müsste man bei den weiter oben aufgeführten Plugins auch so machen.

    Dass beim pluggit Plugin das configured fehlt, ist wohl der geteilten complexeren Requirement Definition geschuldet.

    Ein Problem sehe ich hier:

    Code:
    # plugin 'helios_tcp'
    pymodbus3>=1.0.0​pymodbus>=3.0.2;python_version>="3.8"​
    Diese Angabe ist syntaktisch falsch.

    Auf github steht da übrigens:
    Code:
    pymodbus3 >= 1.0.0
    ​
    Für das pluggit Plugin steht auf github übrigens:
    Code:
    pymodbus>=1.4.0
    und nicht, wie aus der requirements/all.txt hervorgeht
    Code:
    pymodbus==2.5.3;python_version<"3.8"
    pymodbus>=3.0.2;python_version>="3.8"
    ​

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von Cannon Beitrag anzeigen
    Was auch imme rmal kommt ist das hier. Damit kann das aber nichts zu tun haben?
    Kann es sein, dass die Fritzbox auf Abfrage der Monitoringservice "nur" einen Fehlercode sendet, so dass der Inhalt der Rückmeldung "None" ist. "None" kann dann nicht weiterverarbeitet, daher der Fehler.
    Der Fehler wird in Zeile 422 des Plugins abgefangen.

    Wie gesagt, Auslöser ist eine "nicht erwartete" Antwort der Fritzbox. Welche Firmware hast Du installiert?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    • Bei Dir konfigurierte Plugins haben im Kommentar ein configured am Anfang stehen.
    • Kannst Du mir auch noch sagen, welche pymodbus Version bei Dir installiert ist?
    Ich fange mal hier. Da ist einiges nicht so, wie es sein sollte, vermute ich:

    Code:
    # plugin 'modbus_tcp'
    # plugin 'trovis557x'
    # plugin 'ksemmodbus'
    # plugin 'kostalmodbus'
    # plugin 'sma_mb'
    pymodbus>=2.3.0
    
    # plugin 'pluggit'
    pymodbus==2.5.3;python_version<"3.8"
    
    # plugin 'pluggit'
    pymodbus>=3.0.2;python_version>="3.8"
    
    # plugin 'helios_tcp'
    pymodbus3>=1.0.0​pymodbus>=3.0.2;python_version>="3.8"​
    1. Installiert ist pymodubs Version 3.02.
    2. Das Plugin 'pluggit'ist konfiguriert, wird nur nicht als "configured" angezeigt.
    3. Andere Modbus-Sachen nutze ich derzeit nicht.

    Zitat von Msinn Beitrag anzeigen
    Kannst Du die Code Änderung bitte machen, wie ich sie gepostet hatte (self.logger.exception) und nicht self.logger.error?
    Habe ich genau so gemacht, einfach nur mit Copy & Paste. Hier die ganze Funktion nach deinem Patch:

    Code:
        def lookup_pypi_releasedata(self, pypi_available=True):
            self.logger.debug("lookup_pypi_releasedata: pypi_available={}".format(pypi_available))
            for package in self.package_list:
                if (package['is_required'] == True) or True:
                    if pypi_available :
                        self.get_package_releases_data(package)
                        #scheduler.add(self, name, obj, prio=3, cron=None, cycle=None, value=None, offset=None, next=None, from_smartplugin=False):
                        #self._sh.scheduler.add(self._itemname_prefix + self._path, self, cron=self._crontab, cycle=cycle)
                    else:
                        self.logger.warning("get_packagelist ({}): PyPI nicht erreichbar".format(package))
                        if package['pypi_version'] == '':
                            package['pypi_version'] = '--'
                        package['pypi_version_not_available_msg'] = 'PyPI nicht erreichbar'
    
                # check if installed version is ok and recent
                #self.check_package_version_data(package)
                try:
                    self.check_package_version_data(package)
                except Exception as e:
                    self.logger.exception(f"lookup_pypi_releasedata: Package {package} - Exception: {e}")
            return

    Ich schreibe mal den gesamten Log-Teil hier rein:

    Code:
    2023-01-13  12:47:01 ERROR    lib.shpypi          lookup_pypi_releasedata: Package {'name': 'pymodbus', 'vers_installed': '3.0.2', 'is_required': False, 'is_required_for_plugins': True, 'is_required_for_testsuite': False, 'is_required_for_docbuild': False, 'required_group': '3', 'sort': '3pymodbus', 'vers_req_min': '*', 'vers_req_max': None, 'vers_req_msg': '', 'vers_req_source': '', 'vers_ok': False, 'vers_recent': False, 'pypi_version': '3.0.2', 'pypi_version_ok': True, 'pypi_version_not_available_msg': '', 'pypi_doc_url': 'https://pypi.org/pypi/pymodbus'} - Exception: 'NoneType' object has no attribute 'split'
    > Traceback (most recent call last):
    >   File "/usr/local/smarthome/lib/shpypi.py", line 753, in lookup_pypi_releasedata
    >     self.check_package_version_data(package)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 773, in check_package_version_data
    >     max_met = self._compare_versions(inst_vers, max, '<=')
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1029, in _compare_versions
    >     v2 = self._version_to_list(vers2)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1053, in _version_to_list
    >     vsplit = vers.split('.')
    > AttributeError: 'NoneType' object has no attribute 'split'
    Was auch imme rmal kommt ist das hier. Damit kann das aber nichts zu tun haben?

    Code:
    2023-01-13  13:24:43 ERROR    plugins.avm         fritzbox_7490@: MonitoringService: TypeError while handling Callmonitor response: 'NoneType' object is not callable
    2023-01-13  13:25:31 ERROR    plugins.avm         fritzbox_7490@: MonitoringService: TypeError while handling Callmonitor response: 'NoneType' object is not callable
    ​

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    • Kannst Du die Code Änderung bitte machen, wie ich sie gepostet hatte (self.logger.exception) und nicht self.logger.error?

      Die Zeilennummern haben sich gegenüber Deinem ersten Post geändert und ich wollte bei der Problemsuche nicht auch noch Zeilennummern-Aritmetik machen.
    • Kannst Du mal in der requirements/all.txt nachschauen welche bei Dir konfigurierten Plugins pymodbus nutzen?

      In der all.txt steht
      Code:
      	# plugin 'modbus_tcp'
      	# plugin 'pluggit'
      	# plugin 'trovis557x'
      	# plugin 'sma_mb'
      	# plugin 'kostalmodbus'
      	# plugin 'ksemmodbus'
      	# plugin 'sma_mb'
      	pymodbus>=2.3.0
      	​
      Bei Dir konfigurierte Plugins haben im Kommentar ein configured am Anfang stehen.
    • Kannst Du mir auch noch sagen, welche pymodbus Version bei Dir installiert ist?
    Zuletzt geändert von Msinn; 13.01.2023, 13:16. Grund: Nachtrag: Frage nach der pymodbus Version

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Dann noch mal zurück zu meiner ersten Frage (weiter oben): Hast Du Plugins im Einsatz, die nicht aus dem plugins Repo kommen?

    Zusätzlich die Frage: Hast Du irgendwelche "eher exotische" Python Packages installiert?
    Die Frage ist schwer zu beantworten, weil ja zum einen immer wieder andere packages (für weitere Plugins) benötigt werden und man dann auch nicht mehr weiß, was jetzt besonders exotisch ist. Sonst habe ich, soweit ich mich erinnere, lediglich sdp_squeezebox mit drin. Aber sicher bin ich da nicht.

    Zitat von Msinn Beitrag anzeigen
    Um dem Thema näher zu kommen: Könntest Du in der Datei lib.shpypi folgende Code Zeilen (750-751):
    Mache ich - gleich getestet:

    Code:
    2023-01-13  12:47:01 ERROR    lib.shpypi          lookup_pypi_releasedata: Package {'name': 'pymodbus', 'vers_installed': '3.0.2', 'is_required': False, 'is_required_for_plugins': True, 'is_required_for_testsuite': False, 'is_required_for_docbuild': False, 'required_group': '3', 'sort': '3pymodbus', 'vers_req_min': '*', 'vers_req_max': None, 'vers_req_msg': '', 'vers_req_source': '', 'vers_ok': False, 'vers_recent': False, 'pypi_version': '3.0.2', 'pypi_version_ok': True, 'pypi_version_not_available_msg': '', 'pypi_doc_url': 'https://pypi.org/pypi/pymodbus'} - Exception: 'NoneType' object has no attribute 'split'
    So wie ich das sehe, ist da was in den requirements falsch?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Dann noch mal zurück zu meiner ersten Frage (weiter oben): Hast Du Plugins im Einsatz, die nicht aus dem plugins Repo kommen?

    Zusätzlich die Frage: Hast Du irgendwelche "eher exotische" Python Packages installiert?

    Um dem Thema näher zu kommen: Könntest Du in der Datei lib.shpypi folgende Code Zeilen (750-751):
    Code:
                # check if installed version is ok and recent
                self.check_package_version_data(package)
    ​
    durch folgende ersetzen:

    Code:
                # check if installed version is ok and recent
                try:
                    self.check_package_version_data(package)
                except Exception as e:
                    self.logger.exception(f"lookup_pypi_releasedata: Package {package} - Exception: {e}")
    ​

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Ich muss da noch mal drauf zurückkommen. Offensichtlich hat das mit einer Einrückung nichts zu tun. Ich erhalte Die Fehlermeldung mal immer wieder nach einen Neustart. Vermutlich ist das Problem ein anderes und vermutlich tritt das nicht nach jedem Neustart auf. Hier noch mal ein Auszug:

    Code:
    2023-01-13  09:34:24 ERROR    plugins.avm         fritzbox_7490@: MonitoringService: TypeError while handling Callmonitor response: 'NoneType' object is not callable
    2023-01-13  09:51:38 ERROR    plugins.avm         fritzbox_7490@: MonitoringService: TypeError while handling Callmonitor response: 'NoneType' object is not callable
    2023-01-13  09:59:38 ERROR    modules.websocket   smartVISU_protocol_v4 exception: Client RYZEN.fritz.box (192.168.1.10:51753), shngAdmin v0.6.0, Firefox 108 - received 1005 (no status code [internal]); then sent 1005 (no status code [internal])
    2023-01-13  09:59:49 ERROR    shpypi.get_releasedata Method shpypi.get_releasedata exception: 'NoneType' object has no attribute 'split'
    > Traceback (most recent call last):
    >   File "/usr/local/smarthome/lib/scheduler.py", line 657, in _task
    >     obj()
    >   File "/usr/local/smarthome/lib/shpypi.py", line 751, in lookup_pypi_releasedata
    >     self.check_package_version_data(package)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 769, in check_package_version_data
    >     max_met = self._compare_versions(inst_vers, max, '<=')
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1025, in _compare_versions
    >     v2 = self._version_to_list(vers2)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1049, in _version_to_list
    >     vsplit = vers.split('.')
    > AttributeError: 'NoneType' object has no attribute 'split'
    2023-01-13  10:00:22 NOTICE   lib.smarthome       --------------------   Init SmartHomeNG v1.9.3-master (aa143b82a)   --------------------​
    Ich habe mal extra ein bisschen mehr mit aufgenommen. Aber so richtig weiß ich nicht, wo ich suchen soll.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das kann man nicht umfassend abfangen. Die Einrückungsfehler, die als solche sicher erkennbar sind, werden vom ruamel.yaml Package bereits erkannt. Aber das Package kann nicht immer erkennen, ob eine Einrückung gewollt oder ein Fehler ist. Erkannte Strukturfehler in YAML Dateien werden als WARNINGS geloggt.
    Zuletzt geändert von bmx; 01.12.2022, 13:38. Grund: Diskussion aus 1.9.3 ausgegliedert in eigenen Thread

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Hast Du Plugins im Einsatz, die nicht aus dem plugins Repo kommen?
    Ich komme nochmal darauf zurück, da ich den Fehler wieder. Und wieder war es eine fehlerhafte Einrückung in einem Item. Könnte man das nicht abfangen und den Fehler entsprechend so ermitteln, dass man zumindest weiß, wo man suchen soll?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Hast Du Plugins im Einsatz, die nicht aus dem plugins Repo kommen?
    Danke für den Hinweis. Problem ist gefunden. Ich hatte einen Fehler in einem Item (Telegram Plugin). Das war auch schon das Problem. Aber du sucht man sich ja irre, ist ja ganz woanders.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hast Du Plugins im Einsatz, die nicht aus dem plugins Repo kommen?

    Das hat nichts mit dem Admin Interface zu tun. Beim Versuch die Versionsnummer eines Packages aufzuteilen, findet die Routine keinen Punkt in der Versionsnummer.

    Einen Kommentar schreiben:


  • Fehlerhafte Einrückung in einem Item wirft Exception in 1.9.3

    Ich habe mit der neuen Version leider ein Bug im Log:

    Code:
    2022-11-24  19:01:11 ERROR    modules.websocket   smartVISU_protocol_v4 exception: Client RYZEN.fritz.box (192.168.1.10:59376), shngAdmin v0.6.0, Firefox 107 - received 1005 (no status code [internal]); then sent 1005 (no status code [internal])
    2022-11-24  19:01:17 ERROR    shpypi.get_releasedata Method shpypi.get_releasedata exception: 'NoneType' object has no attribute 'split'
    > Traceback (most recent call last):
    >   File "/usr/local/smarthome/lib/scheduler.py", line 657, in _task
    >     obj()
    >   File "/usr/local/smarthome/lib/shpypi.py", line 751, in lookup_pypi_releasedata
    >     self.check_package_version_data(package)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 769, in check_package_version_data
    >     max_met = self._compare_versions(inst_vers, max, '<=')
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1025, in _compare_versions
    >     v2 = self._version_to_list(vers2)
    >   File "/usr/local/smarthome/lib/shpypi.py", line 1049, in _version_to_list
    >     vsplit = vers.split('.')
    > AttributeError: 'NoneType' object has no attribute 'split'​
    Hat wohl auch irgendwas mit dem Admin-Interface zu tun. Es ist mitunter auch sehr langsam beim laden.
Lädt...
X