Ankündigung

Einklappen
Keine Ankündigung bisher.

Supportthread für UZSU Plugin

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

    Hallo und guten Abend,
    ist das hier das Support Thema für das UZSU-Plugin? Keine neuen Beiträge, daher die dumme Frage...

    Ich habe folgendes Problem bzw. ggfs. einen Fehler gefunden:
    Zur Automatisierung der Rolläden nutze ich das UZSU-Plugin. Das funktioniert auch tadellos mit den errechneten zeiten im Experten-Modus:
    1.png

    Allerdings werden die Werte der uzsu-items manchmal nicht korrekt gespeichert. Da steht dann als Beispiel folgendes drin:
    Code:
    {'interpolation': {'type': 'none', 'initialized': False, 'itemtype': 'num', 'interval': '', 'initage': ''}, 'list': [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'time': '06:00
    Wie man sieht, fehlen hinten die schließenden Klammern. Im Plugin sieht das genauso aus. Erstaunlicherweise hat das keine Auswirkung auf die eigentliche Funktionalität. Die Rolladen fahren wie gewünscht.

    Ich bin darauf gestoßen, beim Versuch das JSON Daten zu lesen via "sh.Haus.EG.Buero.Rollade1.position.uzsu()['list']" . Dies funktioniert nämlich nicht, da das Dictionary/die Liste defekt sind.

    Cache habe ich schon mehrfach gelöscht und auch SHNG neu gestartet. Bin gerade etwas ratlos.

    Danke für eure Hilfe,
    Thomas

    Achso: Alles auf aktuellem Stand: SHNG 1.81 / Smartvisu 3

    Kommentar


      Moin Thomas,

      wenn Du den Cache in smartVISU ausschaltest und mit F12 die Entwicklertools des Browsers öffnest, dann wird Dir der Datenverkehr auf dem Websocket angezeigt:
      Code:
      [io.smarthome.py] receiving data: {"cmd": "item", "items": [["eg.esszimmer.licht.fenster.uzsu",[MARKIEREN] {"interpolation": {"type": "none", "initialized": false, "itemtype": "num", "interval": "", "initage": ""}, "list": [{"active": true, "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU", "value": "2", "calculated": "21:30", "time": "16:30[/MARKIEREN]<sunset<21:30"}, {"active": true, "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU", "value": "0", "time": "21:35"}], "active": false, "sunrise": "06:36", "sunset": "20:13", "lastvalue": null}]]}
      Hier sind alle Klammern geschlossen, ebenso wie beim Senden. Ich verwende smartVISU v3.0.1 mit smarthomeNG v1.8.2 und das neue Websocket-Modul.

      Im Admin-Interface unter Items wird das Dict allerdings nicht vollständig angezeigt, sondern lediglich der oben gelb markierte Teil. Ebenso im Webinterface des UZSU-Plugins.

      Bitte prüfe das mal bei Dir und nenne auch die verwendeten Versionen, so dass wir den Fehler eingrenzen können.

      Gruß
      Wolfram
      Gruß
      Wolfram

      Kommentar


        Hallo Wolfram,

        kann ich in der Tat genauso bestätigen. Websocket noch alles grün:
        Code:
        [io.smarthome.py] sending data:  {"cmd":"item","id":"Haus.EG.Buero.Rollade2.position.uzsu","val":{"interpolation":{"type":"none","initialized":false,"itemtype":"num","interval":"","initage":""},"list":[{"active":true,"rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","value":"0","calculated":"06:53","time":"06:00<sunrise+10m<08:30"},{"active":true,"rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU","value":"255","calculated":"20:24","time":"16:30<sunset+12m<23:00"}],"active":true,"lastvalue":"255","sunrise":"06:41","sunset":"20:23"}}
        Im Item fehlt dann der Teil nach "time":
        Code:
        {'interpolation': {'type': 'none', 'initialized': False, 'itemtype': 'num', 'interval': '', 'initage': ''}, 'list': [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'time': '06:00
        Meine Vermutung: Das hat mit dem "kleiner als" zu tun. Da genau dort immer abgeschnitten wird. Stimmt hier evtl was mit dem escaping nicht? Der String scheint immer am "<" abgeschnitten zu werden.

        VG, Thomas

        Kommentar


          Moin Thomas,

          das item (dict) ist auf dem websocket in beiden Richtungen immer vollständig. Das siehst Du in meinem Post, in dem die von shNG an SV gesendeten Daten gezeigt sind.

          Deshalb denke ich, dass das dict innerhalb von shNG integer ist und lediglich die Darstellung im Admin-Interface nicht stimmt. Escaping ist wahrscheinlich der richtige Hinweis.

          Meiner Ansicht nach erklärt das aber noch nicht, warum das dict beim Auslesen der json-Daten abgeschnitten wird. Passiert das an der gleichen Stelle? Und ist der Effekt real vorhanden, oder auch wieder nur ein Problem der Anzeige im Browser?

          Ich frage mich gerade, ob das CLI noch funktioniert. Darin müsste man sowohl das item, als auch die ausgelesenen json-Daten im Textmodus untersuchen können.

          Gruß
          Wolfram
          Gruß
          Wolfram

          Kommentar


            Hey Wolfram,
            danke für deine Hilfe. Möglicherweise ist es nur die Anzeige. Werde das heute Abend mal durch den Debugger jagen und reinschauen in das sh-Objekt, dazu hatte ich gestern keine Lust. ;-)

            vielleicht liest ja kein Core-Entwickler hier mit: kann man eigentlich auch irgendwie in die Cache-files reinschauen?

            Thomas

            Kommentar


              Hab jetzt mal in nostalgischer Stimmung das CLI angeschmissen. Das ist echt hilfreich.
              Ergebnis: bei der reinen Textausgabe ist alles vorhanden
              Code:
              eg.esszimmer.licht.fenster.uzsu = {'interpolation': {'type': 'none', 'initialized': False, 'itemtype': 'num', 'interval': '', 'initage': ''}, 'list': [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '2', 'calculated': '21:30', 'time': '16:30<sunset<21:30'}, {'active': False, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'time': '21:35'}], 'active': False, 'sunrise': '06:36', 'sunset': '20:13', 'lastvalue': None}
              Nachdem nun endgültig der Spieltrieb geweckt war, habe ich eine kleine Logik erstellt:
              Code:
              #!/usr/bin/env python3
              # dictlist.py
              mydict = sh.eg.esszimmer.licht.fenster.uzsu()['list']
              logger.warning("mydict = {}".format(mydict))
              Ergebnis:
              Code:
              2021-04-13  12:30:26 WARNING  logics.DictList     mydict = [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '2', 'calculated': '21:30', 'time': '16:30<sunset<21:30'}, {'active': False, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'time': '21:35'}]
              Also auch hier alles in Ordnung

              Wenn ich mydict jetzt noch in ein item vom Typ list schreibe, dann kann ich im CLI wieder den vollständigen Datensatz finden:
              Code:
              test.varlist = [{'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '2', 'calculated': '21:30', 'time': '16:30<sunset<21:30'}, {'active': False, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'time': '21:35'}]
              Warum das Schreiben in mein Test-item vom Typ dict nicht funktioniert hat (auch nicht als ich das gesamte dict ausgelesen habe), habe ich nicht weiter untersucht.

              Gruß
              Wolfram
              Gruß
              Wolfram

              Kommentar


                Gibts da ne Essenz von dem Ganzen? Probleme mit JSON und dem kleiner/größer Zeichen? Und dadurch falsche Anzeige im AdminIF und WebIF vom Plugin und allen anderen json Manipulationen? Wie ließe sich das am Besten fixen?

                Kommentar


                  Bisheriger Stand der Analyse ist, dass das UZSU-Dict jederzeit korrekt innerhalb shNG sowie zwischen shNG und SV verarbeitet wird. Der in #1 vermutete Fehler ist somit widerlegt.

                  Allerdings haben das Admin Interface und auch das Webinterface des UZSU-Plugins ein Escaping-Problem, d.h. die Ausgabe bricht beim ersten "<" ab, weil dies als Beginn eines html-Tags interpretiert wird.

                  Ob es noch ein Problem beim Erzeugen des JSON-strings gibt, untersucht thengsty noch.

                  Gruß
                  Wolfram
                  Gruß
                  Wolfram

                  Kommentar


                    Also: alles soweit im grünen Bereich. JSON String ist immer vollständig und nicht abgeschnitten.
                    Mit deinem Hinweis konnte ich nun auch die kalkulierte Uhrzeit extrahieren:
                    Code:
                    sh.Haus.EG.Buero.Rollade1.position.uzsu()['list'][0]['calculated']
                    Die Anzeige im admin Interface ist allerdings wirklich buggy. Der Fehler lässt sich auch einwandfrei reproduzieren, wie oben schon beschrieben.

                    Soll ich hierzu mal in issue reporten in GitHib?

                    Danke euch und Grüße,
                    Thomas

                    Kommentar


                      Ja, Issues klingen vernünftig. Danke!

                      Ich denke, es macht wenig Sinn, das nur im uszu Plugin abzufangen. Das sollte wenn möglich global gefixt werden, zumal das Prob ja auch im Admin IF vorhanden ist.
                      Zuletzt geändert von Onkelandy; 17.04.2021, 06:55.

                      Kommentar


                        Ich vermute, das hier ist halbwegs brauchbar, dann auch für andere Bereiche, wo das gebraucht wird..?
                        html.escape(json.dumps(**dict**))

                        Bitte testet mal hier: https://github.com/smarthomeNG/plugins/pull/508

                        Kommentar


                          Hi Onkelandy,

                          ich hab mal getestet. Im Webinterface des Plugins ist nun alles korrekt:
                          web.png

                          In der Item-Liste des Admin aber noch fehlerhaft. Gut, irgendwie logisch, da hast du ja auch nichts geändert. ;-)
                          items.png

                          Danke und Grüße,
                          Thomas
                          Angehängte Dateien
                          You do not have permission to view this gallery.
                          This gallery has 1 photos.

                          Kommentar

                          Lädt...
                          X