-
What happened?Ich lese über python das json Objekt über http-get von /api/dtu/config aus, ändere dann die Frequenz unter cmt_frequency und sende das vollständige json Objekt über http-post an die DTU. Ich erhalte dann eine Fehlermeldung: Failed to parse data. Wenn ich mit derselben Vorgangsweise /api/ntp/config einlese und dann ntp_server ändere und dann mit http-post an die DTU sende, dann wird die Änderung übernommen. Prinzipiell sollte meine Vorgangsweise also korrekt sein. To Reproduce Bug#python script: serial = "1164a006b111" # Seriennummer des Hoymiles Wechselrichters, Buchstaben klein!!! dtu_ip = '10.0.0.206' # IP Adresse von OpenDTU dtu = requests.get(url = f'http://{dtu_ip}/api/dtu/config', auth = HTTPBasicAuth(dtu_nutzer, dtu_passwort) ).json() Expected Behaviorwie beschrieben möchte ich cmt_frequency über die web api ändern Install MethodPre-Compiled binary from GitHub releases What git-hash/version of OpenDTU?24.9.30 What firmware variant (PIO Environment) are you using?generic_esp32 Relevant log/trace outputjson Antwort von http-post:
Konfiguration gesendet ({'type': 'warning', 'message': 'Failed to parse data!', 'code': 1004}) Anything else?No response Please confirm the following
|
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 1 reply
-
Moving it to discussions as it is no issue but most likely a faulty usage of the API. (The web frontend only uses the API you described and its working there) |
Beta Was this translation helpful? Give feedback.
-
The error message See Lines 108 to 115 in 3dc70ab |
Beta Was this translation helpful? Give feedback.
-
Ist der Inhalt des json-Objekts bei /api/dtu/config unterschiedlich aufgebaut bei HTTP-get und HTTP-post? |
Beta Was this translation helpful? Give feedback.
-
@stefan123t danke für den Hinweis mit den Developertools, habe ich zwar schon gekannt, aber in diesem Fall nicht daran gedacht. Der python code ist korrekt und funktioniert bei Limitänderung seit Monaten problemlos. Auch die Änderung des NTP-Servers funktionierte sofort. Nach mehreren Stunden erfolglosen Suchens nach einem Fehler in meiner request.post Anweisung ist mir dann eingefallen, dass ich bei den ersten Versuchen bei der Limit-Vorgabe ein ähnliche Problem hatte, damals hatte ich Großbuchstaben in der Seriennummer und das hat nicht funktioniert. Nun sind in dem JSON-Objekt /api/dtu/config Werte, die TRUE oder FALSE sein können. Die json Lib von python übersetzt dies mit True und False. Erlaubt sind aber offensichtlich nur true und false. |
Beta Was this translation helpful? Give feedback.
The error message
Failed to parse data!',
indicates that your json is invalid.See
OpenDTU/src/WebApi.cpp
Lines 108 to 115 in 3dc70ab