NEWS
Test Adapter Niu E-Scooter
-
@cws Ich brauch entweder den debug log via PN oder Zugangsdaten dann könnte ich das beheben
-
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
inconst 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 vonconst 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-apiDort 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 -
@cws Kann ich mergen aber mit zugangsdaten könnte ich genau sehen was die App wie abfragt
-
Danke an @tombox für die weiter Umsetzung.
Mit Version 0.0.2 sieht erst mal alles soweit gut aus und liefert zumindest keine Fehlermeldungen mehr.
Ich glaube aber, dass die Objekte unter "status" und "scooter_info" nahezu die gleichen sind. "status" hat sogar noch ein paar mehr Informationen. Das prüfe ich nochmal im Detail, aber vermutlich kann man dann die Sachen für "scooter_info" noch aus der main.js wieder raus nehmen (oder zunächst mal auskommentieren).
Gibt es noch weitere Niu-ioBroker-User? Damit natürlich auch andere Modelle getestet werden können. Mein UQi GT ist ja eher ein exot hier in Deutschland.
-
Jo, sorry, war etwas in der Versenkung, da ich auch die Login Daten von meiner Frau nicht hatte
Ich hatte ja auch den NIU Adapter request gestellt.
Auf jeden Fall erst einmal super, dass da was gemacht wurde.Sie hat einen NQi Sport. Die Daten kommen. Und die Fehler sind ab der neuen Version auch verschwunden.
-
Eine Sache fällt doch auf.
Und zwar sind die Datenpunkte nicht immer aktuell.
Oft mal hängen alte Daten drin, erst wenn ich den Adapter neu starte werden sie aktualisiert.
Update interval habe ich auf 2 Minuten eingestellt. -
@hg6806 Sollte eigentlich nicht passieren kannst ja den adapter in log level debug setzen und schauen ob er aktualisiert
-
Das hatte gestern alles funktioniert, jetzt kommt wieder kein Update mehr und eine Menge Fehlermeldungen. Steht alles auf Debug.
niu.0 2022-06-02 17:26:20.823 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.822 error https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=3&sn=NA2L4Axxxxxxxxx niu.0 2022-06-02 17:26:20.820 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.820 error https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=2&sn=NA2L4Axxxxxxxxxxx niu.0 2022-06-02 17:26:20.817 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.816 error https://app-api-fk.niu.com/v3/motor_data/cycling_statistics?sortby=1&sn=NA2L4Axxxxxxxxxxx niu.0 2022-06-02 17:26:20.814 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.814 error https://app-api-fk.niu.com/v5/track/list/v2 niu.0 2022-06-02 17:26:20.811 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.811 error https://app-api-fk.niu.com/v3/motor_data/index_info?sn=NA2L4Axxxxxxx niu.0 2022-06-02 17:26:20.808 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.808 error https://app-api-fk.niu.com/v5/scooter/motor_data/index_info?sn=NA2L4Axxxxxxxx niu.0 2022-06-02 17:26:20.805 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.805 error https://app-api-fk.niu.com/v3/motor_data/battery_info?sn=NA2L4Axxxxxxx niu.0 2022-06-02 17:26:20.802 error TypeError [ERR_HTTP_INVALID_HEADER_VALUE]: Invalid value "undefined" for header "token" niu.0 2022-06-02 17:26:20.802 error https://app-api-fk.niu.com/v3/motor_data/battery_info/health?sn=NA2L4Axxxxxxx
-
@hg6806 Kannst du nochmal installieren und schauen ob der fehler weg ist
-
So, ich hab den Adapter jetzt seit dem letzten Update laufen und es kamen keine Fehler mehr usw. Würde sagen das Ding ist reif, um es auch auf mehr loszulassen. Was meint ihr?
Jemand ne Idee für die Adapter-Beschreibung? Ich kann ansonsten gerne mal den Vorschlag machen - erst mal auf Deutsch. Hab ich aber noch nie gemacht, von daher bräuchte ich da mal Hilfe.
-
Sagt mal, gibt es seitens API keine Info über den derzeitigen Kilometerstand des Fahrzeugs?
Also ich habe zumindest nichts gefunden.
Da ich das Ladegerät PV-bedingt über einen SONOFF POW freigebe, kann ich auch die Ladeenergie mittracken und somit immer den derzeitigen Stromverbrauch des Rollers berechnen. Dazu brauche ich aber immer den Kilometerstand. -
Hi, arbeitet oder pflegt den Adapter noch jemand ?
Da ich eine frage hätte ob es möglich wäre weitere Datenpunkte zu importieren :
"/motoinfo/overallTally": { "post": { "summary": "Returns the odometer value and days of usage", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "sn": { "$ref": "#/components/schemas/MopedDesc/properties/sn" }, "token": { "$ref": "#/components/schemas/Token" } } } } } }, "responses": { "200": { "description": "Odometer and time value", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "bindDaysCount": { "type": "integer" }, "totalMileage": { "type": "integer" } } } } } } } } } } },
Grüße
-
@michaelf habs mal in die GitHub version hinzugefügt
-
@tombox Mega, vielen Dank!
Funktioniert:
-
Hätte noch eine kleine Frage, wie sieht der Http Request zu dem neuen Datenpunkt aus?
Gibt es da überhaupt einen ?Grüsse
-
Hallo zusammen und vielen Dank für den Adapter. Gibt es irgendwo eine Liste, worin die Datenpunkte erklärt sind. Manche sagen mir nichts - wäre schön, wenn man nachschlagen könnte, was die einzelnen Datenpunkte bedeuten. Manche erklären sich ja von selbst, aber leider eben nicht alle.
Danke schonmal ...
Wolfgang -
@wolf-b Hi, welche sind denn unklar?
Grüsse
-
@michaelf Viele - hier mal ein paar Unklarheiten:
- GradeBattery (ist bei mir 99.5)
- backend_tiure_gauge_value (bei mir 0)
- batteryDetail: (bei mir true)
- battery_cang_lock (bei mir false)
- battery_range (bei mir steht da nix)
- centreCtrlBattery (bei mir 100)
- cycling_model (bei mir 2)
- expire_time (bei mir 0)
- isDefault (bei mir true)
- isMaster (bei mir true)
- is_first_access (bei mir false)
- refresh (bei mir aus)
- estimatedMileage (Kilometerstand: bei mir 78 / in der App 73)
- estimatedMileageRatio (bei mir 440)
- new estimatedMileageRatio (bei mir 440)
- hdop (bei mir 0)
- head_light_status (bei mir steht da nix)
- istfortification (bei mir 1)
- istcushion_lock_on (bei mir false)
- leftTime (bei mir 0)
- locationType (bei mir 1)
- low_power_mode_value (bei mir 0)
Und noch eine Frage: kann man irgendwo einstellen, dass er bei 80% aufhört zu laden ?
Vielen Dank schonmal ...
Gruß
Wolfgang -
@wolf-b Auch kann ich meinen Gesamt-km-Stand in den Objekten nicht finden. Wenn damit das Objekt "estimatedMileageRatio" sein sollte, dann steht da 440 drin, in meiner NIU-App habe ich aber einen km-Stand von 313 km.
Gibt es einen Datenpunkt (objekt) für den aktuellen Gesamt-km-Stand ? -
@wolf-b Zu Eurer Information: Ich habe einen NIU NQI GTS Pro neuestes Modell
Insgesamt finde ich den Adapter klasse - bis auf die paar Unklarheiten, die ich anhand der Daten bisher !nicht zuordnen kann.