Ankündigung

Einklappen
Keine Ankündigung bisher.

Unterstützung bei der Entwicklung eines Landroid-Plugin

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

    #46
    Die icons findest Du in Andre's Github (s. Post #40) unter landroid/plugins/sv_widgets/icons/sw/ bzw. ..../ws/.

    Falls Du allerdings das Plugin 'smartvisu' verwendest (zur automatischen Seitenerstellung) und folgenden Fehler erhälst:
    Code:
    IsADirectoryError: [Errno 21] Ist ein Verzeichnis: '/usr/local/smarthome/plugins/landroid/sv_widgets/icons'
    lass es mich wissen.

    Gruß
    Marcus

    Kommentar


      #47
      Zitat von Sipple Beitrag anzeigen
      Mit der pyworxcloud Version 1.4.19 war noch größeres Chaos. Da kam ständig:
      Kann ich bestätigen. pyworxcloud Version 1.4.11 scheint die letzte zu sein mit der das Plugin arbeitet.

      Kommentar


        #48
        Zitat von SMarcus Beitrag anzeigen
        Die icons findest Du in Andre's Github (s. Post #40) unter landroid/plugins/sv_widgets/icons/sw/ bzw. ..../ws/.
        Ich wusste doch dass ich die irgendwo gesehen habe. Danke

        Kommentar


          #49
          Hallo,

          kurz gesagt: Das Plugin ist noch nix für jemanden der "gerne testen" mag, sondern eher etwas für jemanden der "gerne debuggen" mag.
          2022-05-16 15:57:16 WARNING plugins.landroid Could not set item 'worx.mqtt_endpoint' to 'iot.eu-west-1.worxlandroid.com'
          Das Problem lässt sich durch einen Blick in den Code ja einfach bestimmen:
          Code:
                  item = self.items.return_item(self.parent_item + '.' + itemname)  
                  if (item != None):
                      item(value, self.get_shortname())
                  else:
                      self.logger.warning("Could not set item '{}' to '{}'".format(self.parent_item+'.'+itemname, value))
          Wenn es also o.g. Fehler gibt, dann muss item==None sein.

          Also findet
          Code:
          self.items.return_item(self.parent_item + '.' + itemname)
          nix.
          Also gibt es worx.mqtt_endpoint nicht.

          Eine Änderung in der plugin.yaml könnte das ändern:
          Zeile 168 alt:
          Code:
                  _worx_mqtt_endpoint:
                       type: str
          Zeile 168 neu:
          Code:
                  mqtt_endpoint:
                       type: str
          Gruß,
          Hendrik

          Kommentar


            #50
            hattest Du das bei Dir erfolgreich getestet? Ich habe das gerade implementiert, allerdings ist der Fehler in etwas abgewandelter Form nach wie vor da:

            Code:
            2022-05-16 19:10:00 WARNING plugins.landroid Could not set item 'worx._worx_mqtt_endpoint' to 'a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com'
            2022-05-16 19:10:07 WARNING plugins.landroid Could not set item 'worx._worx_mqtt_endpoint' to 'a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com'
            2022-05-16 19:10:08 WARNING plugins.landroid Could not set item 'worx._worx_mqtt_endpoint' to 'a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com'
            2022-05-16 19:10:24 WARNING plugins.landroid Could not set item 'worx._worx_mqtt_endpoint' to 'a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com'
            2022-05-16 19:10:35 WARNING plugins.landroid Could not set item 'worx._worx_mqtt_endpoint' to 'a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com'
            Gruß
            Marcus

            Kommentar


              #51
              Hallo nochmal,

              ich benutzte pyworxcloud 1.4.13.
              Anbei mal meine plugin.yaml mit o.g. Änderung und einer __init__.py mit einer angepassten _set_childitem()
              Code:
                  def _set_childitem(self, itemname, value ):
                      """
                      a shortcut function to set an item with a given value if it exists
                      :param itemname:
                      :param value:
                      :return:
                      """
                      item = self.items.return_item(self.parent_item + '.' + itemname)  
                      if (item != None):
                          item(value, self.get_shortname())
                      else:
                          self.logger.info("API provides '{}' but no item '{}' exists.".format(value, self.parent_item+'.'+itemname))
              macht aber nix anderes als die Log-Meldung zu ändern.

              Bezüglich der pyworxcloud-Version:
              Hier ist euere Mithilfe nötig.
              einfach die ältere Version nutzen wird dann schiefgehen, wenn Worx etwas an der API ändert und dies eine neue pyworxcloud-Version bedarf. Dann hängen wir noch auf der alten Version.
              Da die neue Version in HomeAssistant genutzt wird, wird es nicht an pyworxcloud liegen, sondern am plugin, vermute ich.
              Ich habe ja oben gezeigt, wie man den Fehler debuggt.
              Edit: Ist ja einfach/gleiches Problem: Jemand muss nur die plugin.yaml um die neuen/zusätzlichen Items erweitern.

              Gruß,
              Hendrik
              Angehängte Dateien
              Zuletzt geändert von henfri; 16.05.2022, 18:17.

              Kommentar


                #52
                Hallo,
                Zitat von SMarcus Beitrag anzeigen
                hattest Du das bei Dir erfolgreich getestet? Ich habe das gerade implementiert, allerdings ist der Fehler in etwas abgewandelter Form nach wie vor da:
                na, anders ist nur der Server auf dem dein Landroid gerade gehostet ist.
                Vergleich mal dein plugin.yaml und deine __init__.py mit meiner aus diesem Post.

                Gruß,
                Hendrik
                Angehängte Dateien

                Kommentar


                  #53
                  Hallo Hendrik,

                  - requirements.txt: pyworxcloud == 1.4.13
                  - __init__.py: aus Deiner landroid.zip
                  - plugin.yaml: aus Deiner landroid.zip


                  Code:
                  2022-05-16 19:27:46 WARNING plugins.landroid authentication was succesfull logged in
                  2022-05-16 19:27:48 ERROR pyworxcloud.worxlandroidapi Error: API endpoint doesn't exist
                  Noch irgendetwas, was geändert werden muss?

                  Gruß
                  Marcus

                  Kommentar


                    #54
                    Den Fehler hab ich auch. Plugin funktioniert hier dennoch.

                    Sind das die einzigen Fehler, die du noch hast?

                    Kommentar


                      #55
                      Vorab: Ich habe in der plugin.yaml die Zeilen 396 bis 411 auskommentiert, da diese redundant zu Zeilen 380 bis 395 sind.


                      Dann mal das Plugin etwas laufen lassen. Nach ca. 1 Stunde kommt bei jedem Cycle dann:

                      Code:
                      2022-05-17 08:08:57 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                      2022-05-17 08:08:57 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                      > Traceback (most recent call last):
                      > File "/usr/local/smarthome/lib/scheduler.py", line 657, in _task
                      > obj()
                      > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                      > self.worx.update()
                      > File "/home/smarthome/.local/lib/python3.9/site-packages/pyworxcloud/__init__.py", line 300, in update
                      > self._fetch()
                      > File "/home/smarthome/.local/lib/python3.9/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                      > for attr, val in products[self._dev_id].items():
                      > AttributeError: 'str' object has no attribute 'items'

                      SHNG dann nochmal neu initialisiert, soweit danach wieder alles OK (zumindest werden die items gefüllt):
                      Code:
                      2022-05-17 08:26:42 WARNING plugins.landroid authentication was succesfull logged in
                      2022-05-17 08:26:44 ERROR pyworxcloud.worxlandroidapi Error: API endpoint doesn't exist
                      Ich prüfe mal ob das Problem oben regelmässig auftritt.


                      Update: Ja, der 'Unauthorized' Error tritt immer genau 1 Stunde nach Initialisierung das erste Mal auf und kommt dann regelmässig mit jedem Cycle.

                      @Sipple - Mit dem Setup aus Post #53, wäre interessant ob das Problem auch bei Dir auftritt?


                      Hendrik, irgendeine Idee was die Ursache ist?


                      Gruß
                      Marcus
                      Zuletzt geändert von SMarcus; 17.05.2022, 09:04.

                      Kommentar


                        #56
                        Sobald ich dazu komme werde ich's testen. Im Laufe des Tages.

                        Bzw. schnell mal die geänderten Dateien verwendet und neu gestartet. Das kommt bei mir. Aktuell ist danach Ruhe. ich schau die nächsten Stunden immer mal wieder nach.

                        Code:
                        2022-05-17 10:16:32 WARNING lib.smarthome.main -------------------- SmartHomeNG restarting, initiated by admin interface --------------------
                        2022-05-17 10:17:09 WARNING lib.smarthome.main -------------------- Init SmartHomeNG 1.8.2.master (0f462a1e) --------------------
                        2022-05-17 10:17:09 WARNING lib.smarthome.main Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
                        2022-05-17 10:17:09 WARNING lib.smarthome.main - on Linux-5.10.17-v7l+-armv7l-with-debian-10.12 (pid=27260)
                        2022-05-17 10:17:09 WARNING lib.smarthome.main - Nutze Feiertage für Land 'DE', Provinz 'BY', 1 benutzerdefinierte(r) Feiertag(e) definiert
                        2022-05-17 10:17:16 WARNING lib.smarthome.main -------------------- SmartHomeNG initialization finished --------------------
                        2022-05-17 10:17:17 WARNING plugins.landroid authentication was succesfull logged in
                        2022-05-17 10:17:18 ERROR pyworxcloud.worxlandroidapi Error: API endpoint doesn't exist
                        2022-05-17 10:17:18 WARNING plugins.landroid Problem while parsing weather
                        Gruß, Martin
                        Zuletzt geändert von Sipple; 17.05.2022, 09:21.

                        Kommentar


                          #57
                          Zitat von SMarcus Beitrag anzeigen
                          Vorab: Ich habe in der plugin.yaml die Zeilen 396 bis 411 auskommentiert, da diese redundant zu Zeilen 380 bis 395 sind.
                          Stimmt, habe ich auch gesehen. Da war ich radikaler. Hab sie gleich raus geworfen

                          Kommentar


                            #58
                            Hab ich doch in der von mir geleisteten plugin.yaml schon rausgeworfen.

                            Kommentar


                              #59
                              Ok. Post #51 und #52, selber Name des Zip Archivs, aber unterschiedliche Version der plugin.yaml. Daher war das bei mir noch drin.

                              Kommentar


                                #60
                                Ok, Selber Fehler wie bei SMarcus nach ziemlich exakt 1h.

                                Code:
                                2022-05-17 10:16:32 WARNING lib.smarthome.main -------------------- SmartHomeNG restarting, initiated by admin interface --------------------
                                2022-05-17 10:17:09 WARNING lib.smarthome.main -------------------- Init SmartHomeNG 1.8.2.master (0f462a1e) --------------------
                                2022-05-17 10:17:09 WARNING lib.smarthome.main Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
                                2022-05-17 10:17:09 WARNING lib.smarthome.main - on Linux-5.10.17-v7l+-armv7l-with-debian-10.12 (pid=27260)
                                2022-05-17 10:17:09 WARNING lib.smarthome.main - Nutze Feiertage für Land 'DE', Provinz 'BY', 1 benutzerdefinierte(r) Feiertag(e) definiert
                                2022-05-17 10:17:16 WARNING lib.smarthome.main -------------------- SmartHomeNG initialization finished --------------------
                                2022-05-17 10:17:17 WARNING plugins.landroid authentication was succesfull logged in
                                2022-05-17 10:17:18 ERROR pyworxcloud.worxlandroidapi Error: API endpoint doesn't exist
                                2022-05-17 10:17:18 WARNING plugins.landroid Problem while parsing weather
                                2022-05-17 11:17:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:17:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'
                                2022-05-17 11:22:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:22:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'
                                2022-05-17 11:27:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:27:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'
                                2022-05-17 11:32:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:32:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'
                                2022-05-17 11:37:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:37:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'
                                2022-05-17 11:42:29 ERROR pyworxcloud.worxlandroidapi Error: Unauthorized
                                2022-05-17 11:42:29 ERROR plugins.landroid.poll_device Method plugins.landroid.poll_device exception: 'str' object has no attribute 'items'
                                > Traceback (most recent call last):
                                > File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                                > obj()
                                > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 345, in poll_device
                                > self.worx.update()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 300, in update
                                > self._fetch()
                                > File "/home/smarthome/.local/lib/python3.7/site-packages/pyworxcloud/__init__.py", line 294, in _fetch
                                > for attr, val in products[self._dev_id].items():
                                > AttributeError: 'str' object has no attribute 'items'

                                Kommentar

                                Lädt...
                                X