Habe mir eine WebApp für den Batterie-Status gebaut

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
Also nochmal etwas näher geguckt... die Anfrage an https://www.bmw-connecteddrive.es/api/v ... ic/v1/[VIN] gibt einen error 500 zurück. Wurde das geändert ? Weiss das jemand ?
Anzeige

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
mittlerweile auch bei mir tot :-(
Bild

Model Y LR MIC
PV 11,6kWp
eHome 7,2kW Wallbox
go-e charger
Zencar flexible free 7,4kW

Re: Habe mir eine WebApp für den Batterie-Status gebaut

Gabatek
  • Beiträge: 95
  • Registriert: Do 16. Nov 2017, 22:47
  • Wohnort: Aargau Schweiz
  • Hat sich bedankt: 18 Mal
  • Danke erhalten: 7 Mal
read
Hmm bin mir jetzt grad unsicher, ob es Zufall Dummheit meinerseits oder am BMW Server liegt. Denn ich bin gerade dabei meinen Pi3-Server auf ein Pi4 umzustellen und such den Fehler weil nicht mehr geht. Bekomme die Meldung „Car in motion“ und alle werte auf 0. Auf meinem alten Server ging es gestern noch. Haben noch mehr Leute Probleme?
BMW i3 94Ah Rex 19.12.2018 - heute
BMW i3 60Ah Rex 11.03.2017 - 19.12.2018
Renault Twizy 23.06.2014 - 07.12.2018 ja der kleine Elektro-Flizer hat mich infiziert.

Re: Habe mir eine WebApp für den Batterie-Status gebaut

Gabatek
  • Beiträge: 95
  • Registriert: Do 16. Nov 2017, 22:47
  • Wohnort: Aargau Schweiz
  • Hat sich bedankt: 18 Mal
  • Danke erhalten: 7 Mal
read
Na der Zufall schein mal wieder zugeschlagen zu haben. Genau an dem Tag an dem ich eine „Down-Time“ habe. Bei mir läuft wieder alles wie gewohnt. Lag wohl doch am BMW Server
BMW i3 94Ah Rex 19.12.2018 - heute
BMW i3 60Ah Rex 11.03.2017 - 19.12.2018
Renault Twizy 23.06.2014 - 07.12.2018 ja der kleine Elektro-Flizer hat mich infiziert.

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
Gabatek hat geschrieben:Na der Zufall schein mal wieder zugeschlagen zu haben. Genau an dem Tag an dem ich eine „Down-Time“ habe. Bei mir läuft wieder alles wie gewohnt. Lag wohl doch am BMW Server
wirklich, jetzt klspots wieder. aber irgendwas gibts, denn fhem u. andere Programme haben fehlermeldungen sekt5 20.10.

i3s 94Ah

Bild

Model Y LR MIC
PV 11,6kWp
eHome 7,2kW Wallbox
go-e charger
Zencar flexible free 7,4kW

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
Seit paar Tagen habe ich wieder Probleme. Sonst noch jemand ?

Re: Habe mir eine WebApp für den Batterie-Status gebaut

sonshine
  • Beiträge: 1
  • Registriert: Mo 26. Okt 2020, 11:19
read
Das BMW-API nutze ich mit FHEM. Wenn man sich auf bmw einloggt, die AGBs akzeptiert und die Zugriffe von ...de auf ...com ändert, funktioniert es bei mir via FHEM. Grüsse Sonshine

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
treehacker hat geschrieben: Seit paar Tagen habe ich wieder Probleme. Sonst noch jemand ?
ja, BMW hat einige Sachen der API geändert
BMW i3 - 60Ah - BEV (Baudatum 09-2013) Andesitsilber - I001-18-11-539 - 10/2015-04/2019
BMW i3 - 120Ah - BEV (Baudatum 03.05.2019) Jucarobeige - I001-20-03-530 - seit 16.05.2019

FAQ-Thread für den BMW i3
steuerliche Fragen rund um das Elektroauto

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
read
treehacker hat geschrieben: Seit paar Tagen habe ich wieder Probleme. Sonst noch jemand ?
Wie der User Fridgeir geschrieben hat, muss man die API URL auf .com umstellen, dann werden zumindest wieder einige Daten angezeigt. Allerdings erscheint beim aktuellen SoC nun der Prozentwert, das Problem wird auch im Thread "Geniales iOS14 Homescreen Widget ..." diskutiert.

Konkret sieht das dann so aus
Dateianhänge
Bildschirmfoto vom 2021-03-19 17-33-40.png
i3 120 Ah; BJ 09/2019; SW I001-19-11-530; PV 5.3 kWp; Heidelberg Wallbox Home Eco

Re: Habe mir eine WebApp für den Batterie-Status gebaut

USER_AVATAR
  • Hacky
  • Beiträge: 1870
  • Registriert: Fr 25. Okt 2019, 21:37
  • Wohnort: Norddeutschland
  • Hat sich bedankt: 207 Mal
  • Danke erhalten: 970 Mal
read
Ich weiß, hier gibt es gefühlt schon unzählige Web- / iOS- / Android-Apps und -Widgets...
Da nun der Hack, um den SoCmax aus dem Code der (ehemaligen) Connected Drive Seite auszulesen, nicht mehr zur Verfügung steht, dachte ich mir, ich baue mir auch mal was Eigenes...

Es sollte möglichst alle wesentlichen Informationen übersichtlich - und spartanisch ohne Schnick-Schnack - auf einer Browser Seite, ohne Scrollen zu müssen, darstellen. Da ich in letzter Zeit gerne in Python und Streamlit unterwegs bin, solte das nun auch hierfür das bevorzugte Terrain sein.

Sieht erst mal wirklich spartanisch aus:
BMW_CD_API_APP.PNG
Ohne Kommentare sind es nur rund 70 Zeilen Code für die komplette Webseite. Die Kommunikation mit der BMW Connected Drive API übernimmt eine Python Klasse, die ich hier fand: https://github.com/gerard33/bmwcd
Ist zwar schon von 2018, aber die wesentlichen Funktionen laufen noch. Man muss darin nur die Credentials seines Connected Drive Accounts eintragen und den Hostnamen der aktuellen Connected Drive Services Seite: www.bmw-connecteddrive.com
Da das alles auf dem eigenen Rechner verbleibt, gibt es auch kein Vertraulichkeitsproblem.
Was in der Klasse nicht mehr funktionierte, sind die get_efficiency Abfrage und der Aufruf der Remote Services klappte auch nicht. Brauche ich aber erst mal nicht für meine Quick Hack Seite.

Falls jemand es nachbauen möchte, hier der Code:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Web based streamlit app for BMW connected drive API.
Dependenccy: bmwcdapi class forked from https://github.com/gerard33/bmwcd
Run with:
streamlit run bmwcdapi_app.py
"""
import streamlit as st
from bmwcdapi import ConnectedDrive

def app():
    # Define a character sequence that looks blank but consumes space. See https://emptycharacter.com/
    empty_characters = "\u200E\u200E\u200F\u200E \u200E"
    c = ConnectedDrive()
    # c.update() # happened already at class init
    VIN = c.bmw_vin
    cars = c.get_cars()
    model_name = cars[0]["modelName"]

    # Use the full page instead of a narrow central column
    st.set_page_config(layout="wide")
    # define 4 columns layout with different column widths
    c1, c2, c3, c4 = st.beta_columns([2, 3, 2, 2])

    car_data = c.get_car_data(VIN)
    c1.header(f"Car data ({model_name})")
    c2.header(empty_characters)
    c1.write("Charging:")
    c2.write(car_data["charging_status"])
    c1.write("Remaining charging time:")
    c2.write(car_data["remaining_charging_time_minutes"] + " minutes")
    c1.write("Remaining range:")
    c2.write(car_data["beRemainingRangeElectric"] + " " + car_data["unitOfLength"])
    c1.write("Mileage:")
    c2.write(car_data["mileage"] + " " + car_data["unitOfLength"])
    c1.write("Charging level:")
    c2.write(car_data["chargingLevelHv"] + "%")
    c1.write("State of charge:")
    c2.write(car_data["beEnergyLevelHv"] + " " + car_data["unitOfEnergy"])

    navigation = c.get_car_navigation(VIN)
    c1.write("SoC max:")
    c2.write(f'{navigation["socmax"]:.3f}  {car_data["unitOfEnergy"]}')
    c1.write("VIN:")
    c2.write(VIN)
    c1.write("Last update:")
    c2.write(car_data["updateTime_converted"])

    c1.header("Position:")
    c2.header(empty_characters)
    c1.write("GPS lat.:")
    c2.write(car_data["gps_lat"])
    c1.write("GPS lon.:")
    c2.write(car_data["gps_lng"])
    c1.write("Heading:")
    c2.write(car_data["heading"])

    c3.header("Lock State:")
    c4.header(empty_characters)
    c3.write("Door lock state:")
    c4.write(car_data["door_lock_state"])
    c3.write("Sun roof:")
    c4.write(car_data["sunroof_state"])
    c3.write("Door driver front:")
    c4.write(car_data["door_driver_front"])
    c3.write("Door passenger front:")
    c4.write(car_data["door_passenger_front"])
    c3.write("Door driver rear:")
    c4.write(car_data["door_driver_rear"])
    c3.write("Door passenger rear:")
    c4.write(car_data["door_passenger_rear"])
    c3.write("Window passenger front:")
    c4.write(car_data["window_passenger_front"])
    c3.write("Hood:")
    c4.write(car_data["hood_state"])
    c3.write("Trunk:")
    c4.write(car_data["trunk_state"])

    c3.header("Lights:")
    c4.header(empty_characters)
    c3.write("Parking lights:")
    c4.write(car_data["lights_parking"])

    # efficiency = c.get_car_efficiency(VIN)
    # st.write(efficiency)

    # service_partner = c.get_car_service_partner(VIN)
    # st.write(service_partner)


if __name__ == "__main__":
    app()
i3s 120 Lodge 10/19 - Knuffel, 11 kW Mennekes Wallbox
Anzeige
AntwortenAntworten

Zurück zu „i3 - Laden, Ladeequipment“

Gehe zu Profile
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag