Startseite » , QR-Code für diese Seite

NIU Roller in openHAB integrieren

16 März 2022, 486x angezeigt, Kein Kommentar
Tags: , , , , , , , ,

Da seit einigen Tagen ein openHAB bei mir läuft, versuche ich zunehmend weitere smarte Geräte in die Haussteuerung zu integrieren. Dies wollte ich auch mit dem NIU Roller machen, sodass ich den Batteriestatus und ggf. weitere Informationen auslesen kann. Auf der Recherche bin ich auf folgenden Forum-Eintrag im Elektroroller-Forum gestoßen, welcher von vielen API-Integrationen zitiert bzw. darauf verwiesen wird. Im Netz finden sich einige API-Integrationen in den Programmiersprachen Node/JS oder PHP Skripte diesbezüglich. Ich habe mich aber gegen diese Skripte entschieden, weil ich diese zu umfangreich (Node und seine vielen Abhängigkeiten) oder technisch nicht sauber genug fand (PHP alles in einer Datei). Somit habe ich selbst Hand angelegt und beschreibe euch nun im Detail die Integration ins openHAB Step-By-Step. Viel Spaß.

Wie bekomme ich Daten aus der NIU App in das openHAB? (App Icons iOS)

API Zugriff

Im ersten Schritt habe ich mich mit der API auseinandergesetzt. Da ich die bisherigen Integrationen unzureichend fand, habe ich selbst die API in PHP integriert. Zu finden ist das ganze auf GitHub unter github.com/lochmueller/niu-api-connector. Die Integration der API sieht vor, dass eine PHAR-Datei generiert wird, welche einfach heruntergeladen und mit PHP ausgeführt werden kann, ohne dass man weitere Dinge benötigt. Die aktuellen PHAR Datei können den Actions z.B. hier entnommen werden und werde ich in Kürze auch an die Releases binden. Ich denke, ich werde in den nächsten Tagen noch weitere Funktionen ergänzen, sodass die Benutzung weiter vereinfacht wird.

D.h. es muss nur die aktuelle PHAR Datei heruntergeladen und in dem openHABian z.B. im Home-Verzeichnis platziert werden. Für die Benutzung empfehle ich, wie in der README.md beschrieben, einfach den die Datei ohne Parameter auszuführen. Die integrierte Hilfe leitet einen dann durch die verschiedenen Befehle und Parameter. Für meinen Usecase habe ich „niu:authentication“, „niu:vehicles“ und „niu:motor“ benutzt.

API-Installation auf Raspberry PI

Nachdem die Datei im Home-Verzeichnis liegt, ist Folgendes auszuführen, sodass die API benutzt werden kann. Schaut euch jeden Schritt an und liest den Kommentar dazu sorgfältig durch. Falls ihr Fragen dies bzgl. habt, einfach hier unter dem Beitrag oder auf Github einen Kommentar bzw. Issue anlegen.

sudo apt-get install php8.0-cli php8.0-curl # PHP mit curl installieren.
cd /home/openhabian/ # Ins Home-Verzeichnis wechseln (hier wurde die PHAR Datei platziert).
touch .env # ENV Datei anlegen. Hier Zugangsdaten hinterlegen gemäß Dokumentation von GitHub.
chmod +x niu-api-connector.phar # Datei ausführbar machen.

./niu-api-connector.phar # testen ob alles geht. Ihr solltet eine Ausgabe der Commands sehen.

./niu-api-connector.phar niu:authentication # Wenn die .env passend gefüllt ist, sollte eine Erfolgsmeldung erscheinen, dass ein Token abgelegt wurde. Der Token liegt per Default im gleichen Verzeichnis und heißt “auth.token“.

./niu-api-connector.phar niu:vehicles # Zeigt deine Fahrzeuge an und gibt dir deine SerialNumber des passenden Fahrzeuges aus, welche du für den eigentlichen Aufruf brauchst.

# Finaler Aufruf (XXXXX deine SerialNumber des Fahrzeuges)
/home/openhabian/niu-api-connector.phar niu:motor XXXXXX --format=json --tokenFile=/home/openhabian/auth.token

Als Resultat solltet ihr ein JSON mit technischen Motor-Informationen eures Rollers sehen. Hier ist auch der Batterie-Stand zu finden. Ab damit ins openHAB…

Integration in openHAB

Die Integration ins openHAB habe ich mit dem Exec Binding gemacht. Damit bin ich in der Lage, in gewissen Intervallen einfach das Script auszuführen, welches die Informationen ausgibt. Des Weiteren habe ich die JsonPath Transformation im openHAB (unter weitere Add-Ons) installiert, sodass ich das JSON effizient verarbeiten kann. Damit der „Exec Binding“-Befehle ausgeführt werde kann, muss dieser in eine Whitelist eingetragen werden. Mit folgendem Befehl könnt ihr die Whitelist öffnen und den „finalen Befehl“ in die Liste mit aufnehmen.

sudo vi /etc/openhab/misc/exec.whitelist 

Ist dies geschehen, könnt ihr ein neues “Thing“ vom Typ “Exec Binding“ anlegen und den Befehl in das Binding eintragen. Zusätzlich kann hier auch das Intervall in Sekunden hinterlegt werden. Ich empfehle das Intervall nicht zu niedrig zu wählen. Ich habe mich für 15 Minuten (= 900 Sekunden) entschieden. Jetzt nur noch die Daten weiterverarbeiten…

Transformation und Weiterverarbeitung

Der Exec Befehl liefert das komplette JSON, welches ihr auch beim manuellen Ausführen des Befehls gesehen habt. Wir wollen jedoch ausschließlich Zugriff auf den Batteriestatus, sodass wir diesen in der openHAB App darstellen oder dies bzgl. weitere Dinge steuern können. Somit habe ich die Transformation mittels JsonPath vorgenommen. In das Feld der Transformation ist nun JSONPATH(.totalBatteryCharging) einzutragen. Dadurch wird ausschließlich das komplette Batterie-Ladelevel von dem „Thing“ als Zahl erfasst. Da dies eine numerischer Wert ist, habe ich das Item entsprechend auch als Number im openHAB konfiguriert.

Fazit

Sehr coole & neue Möglichkeiten, welche sich durch die Integration eröffnen. Finde es schade, dass die NIU API nicht solch einen guten Eindruck macht (keine gute Dokumentation gefunden, keine echten Status-Codes in Gebrauch), aber irgendwie kann man sich da „durch Kämpfen“. Bin auf Feedback gespannt und werde den API Connector gerne noch weiter ausbauen.

Der Status der Batterie wird nun aufgezeichnet und kann im openHAB benutzt werden
Tim Lochmüller Autor
Name: Tim Lochmüller
Webseite: http://typo3blogger.de
Posts: 252 Posts

Hinterlasse einen Kommentar/Leserbrief!

Füge deinen Kommentar hinzu oder sende einen Trackback von deiner Webseite aus.
Du kannst zudem die Kommentare via RSS abonnieren .

Sei freundlich! Halt dich ans Thema! Kein Spam!

Mit dem Absenden bestätigst du, dass es sich um keinen Spam handelt.