Code Monkey home page Code Monkey logo

battery.ebiene.de's Introduction

battery.ebiene.de

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.

Battery Statusanzeige
Battery Statusanzeige

Warnung

Keine Garantie für Richtigkeit und Aktualität. Inbetriebnahme auf eigene Gefahr und Verantwortung. Implementierung ausschließlich zu Demozwecken.

Voraussetzungen

  • Apache-Webserver mit PHP
  • BMW ConnectedDrive Zugangsdaten

Installation (API)

  1. Datei .htaccess nach Wünschen anpassen, insbesondere Zeilen 20-21.
  2. Datei cache.json im Ordner api/ beschreibbar anlegen.
  3. Datei token.json im Ordner api/ beschreibbar anlegen.
  4. Datei auth.json im Ordner api/ 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

Installation (NOTIFY)

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:

  1. Cronjob (serverseitig oder extern)
  2. Webhook(s) für Slack und/oder IFTTT
Das Prinzip

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.

Cronjob

Ziel-URL für den Cronjob: https://battery.ebiene.de/notify

Webhooks
  1. Datei webhooks.json im Ordner notify/ mit angepassten Webhook-URLs anlegen:
{
    "ifttt": "https://maker.ifttt.com/trigger/EVENT/with/key/KEY",
    "slack": "https://hooks.slack.com/services/XXX/YYY/ZZZ"
}
IFTTT

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).

  1. https://ifttt.com/my_appletsNew Applet
  2. if thisWebhooksReceive a web request
  3. Event Name → z.B. i3_chargingCreate trigger
  4. then thatNotificationsSend a notification from the IFTTT app
  5. Message{{Value1}}Create action
  6. Review and finish
  7. Den Schalter auf On stellen, falls nicht geschehen
  8. https://ifttt.com/maker_webhooksDocumentationYour key is
Slack

Incoming Webhooks für Slack

Sicherheit

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>

Datenausgabe

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)

App-Icon

Von Makeable

battery.ebiene.de's People

Contributors

sergejmueller avatar ocean90 avatar swissspidy avatar quattromic avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.