TRV Json Status fehlerhaft (ausgelagerte Diskussion)

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

  • 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}
  • 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)

  • 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.

  • @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.