Source Code von battery.ebiene.de Website und API.
Battery Status
Progressive Web App für BMW i-Modelle ermittelt und zeigt Live-Informationen rund um den Fahrzeug-Akku. Die App bedient sich an gleicher Schnittstelle, die auch von der deutschsprachigen BMW ConnectedDrive Website verwendet wird. Für die Nutzung der Schnittstelle wird ein Bearer-Token benötigt, den die App von der BMW ConnectedDrive Website automatisch einholt.
Die Webseite nach Einrichtung im Smartphone-Browser aufrufen und zum Homescreen hinzufügen. Ab diesem Zeitpunkt lässt sich die Web App vom Homescreen heraus im Vollbildmodus starten.
Keine Garantie für Richtigkeit und Aktualität. Inbetriebnahme auf eigene Gefahr und Verantwortung. Implementierung ausschließlich zu Demozwecken.
- Apache-Webserver mit PHP
- BMW ConnectedDrive Zugangsdaten
- Datei
.htaccess
nach Wünschen anpassen, insbesondere Zeilen 20-21. - Datei
cache.json
im Ordnerapi/
beschreibbar anlegen. - Datei
token.json
im Ordnerapi/
beschreibbar anlegen. - Datei
auth.json
im Ordnerapi/
mit BMW ConnectedDrive Zugangsdaten anlegen:
{
"username": "XYZ",
"password": "XYZ",
"vehicle": "XYZ"
}
Feld | Beschreibung |
---|---|
username |
BMW ConnectedDrive Benutzername |
password |
BMW ConnectedDrive Passwort |
vehicle |
17-stellige Fahrgestellnummer |
Auf Wunsch kann der aktuelle Ladestatus des Fahrzeugs beobachtet und bei Änderungen (Ladevorgang gestartet, Ladevorgang beendet) eine Benachrichtigung gesendet werden. Folgende Voraussetzungen sind zu erwarten:
- Cronjob (serverseitig oder extern)
- Webhook(s) für Slack und/oder IFTTT
Via Cronjob prüft ein Skript auf die Veränderung des Ladezustandes (chargingSystemStatus
). Bei einer Änderung wird ein Webhook aufgerufen/kontaktiert. Der aufgerufene Webhook (Slack und/oder IFTTT) stößt eine Benachrichtigung auf der entsprechenden (Smartphone/Desktop) App aus.
Ziel-URL für den Cronjob: https://battery.ebiene.de/notify
- Datei
webhooks.json
im Ordnernotify/
mit angepassten Webhook-URLs anlegen:
{
"ifttt": "https://maker.ifttt.com/trigger/EVENT/with/key/KEY",
"slack": "https://hooks.slack.com/services/XXX/YYY/ZZZ"
}
Webhook-URL baut sich wie folgt zusammen: https://maker.ifttt.com/trigger/EVENT/with/key/KEY
Der Wert EVENT
kommt aus dem Punkt 3
, der KEY
aus 8
(siehe nachfolgende Einrichtung).
- https://ifttt.com/my_applets →
New Applet
if this
→Webhooks
→Receive a web request
Event Name
→ z.B.i3_charging
→Create trigger
then that
→Notifications
→Send a notification from the IFTTT app
Message
→{{Value1}}
→Create action
- Review and finish
- Den Schalter auf
On
stellen, falls nicht geschehen - https://ifttt.com/maker_webhooks →
Documentation
→Your key is
Um Zugriffe auf sensible (JSON-)Dateien mit Zugangs- und Token-Daten zu unterbinden, muss in .htaccess
folgender Code-Snippet aufgenommen werden (in der Installationsdatei .htaccess
bereits vorhanden):
<FilesMatch "(^\.|\.(json|md)$)">
order deny,allow
deny from all
</FilesMatch>
Nachfolgende Datenwerte zeigt die Battery Status
Web App aktuell an:
- Charge Status (Prozent)
- Electric Range (Kilometer)
- Fully Charged (Reststunden)
- State of Charge (kWh)
- State of Charge Max (kWh)
Von Makeable