TRV Json Status fehlerhaft (ausgelagerte Diskussion)

  • Hier ist der Thread

    gn8

    Die JSON sieht dann so aus:

    Code
    {"wifi_sta":{"connected":true,"ssid":"1","ip":"172.16.0.67","rssi":-62},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"13:24","unixtime":1671539092,"serial":0,"has_update":false,"mac":"60A423DAF91E","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"thermostats":[{"pos":0.0,"target_t":{"enabled":true,"value":��.�,"value_op":�.�,"units":"C"},"tmp":{"value":��.�,"units":"C","is_valid":true},"schedule":true,"schedule_profile":2,"boost_minutes":0,"window_open":false}],"calibrated":true,"bat":{"value":100,"voltage":�.���},"charger":false,"update":{"status":"unknown","has_update":false,"new_version":"20220811-152343/v2.1.8@5afc928c","old_version":"20220811-152343/v2.1.8@5afc928c","beta_version":null},"ram_total":97280,"ram_free":22848,"fs_size":65536,"fs_free":59340,"uptime":149268,"fw_info":{"device":"shellytrv-60A423DAF91E","fw":"20220811-152343/v2.1.8@5afc928c"},"ps_mode":0,"dbg_flags":0}

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

  • Ok und wie sieht ein ordentliches Json aus, bitte poste dazu ebenfalls ein Beispiel.

    Das scheint ein Codierungsproblem zu sein.

    Eig, könntest du mit ner if Abfrage oder for Schleife, nach der String Größe/Länge oder direkt nach den Platzhaltern Filtern und so das defektes Json noch im Hauptskript erkennen.

    Dann wäre es dir auch möglich per http call den Shelly direkt im Hauptskript neuzustarten.

    3 Mal editiert, zuletzt von _[Deleted]_ (23. April 2023 um 12:43)

  • Auf den ersten Blick würde ich sagen, die 2. } fehlt, wenn es kein c&p Fehler ist.

  • ist hier aber OT

    Code
    "value":��.�
    "value_op":�.�
    "value":��.�
    "voltage":�.���

    Das sind die Problemfälle. Diese

    Code
    ��.�

    seltsamen Zeichen kommen so vom TRV. Wenn man zeitnah einen Reboot ausführt, ist alles wieder tutti. Wenn nicht hilft nur ein Werksreset.

    Der Fehler tritt selten auf. Sagen wir mal ein mal im Monat. Ich habe aber 11 von den Dingern --> ein bis zwei mal pro Woche vor der Heizung sitzen. Das nervt.

    Es haben mehrere User Tickets am Laufen. Standard Antwort ist:

    Yes, we have similar raised issue with the developers.

    Please, set a fixed 2.4Ghz channel on the network and have the devices connected to it.

    Disable the 5Ghz network if it's not used.

    Disable the band-steering feature.

    Set static IP on the client and on the user side.

    Disable the CoIoT feature of the device if it's not being used.

    nützt aber alles nichts.

    Deshalb das Script.

    Ich hatte das bei mir als Python. Läuft wunderbar. Das bekommen aber nicht alle User hin. Also habe ich mir extra einen Gen2 gekauft und mich in das Scripting eingearbeitet. Jetzt kann das auch auf einem Shelly laufen und ist für jeden User leicht zu handeln.

    Scriptechnisch sind diese komischen Zeichen das Problem. Man kann ja nur mit:

    Code
    json  = JSON.parse(res.body);

    prüfen, ob die JSON ok ist. Sind diese komischen Zeichen drin, stürzt das Script ab. Also habe ich das in meinem Script(s) durch die Aufteilung in mehrere Scripts gelöst. Läuft wunderbar, habe seit dem nicht mehr vor der Heizung gesessen.

    Das Script schickt eine Nachricht, wenn es ein TRV rebootet wird. Und täglich einen Report mit den Akkuständen der TRV.

    Aber solange das mit dem CallMeBot nicht geklärt ist (anderer Thread) habe ich das noch nicht öffentlich gemacht als Workaround.

    Eig, könntest du mit ner if Abfrage, anhand der String Größe/Länge, ein defektes Json noch im Hauptskript erkennen

    Ne, leider nicht. Weil z.B. Temperaturen wie folgt dargestellt werden:

    20,1 °C -> 20.1

    20,0 °C -> 20

    Außerdem entsprechen diese komischen Zeichen keiner dem mjs Interpreter bekannten Zeichencodierung.

    Also kann man auch nicht:

    Wenn "komisches Zeichen" in JSON, dann reboot

    machen.

    Man kann den Fehler auch leider nicht simulieren. Das macht es wahrscheinlich auch so schwer für die Devs das zu fixen.

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

  • 66er

    Du hast recht es fehlt ebenfalls das letzte: "}"

  • Dieses Thema enthält 20 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.