Bug in HTTPMOD Modul?

Begonnen von Nogga, 07 Dezember 2020, 15:24:03

Vorheriges Thema - Nächstes Thema

Nogga

Seit meinem (!) letzten FHEM Update vor 3-4 Tagen funktioniert irgendwas mit dem HTTMOD Modul nicht mehr richtig:

2020.12.07 15:14:40 3: niu_api: error while parsing JSON data: Wide character in subroutine entry at lib/FHEM/HTTPMOD/Utils.pm line 644.

Das kommt bei ausnahmslos jedem Aufruf der Seite (ich "zapfe" den REST Service meines NIU E-Rollers an).
Ich kann leider nicht genau sagen, welchen Versionsstand ich vor dem Update hatte, aber ich schätze ca. 8-12 Monate her...
Mit dem alten Stand hat es noch funktioniert... Linux habe ich zwischenzeitlich nicht aktualisiert.

Wenn ich manuell über Postman den Service abrufe bekomme ich eine gültige JSON Antwort:

Folgend das Device (Ich habe aus Sicherheitsgründen Fahrzeug + Token entfernt - wird also so nicht funktionieren).


defmod niu_api HTTPMOD https://app-api-fk.niu.com/v3/motor_data/index_info?sn=XXXXXXXXXXXXXXXXX
attr niu_api userattr get01JSON reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name requestHeader1
attr niu_api alias Niu Roller
attr niu_api event-on-change-reading .*
attr niu_api extractAllJSON 0
attr niu_api group Außen
attr niu_api reading01JSON data_estimatedMileage
attr niu_api reading01Name estimatedMileage
attr niu_api reading02JSON data_isCharging
attr niu_api reading02Name isCharging
attr niu_api reading03JSON data_batteries_compartmentA_batteryCharging
attr niu_api reading03Name batteryLevel
attr niu_api reading04JSON data_batteries_compartmentA_isConnected
attr niu_api reading04Name isConnected
attr niu_api reading05JSON data_postion_lat
attr niu_api reading05Name gpsLat
attr niu_api reading06JSON data_postion_lng
attr niu_api reading06Name gpsLng
attr niu_api requestHeader1 token: XXXXXXXXXXXXXXXXXXXXXXX
attr niu_api room Steuerung,System
attr niu_api stateFormat Batterie: batteryLevel%, Lädt: isCharging
attr niu_api timestamp-on-change-reading .*



Und die JSON Antwort - gerade über Postman abgeholt:

{
    "data": {
        "isCharging": 0,
        "lockStatus": 0,
        "isAccOn": 0,
        "isFortificationOn": 0,
        "isConnected": true,
        "postion": {
            "lat": 48.14503166666667,
            "lng": 11.427393333333333
        },
        "hdop": 1,
        "time": 1607350702151,
        "batteries": {
            "compartmentA": {
                "bmsId": "XXXXXXXXXXXXXXXXX",
                "isConnected": true,
                "batteryCharging": 36,
                "gradeBattery": "97.4"
            }
        },
        "leftTime": "17.0",
        "estimatedMileage": 23,
        "gpsTimestamp": 1607350702151,
        "infoTimestamp": 1607350702151,
        "nowSpeed": 0,
        "shakingValue": 3,
        "locationType": 2,
        "batteryDetail": true,
        "centreCtrlBattery": 100,
        "ss_protocol_ver": 3,
        "ss_online_sta": "1",
        "gps": 4,
        "gsm": 21,
        "lastTrack": {
            "ridingTime": 835,
            "distance": 5604,
            "time": 1605449706727
        }
    },
    "desc": "Erfolg",
    "trace": "Erfolg",
    "status": 0
}


Hat einer eine Idee, was das Problem sein könnte?

StefanStrobel

Hallo,

setz doch mal bodyDecode auf none.
(siehe https://forum.fhem.de/index.php/topic,45176.945.html)

Gruss
   Stefan

Nogga

Hallo Stefan,

das scheint tatsächlich zu funktionieren! Ich hab zwar keine Ahnung was der Parameter bewirkt, aber es geht ;-)

Gruß
Alex