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

    So, update erfolgt - hat ja gar nicht weh getan :-)

    Sieht aber leider noch nicht besser aus:
    table2.png

    Gruß,
    Hendrik
    Angehängte Dateien

    Kommentar


      Hmmm, Cache? Browser-Cache?

      Wenn ich Deinen Widget-Code aus Deinem Post #107 verwende und nur mein Testitem einsetze
      Code:
      {{device.uzsutable('ba','test.varuzsub.uzsu','Mähzeiten App-Kalender',['0','1'],'2',['greenyellow','green'],'red','','','true','5m','solid','false','true','true','true','1','list',['Mähen:0','Mähen+Kante:1','Mähen-Ende:2'])}}
      und dann in der Konsole aus dem Post 130 den Inhalt des "mittleren" Dicts in das Testitem schreibe:
      Code:
      io.write("test.varuzsub.uzsu","
      {'interpolation': {'type': 'none', 'initialized': False, 'itemtype': 'num', 'interval': '', 'initage': ''}, 'list': [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TH', 'value': '1', 'time': '08:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TH', 'value': '2', 'time': '10:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=TU,WE,FR,SA', 'value': '0', 'time': '08:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=TU,WE,FR,SA', 'value': '2', 'time': '10:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TH', 'value': '1', 'time': '13:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TH', 'value': '2', 'time': '15:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=TU,WE,FR,SA', 'value': '0', 'time': '13:00'}, {'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=TU,WE,FR,SA', 'value': '2', 'time': '15:00'}], 'active': True, 'SunCalculated': {'sunrise': {'MO': '05:14', 'TU': '05:13', 'WE': '05:12', 'TH': '05:10', 'FR': '05:09', 'SA': '05:08', 'SU': '05:07'}, 'sunset': {'MO': '21:28', 'TU': '21:30', 'WE': '21:31', 'TH': '21:33', 'FR': '21:34', 'SA': '21:35', 'SU': '21:36'}}}"
      liefert mir der Widget Assistant folgendes Ergebnis:
      Screenshot 2022-05-24 122242.jpg

      shNG ist Version 1.9.2.

      Gruß
      Wolfram

      Kommentar


        Hallo,

        ich habe die Idee

        Zitat von wvhn Beitrag anzeigen
        Die anderen items, die nur visualisiert werden können, kann man anders nennen, z.B. "worx.visu.app_mow_visu.visu" anstelle "worx.visu.app_mow_uzsu.uzsu". Das UZSU-Plugin ignoriert diese dann,
        von wvhn aufgegriffen und für den Ausschlusskalender + App-Mähzeitenkalender die UZSU komplett aussen vorgelassen. Somit dürfte uns das UZSU-Plugin hier keine Verwirrung mehr stiften. Ich denke damit sollten auch die Problem von Hendrik gelöst sein.
        Die Items heißen nun "worx.visu.app_mow_uzsu.timer" statt "worx.visu.app_mow_uzsu.uzsu" und "worx.visu.exclusion_uzsu.timer" statt "worx.visu.exclusion_uzsu.uzsu".
        Das heißt in der Visu müssen die Items geändert werden.

        Die von henfri geforderten Items
        Zitat von henfri Beitrag anzeigen
        rain_delay_time_remaining: type: num rain_sensor_triggered: type: num
        sind nun auch enthalten. Update ist hochgeladen.

        Viele Grüsse
        Andre

        Kommentar


          Hi AndreK

          Hab die Änderungen eben implementiert und er wirft folgenden Fehler:

          Code:
          2022-05-24 16:59:58 NOTICE lib.smarthome -------------------- SmartHomeNG stopped --------------------
          2022-05-24 16:59:59 NOTICE lib.smarthome -------------------- Init SmartHomeNG v1.9.2-master (cc57a0ad) --------------------
          2022-05-24 16:59:59 NOTICE lib.smarthome Running in Python interpreter 'v3.9.2 final', from directory /usr/local/smarthome
          2022-05-24 16:59:59 NOTICE lib.smarthome - on Linux-5.15.32-v8+-aarch64-with-glibc2.31 (pid=403488)
          2022-05-24 17:00:01 NOTICE lib.smarthome - Nutze Feiertage für Land 'DE', Provinz 'BY', 1 benutzerdefinierte(r) Feiertag(e) definiert
          2022-05-24 17:00:08 NOTICE lib.smarthome -------------------- SmartHomeNG initialization finished --------------------
          2022-05-24 17:00:09 WARNING plugins.landroid authentication was succesfull logged in
          2022-05-24 17:00:10 ERROR lib.plugin Plugin 'landroid' exception in run() method: 'NoneType' object has no attribute 'time'
          > Traceback (most recent call last):
          > File "/usr/local/smarthome/lib/plugin.py", line 676, in run
          > self.plugin.run()
          > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 123, in run
          > self.poll_device()
          > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 507, in poll_device
          > self.parse_worx_attr()
          > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 523, in parse_worx_attr
          > self._calc_calendar()
          > File "/usr/local/smarthome/plugins/landroid/__init__.py", line 172, in _calc_calendar
          > sunrise = (str(sunrise.time())[:5])
          > AttributeError: 'NoneType' object has no attribute 'time'
          Den Item Namen im Widget hab ich geändert auf .timer, im Itembaum kommt auch der geänderte Item Name vor, Visu Fehler gibt es keine, wird augenscheinlich alles richtig angezeigt.
          Die Regenverzögerungszeit klappt auch, das ist das Sahnehäubchen
          Zuletzt geändert von Sipple; 24.05.2022, 16:30.

          Kommentar


            Guten Morgen

            Bin echt zufrieden wie das läuft. Im Moment eigentlich nur noch zwei Kleinigkeiten.

            1. Die Updates kommen meist relativ spät. Das ist dann wohl das berühmte Polling Intervall.

            Screenshot 2022-05-25 103902.png

            Hab immer noch nicht verstanden, warum es da 2 cycles gibt. Ich vermute, der erste, 'cycle', der den Default Wert 300 hat, ist der Wichtige, der für die Updates des Status zuständig ist. Also ob der Roboter grad mäht, am Laden ist oder ob es Fehler gibt. Bevor ich nun rumspiele, den auf z.B. 2 Minuten stelle und dann für 24h geblockt werde, frag ich lieber. Wie habt ihr den eingestellt, damit das sicher noch funktioniert?

            2. Kleinigkeit bei der UZSU Tabelle der App Mähzeiten.

            Screenshot 2022-05-25 104336.png

            Der Aktivate-Button wird seit dem letzten Patch bei mir immer auf inactive gesetzt. Das hatte u.a. auch den Effekt, dass die ganze Tabelle mit 50% Opacity angezeigt wurde. Letzteres kann man im Widget aber manupulieren, auch wenn das so nicht in der Doku steht (Wert 0 anstatt 1, 2 oder 3). Nur ist der Button je nach Sichtweise so nicht korrekt. Sollte der Haken drin sein. Kann man anklicken, aber das ändert nur was, bis das nächste Update kommt. So hat man den Eindruck, dass der Mähkalender nicht aktiv ist. Im Widget kann man alles Mögliche Ein- oder Ausblenden. Den Button aber nicht. Oder seh ich den Wald vor lauter Bäumen nicht?
            Wie bekommen wir den Button auf Aktiv, oder gleich ganz weg? Denn man braucht ihn eigentlich ja nicht.

            Gruß, Martin
            Zuletzt geändert von Sipple; 26.05.2022, 08:37.

            Kommentar


              Hi Sipple,

              den Fehler aus Post 139 habe ich gefixt, ich fülle sunrise/sunset jetzt im UZSU-dict für die Kalenderdaten des Mähers über "env.location.sunrise" und "env.location.sunset". Beim Start des Plugins sind die items je nach Rechner noch nicht verfügbar. Auf einem Rechner hat die Zeit gereicht auf dem anderen nicht. Dazu habe ich einen Bugfix hochgeladen.

              zu 1. der "cycle"-scheduler ist fürs Polling, der "workload_cycle" für die Berechnung, bei mir steht der "cycle" aktuell auf 600 Sekunden, der andere auf 120 Sekunden. Laut den Infos aus anderen Foren und auf pyworxcloud kann man den Poll-Cycle bis auf 120 Sekunden runternehmen. Eventuell mal mit 140 Sekunden starten. Die pyworxcloud prüft ebenfalls nochmal auf die maximale Poll-Frequenz von 120 Sekunden - bei öfterem Pollen schmeißt pyworxcloud einen Fehler.

              zu 2.das mit "inactive-Style" = 0 hast Du richtig erkannt, den Active/Inactive-Button kann man im Moment nicht ausblenden, hat mich aber bei dieser Anwendung auch schon gestört, hier baue ich ins widget noch eine Option ein -> "ShowActiveButton". Aktuell wird das UZSU-dict bei jedem Poll im Plugin auf "inactive" gesetzt. (Kann man aber auch wieder ändern, da wir nun keine echte UZSU mehr an der Stelle haben und das UZSU-Plugin nicht mehr dazwischen funkt)

              Viele Grüsse
              Andre

              Kommentar


                @AndreK,

                gibt es Situationen, in denen das Plugin keine gültigen Daten bekommt? Dafür wäre der Inactive-Button und der ausgegraute Kalender eine gute Fehleranzeige. Wenn die Daten gültig /aktuell sind, setzt das Plugin das Dict auf „active“ und es erscheint ein grüner Haken und ein klar sichtbarer Kalender.

                Lässt sich das machen?

                Gruß
                Wolfram

                Kommentar


                  Ist auf jeden Fall eine Gute Idee, macht Sinn.

                  Kommentar


                    Nochwas ist mir im Kalenderwidget aufgefallen.
                    Wenn man mit der Maus über Start oder Endezeit schwebt, wird ja ein Tooltipp angezeigt. Da passt der String aber nicht komplett rein. Kann man den verbreitern?

                    Kommentar


                      Das Plugin funktioniert derzeit nicht mehr da sich vor einigen Tage anscheinen der Login bei Worxlandroid geändert hat:
                      Code:
                      2022-09-28  00:04:11 ERROR    plugins.landroid.poll_device Method plugins.landroid.poll_device exception: Expecting value: line 1 column 1 (char 0)
                      > 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 491, in poll_device
                      >     self.worx.getStatus()
                      >   File "/home/smarthome/.local/lib/python3.9/site-packages/pyworxcloud/__init__.py", line 185, in getStatus
                      >     self._decodeData(status)
                      >   File "/home/smarthome/.local/lib/python3.9/site-packages/pyworxcloud/__init__.py", line 191, in _decodeData
                      >     data = json.loads(indata)
                      >   File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
                      >     return _default_decoder.decode(s)
                      >   File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
                      >     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                      >   File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
                      >     raise JSONDecodeError("Expecting value", s, err.value) from None
                      > json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)​

                      Bei https://github.com/MTrab/pyworxcloud gab es entsprechend auch gerade ein Update auf Version 2.1.20.

                      Ich habe die requirements.txt entsprechend upgedatet:
                      Code:
                      pyworxcloud == 2.1.20
                      allerdings hat das nicht den gewünschen Erfolg gebracht:
                      Code:
                      2022-10-04  18:31:20 ERROR    lib.plugin          Plugin 'landroid' from section 'landroid' exception: __init__() missing 2 required positional arguments: 'username' and 'password'
                      > Traceback (most recent call last):
                      >   File "/usr/local/smarthome/lib/plugin.py", line 162, in __init__
                      >     plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta, self._configfile)
                      >   File "/usr/local/smarthome/lib/plugin.py", line 629, in __init__
                      >     exec("self.plugin.__init__(smarthome{0}{1})".format("," if len(arglist) else "", argstring))
                      >   File "<string>", line 1, in <module>
                      >   File "/usr/local/smarthome/plugins/landroid/__init__.py", line 81, in __init__
                      >     self.worx = pyworxcloud.WorxCloud()
                      > TypeError: __init__() missing 2 required positional arguments: 'username' and 'password'​

                      Muss da noch was am Plugin geändert werden?

                      Gruss
                      Marcus

                      Kommentar


                        Ja, pyworxcloud.WorxCloud() braucht jetzt wohl User und pass.

                        Kommentar

                        Lädt...
                        X