Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Niu E-Scooter

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Niu E-Scooter

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tombox last edited by

      Hi ich habe ein neuen Adapter für Niu E-Scooter die mit der Niu App gesteuert werden können
      geschrieben.

      Steuerung über niu.0.id.remote

      Zum Installieren:
      https://github.com/TA2k/ioBroker.niu

      Unter Adapter Experten Modus aktivieren:
      9309457a-cad0-4ff4-946f-28df05d32801-image.png

      Unter Adapter das Github Icon klicken:
      ef5f973f-4a70-43be-bf9a-460726a69d1d-image.png
      Benutzerdefiniert auswählen und die Url einfügen.
      8328414c-da64-41d4-b524-5a75a25cb683-image.png

      Dann unter Adapter den Niu Adapter suchen und ganz rechts auf das Plus klicken.
      f59f304a-7769-463f-84d2-e36b461a87bd-image.png

      Loginablauf:
      Die Niu Mail und Passwort eingeben.

      C 1 Reply Last reply Reply Quote 0
      • C
        cws @tombox last edited by

        @tombox

        Vielen Dank für den Adapter. Hab nun auch einen Niu und ioBroker im Einsatz und da stand sofort ein Test an.

        Leider liest er die FIN bei mir nicht richtig aus und es steht nur ein "undefined" in den Objekten. Damit habe ich nur Fehler im Protokoll und keine richtigen Datenpunkte.

        Habe einen Niu UQi GT.

        Thomas Braun T 2 Replies Last reply Reply Quote 0
        • Thomas Braun
          Thomas Braun Most Active @cws last edited by

          @cws sagte in Test Adapter Niu E-Scooter:

          Damit habe ich nur Fehler im Protokoll

          Und die Fehler sind geheim?
          Das könnte schwierig werden.

          C 1 Reply Last reply Reply Quote 0
          • C
            cws @Thomas Braun last edited by

            @thomas-braun

            Natürlich nicht - Das steht im Log:

            niu.0
            2022-04-30 23:16:11.097	error	""
            
            niu.0
            2022-04-30 23:16:11.097	error	Error: Request failed with status code 500
            
            niu.0
            2022-04-30 23:16:11.096	error	https://app-api-fk.niu.com//v5/scooter/motor_data/index_info?sn=undefined
            

            Da die SN bzw FIN nicht ausgelesen wird kommt es zu dem Status 500.

            1 Reply Last reply Reply Quote 0
            • T
              tombox @cws last edited by

              @cws Ich brauch entweder den debug log via PN oder Zugangsdaten dann könnte ich das beheben

              C 1 Reply Last reply Reply Quote 0
              • C
                cws @tombox last edited by

                @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

                T 1 Reply Last reply Reply Quote 0
                • T
                  tombox @cws last edited by

                  @cws Kann ich mergen aber mit zugangsdaten könnte ich genau sehen was die App wie abfragt

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    cws @tombox last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • hg6806
                      hg6806 Most Active last edited by hg6806

                      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.

                      1 Reply Last reply Reply Quote 0
                      • hg6806
                        hg6806 Most Active last edited by

                        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.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tombox @hg6806 last edited by

                          @hg6806 Sollte eigentlich nicht passieren kannst ja den adapter in log level debug setzen und schauen ob er aktualisiert

                          hg6806 1 Reply Last reply Reply Quote 0
                          • hg6806
                            hg6806 Most Active @tombox last edited by hg6806

                            @tombox

                            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
                            
                            
                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tombox @hg6806 last edited by

                              @hg6806 Kannst du nochmal installieren und schauen ob der fehler weg ist

                              C 1 Reply Last reply Reply Quote 0
                              • C
                                cws @tombox last edited by

                                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.

                                1 Reply Last reply Reply Quote 0
                                • hg6806
                                  hg6806 Most Active last edited by

                                  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.

                                  1 Reply Last reply Reply Quote 0
                                  • MichaelF
                                    MichaelF last edited by

                                    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

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      tombox @MichaelF last edited by

                                      @michaelf habs mal in die GitHub version hinzugefügt

                                      MichaelF 1 Reply Last reply Reply Quote 1
                                      • MichaelF
                                        MichaelF @tombox last edited by

                                        @tombox Mega, vielen Dank!

                                        Funktioniert:
                                        Screenshot_20250418_103412_Samsung Internet.jpg

                                        1 Reply Last reply Reply Quote 0
                                        • MichaelF
                                          MichaelF last edited by

                                          @tombox

                                          Hätte noch eine kleine Frage, wie sieht der Http Request zu dem neuen Datenpunkt aus?
                                          Gibt es da überhaupt einen ?

                                          Grüsse

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          1.0k
                                          Online

                                          31.7k
                                          Users

                                          79.8k
                                          Topics

                                          1.3m
                                          Posts

                                          5
                                          19
                                          1104
                                          Loading More Posts
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          The ioBroker Community 2014-2023
                                          logo