@tombox @thomas-braun
Nabend zusammen,
ich habe mal den Debug-Log angeschmissen und habe dort festgestellt, dass es bei dem UQi den Datenpunkt "sn" nicht gibt. Der heißt dort "sn_id".
Wenn ich in der main.js in Zeile 121 const vin = device.sn
in const vin = device.sn_id
ändere, dann kommt auch der 500er Fehler nicht mehr und es werden Daten ausgelesen. Leider funktioniert hier keine if-Schleife im Sinne von
const vin = device.sn_id;
if (device.sn) {
vin = device.sn;
}
Er meckert wegen der Konstanten.
Bei der weiteren Recherche bin ich noch auf folgendes Re-Engineering gestoßen:
https://github.com/Bonnee/niu-app-api
Dort sind noch ein paar URL's enthalten, die noch mehr Daten auslesen können. Diese habe ich nun auch etwas durchgetestet und ebenfalls in der main.js in der Funktion asnyc updateDevices()
folgenden Code angehängt:
{
path: "scooter_info",
url: "https://app-api-fk.niu.com/v3/motor_data/index_info?sn=$vin",
desc: "More Information of the scooter",
},
{
path: "track",
url: "https://app-api-fk.niu.com/v5/scooter/motor_data/track?sn=$vin",
desc: "Tracks of the scooter",
},
{
path: "cycling_statistics.day",
url: "https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=1&sn=$vin",
desc: "Cycling statistics by day of the scooter",
},
{
path: "cycling_statistics.week",
url: "https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=2&sn=$vin",
desc: "Cycling statistics by week of the scooter",
},
{
path: "cycling_statistics.month",
url: "https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=3&sn=$vin",
desc: "Cycling statistics by month of the scooter",
},
Damit erhalte ich noch etwas mehr Informationen.
Interessanter Weise bekomme ich beim Aufruf der URL https://app-api-fk.niu.com/v5/scooter/motor_data/index_info?sn= ebenfalls einen 500er-Fehler und daher keine Daten. Der Teil zu "track" liefert im Moment auch nur einen 404-Fehler, von daher muss man mal schauen, wie da die richtige URL lautet. Habe ich im Moment noch etwas ausgeklammert.
Zumindest mit "scooter_info" bekomme ich noch etwas mehr Informationen, wie den aktuellen Batterieladestand und auch die Position (lng / lat) von dem Scooter.
Bei "cycling_statistics" hab ich noch nicht ganz raus, was die Parameter bei "sortby" bedeuten: Hier kann man 1, 2 oder 3 angegeben. Vermutlich die Statistic für Tag, Woche und Monat - ich glaube so gibt es das auch in der App. Daher hier mal die 3 Varianten.
"batter_info" bringt bei mir nur unmengen an Datenpunkten ohne wirklich Inhalte. Daher habe ich die auch mal ausgeklammert. Ebenso "battery_info_health". Die Informationen, die ich über "scooter_info" bekomme, reichen mir da. Bei "battery_info_health" versucht er bei mir auch einen Datenpunkt "Ladezyklen * 2" zu setzen, der nur auf Fehler läuft. Ich vermute mit dem "* 2" kommt er nicht zurecht.
Hier die Fehlermeldungen dazu:
State "niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.result" has no existing object, this might lead to an error in future versions
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.name
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.time
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.color
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.chargeCount
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2.result
Error: Invalid ID: niu.0.VIN.battery_info_health.data.batteries.compartmentA.Ladezyklen * 2
Soweit meine aktuelle Analyse. Ich mache gleich mal ein Pull request für die main.js, dann siehst Du, wo ich die Veränderungen gemacht habe.
Schönen Abend.
Michael