Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter BMW/Mini v4.x.x

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

Test Adapter BMW/Mini v4.x.x

Geplant Angeheftet Gesperrt Verschoben Tester
1.0k Beiträge 96 Kommentatoren 272.5k Aufrufe 85 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    createch2
    schrieb am zuletzt editiert von
    #978

    Ich hab den Adapter bei mir auch laufen, funktioniert gut soweit. Lediglich die Poll Begrenzung seitens BMW ist ziemlich unpraktisch wenn man wirklich die Daten zum gesteuerten Laden verwenden möchte.
    Wäre es denkbar verschiedene Intervall Voreinstellungen zur verfügung zu stellen die man je nach Bedingung aufrufen kann?
    Use case wäre zum Beispiel: Intervall sehr lang (1-2h) tagsüber, nur wenn Laden erkannt wird einen kurzen Intervall. Oder in einem bestimmten Zeitfenster.

    vowillV 1 Antwort Letzte Antwort
    0
    • C createch2

      Ich hab den Adapter bei mir auch laufen, funktioniert gut soweit. Lediglich die Poll Begrenzung seitens BMW ist ziemlich unpraktisch wenn man wirklich die Daten zum gesteuerten Laden verwenden möchte.
      Wäre es denkbar verschiedene Intervall Voreinstellungen zur verfügung zu stellen die man je nach Bedingung aufrufen kann?
      Use case wäre zum Beispiel: Intervall sehr lang (1-2h) tagsüber, nur wenn Laden erkannt wird einen kurzen Intervall. Oder in einem bestimmten Zeitfenster.

      vowillV Offline
      vowillV Offline
      vowill
      schrieb am zuletzt editiert von
      #979

      @createch2 Ich habe bei mir die 2h für den automatischen API-Abruf im Adapter eingestellt und nutze Skripte, um bei Bedarf sehr viel kürzere Intervalle zu realisieren. Ich denke das ist universeller, als diverse Konfigurationen im Adapter zu programmieren.

      ioBroker im lxc auf NUC / Aktive Instanzen: 38

      C 1 Antwort Letzte Antwort
      0
      • vowillV vowill

        @createch2 Ich habe bei mir die 2h für den automatischen API-Abruf im Adapter eingestellt und nutze Skripte, um bei Bedarf sehr viel kürzere Intervalle zu realisieren. Ich denke das ist universeller, als diverse Konfigurationen im Adapter zu programmieren.

        C Offline
        C Offline
        createch2
        schrieb am zuletzt editiert von
        #980

        @vowill sagte in Test Adapter BMW/Mini v4.x.x:

        @createch2 Ich habe bei mir die 2h für den automatischen API-Abruf im Adapter eingestellt und nutze Skripte, um bei Bedarf sehr viel kürzere Intervalle zu realisieren. Ich denke das ist universeller, als diverse Konfigurationen im Adapter zu programmieren.

        Gute Idee. Du triggerst dann einfach die remote funktionen im adapter?

        vowillV 1 Antwort Letzte Antwort
        0
        • C createch2

          @vowill sagte in Test Adapter BMW/Mini v4.x.x:

          @createch2 Ich habe bei mir die 2h für den automatischen API-Abruf im Adapter eingestellt und nutze Skripte, um bei Bedarf sehr viel kürzere Intervalle zu realisieren. Ich denke das ist universeller, als diverse Konfigurationen im Adapter zu programmieren.

          Gute Idee. Du triggerst dann einfach die remote funktionen im adapter?

          vowillV Offline
          vowillV Offline
          vowill
          schrieb am zuletzt editiert von
          #981

          @createch2 Ja, das hatte ich z. B. beim Starten der Standheizung (über eine Alexa-Routine im ioBroker; anders kann man ja keine Befehle (mehr) absetzen) so programmiert und dann den Stand der Umsetzung abgefragt. Allerdings ist dies nicht erforderlich, der BMW bei Aktivitäten am bzw. im Auto selbst einen Stream sendet.

          ioBroker im lxc auf NUC / Aktive Instanzen: 38

          S 1 Antwort Letzte Antwort
          0
          • vowillV vowill

            @createch2 Ja, das hatte ich z. B. beim Starten der Standheizung (über eine Alexa-Routine im ioBroker; anders kann man ja keine Befehle (mehr) absetzen) so programmiert und dann den Stand der Umsetzung abgefragt. Allerdings ist dies nicht erforderlich, der BMW bei Aktivitäten am bzw. im Auto selbst einen Stream sendet.

            S Offline
            S Offline
            silgri
            schrieb am zuletzt editiert von silgri
            #982

            Ich habe jetzt schon 2x CarData eingerichtet, aber MQTT Daten schickt mein iX1 nicht.
            Nur wenn ich den Remote-Schalter betätige oder über den Timerintervall des Adapter kommen alle Daten.
            Wo liegt der Fehler?

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              mblass
              schrieb am zuletzt editiert von
              #983

              Ein ganz großes Danke für diesen Adapter. Das ist einfach großartig. Habe lange den "alten" BMW-Adapter genutzt und plötzlich lag ein Teil meiner VIS brach. Nun ist alles wieder aktuell. VIELEN DANK !
              Und ich hab gleich ne Frage: habe gelesen, Stream-Daten kommen, wenn das Fahrzeug aktiv ist. Bei einem Fahrzeug sind mittlerweile die Location-Daten da, beim zweiten noch nicht. Genügt es, Zündung anzumachen oder muss die Kiste bewegt werden?

              S 1 Antwort Letzte Antwort
              0
              • M mblass

                Ein ganz großes Danke für diesen Adapter. Das ist einfach großartig. Habe lange den "alten" BMW-Adapter genutzt und plötzlich lag ein Teil meiner VIS brach. Nun ist alles wieder aktuell. VIELEN DANK !
                Und ich hab gleich ne Frage: habe gelesen, Stream-Daten kommen, wenn das Fahrzeug aktiv ist. Bei einem Fahrzeug sind mittlerweile die Location-Daten da, beim zweiten noch nicht. Genügt es, Zündung anzumachen oder muss die Kiste bewegt werden?

                S Offline
                S Offline
                stenmic
                schrieb am zuletzt editiert von
                #984

                @mblass
                stream bzw. mqtt aktualisiert sich nur bei einer Änderung.
                Somit müsste für die Location-Daten die Kiste bewegt werden.

                S 1 Antwort Letzte Antwort
                1
                • S stenmic

                  @mblass
                  stream bzw. mqtt aktualisiert sich nur bei einer Änderung.
                  Somit müsste für die Location-Daten die Kiste bewegt werden.

                  S Offline
                  S Offline
                  silgri
                  schrieb am zuletzt editiert von silgri
                  #985

                  Also von meinem iX1 EZ 7/25 kommen keine Daten per MQTT, obwohl im Log des Adapters steht 'BMW MQTT stream connected'
                  Fahre jeden Tag, da müßte ja was kommen.
                  Starte jetzt per Script alle 2 Stunden (nur von 6 - 22 Uhr) den API Abruf (remote.fetchViaAPI), dann bekomme ich Ladezustand, gef. km , Restreichweite usw.
                  Hätte aber gerne noch den Ladezustand beim Laden.
                  Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf :confused:

                  S D 2 Antworten Letzte Antwort
                  0
                  • S silgri

                    Also von meinem iX1 EZ 7/25 kommen keine Daten per MQTT, obwohl im Log des Adapters steht 'BMW MQTT stream connected'
                    Fahre jeden Tag, da müßte ja was kommen.
                    Starte jetzt per Script alle 2 Stunden (nur von 6 - 22 Uhr) den API Abruf (remote.fetchViaAPI), dann bekomme ich Ladezustand, gef. km , Restreichweite usw.
                    Hätte aber gerne noch den Ladezustand beim Laden.
                    Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf :confused:

                    S Offline
                    S Offline
                    stenmic
                    schrieb am zuletzt editiert von stenmic
                    #986

                    @silgri die 244 Häkchen bei BMW hast du alle gesetzt?

                    S 1 Antwort Letzte Antwort
                    0
                    • S silgri

                      Also von meinem iX1 EZ 7/25 kommen keine Daten per MQTT, obwohl im Log des Adapters steht 'BMW MQTT stream connected'
                      Fahre jeden Tag, da müßte ja was kommen.
                      Starte jetzt per Script alle 2 Stunden (nur von 6 - 22 Uhr) den API Abruf (remote.fetchViaAPI), dann bekomme ich Ladezustand, gef. km , Restreichweite usw.
                      Hätte aber gerne noch den Ladezustand beim Laden.
                      Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf :confused:

                      D Offline
                      D Offline
                      derdominik
                      schrieb am zuletzt editiert von
                      #987

                      @silgri said in Test Adapter BMW/Mini v4.x.x:

                      Hätte aber gerne noch den Ladezustand beim Laden.
                      Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf

                      Soweit ich das bisher verstanden habe, wird beim AC-Laden, wenn das Auto ansonsten aus ist, seitens BMW kein Update per MQTT verschickt.

                      Während der Fahrt -> SoC Update per MQTT.
                      Beim AC Laden -> Kein MQTT Update, nur per API-Abfrage.

                      S 1 Antwort Letzte Antwort
                      0
                      • vowillV Offline
                        vowillV Offline
                        vowill
                        schrieb am zuletzt editiert von
                        #988

                        Thema Spritverbrauch
                        Ich nutze den Adapter für meinen Benziner. Allerdings habe ich im gesamten Stream keinen Datenpunkt gefunden, aus dem der Spritverbrauch hervorgeht - obwohl es in der Handy-App detaillierte Daten dazu gibt.
                        Geht das hier im Forum allen Interessierten so, oder hat Jemand einen geeigneten Datenpunkt für diese Information gefunden?
                        Danke für eine Rückmeldung!

                        Als Abhilfe habe ich ein Skript geschrieben, das aus der kontinuierlich im Stream gemeldeten Tankstand-Reduzierung und dem km-Stand über einige Datenpunkte den Verbrauch berechnet. Das stelle ich gerne zur Verfügung, wenn Interesse besteht.

                        ioBroker im lxc auf NUC / Aktive Instanzen: 38

                        S 1 Antwort Letzte Antwort
                        0
                        • vowillV vowill

                          Thema Spritverbrauch
                          Ich nutze den Adapter für meinen Benziner. Allerdings habe ich im gesamten Stream keinen Datenpunkt gefunden, aus dem der Spritverbrauch hervorgeht - obwohl es in der Handy-App detaillierte Daten dazu gibt.
                          Geht das hier im Forum allen Interessierten so, oder hat Jemand einen geeigneten Datenpunkt für diese Information gefunden?
                          Danke für eine Rückmeldung!

                          Als Abhilfe habe ich ein Skript geschrieben, das aus der kontinuierlich im Stream gemeldeten Tankstand-Reduzierung und dem km-Stand über einige Datenpunkte den Verbrauch berechnet. Das stelle ich gerne zur Verfügung, wenn Interesse besteht.

                          S Offline
                          S Offline
                          stenmic
                          schrieb am zuletzt editiert von
                          #989

                          @vowill der Spritverbrauch wird leider nicht angezeigt, war im alten Adapter leider auch schon so.
                          Zeig mal bitte dein Skript.

                          vowillV 1 Antwort Letzte Antwort
                          0
                          • S stenmic

                            @vowill der Spritverbrauch wird leider nicht angezeigt, war im alten Adapter leider auch schon so.
                            Zeig mal bitte dein Skript.

                            vowillV Offline
                            vowillV Offline
                            vowill
                            schrieb am zuletzt editiert von
                            #990

                            @stenmic Im alten Adapter fand sich der Verbrauch unter bmw.0.WBAxxx.trips.monthly.totalCombustionConsumption.averageConsumption.

                            Anbei mein Skript zur Verbrauchsermittlung.
                            Ablauf: Das Skript schreibt die Wertepaare für km und Liter immer dann in den Datenpunkt 0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel, wenn sich der Tankfüllstand reduziert. Nach 9 Wertepaaren wird die Differenz zwischen neuem Wertepaar und ältestem Wertepaar berechnet und daraus der Verbrauch; das älteste Wertepaar wird dann gelöscht. Wenn getankt wird (und sich deshalb der Tankfüllstand um mehr als 10 Liter erhöht) werden alle Wertepaare gelöscht; die nächste Rechnung findet dann erst wieder statt, wenn es wieder 9 Wertepaare gibt. (Grund ist, dass der BMW-Adapter nur ganze Liter liefert und es daher beim Tanken in der Rechnung eine Ungenauigkeit von bis zu 2 Litern geben könnte (z. B. aktueller Stand 10,0 oder 10,9 Liter und nach dem Tanken z. B. 55,0 oder 55,9 Liter --> ergäbe stets eine Differenz von 45 Litern, obwohl es 44,1 oder 45,9 Liter sein könnten)).
                            Das Ergebnis der Verbrauchsrechnung wird im Datenpunkt 0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km abgelegt.

                            Hier das JS (Blockly gerne auf Anfrage im Chat über private Mailadresse):

                            var alter_String, Anzahl_Werte, neuer_String, letzter_Listenwert, Liter_Differenz, km_Differenz, Verbrauch;
                            
                            // Verfolgung des Tankinhalts
                            // Auswertung DP bmw.0.WBAxxx.stream.vehicle.drivetrain.fuelSystem.remainingFuel.value
                            on({ id: [].concat(['bmw.0.WBAxxx.stream.vehicle.drivetrain.fuelSystem.remainingFuel.value']), change: 'ne' }, async (obj) => {
                              let value = obj.state.val;
                              let oldValue = obj.oldState.val;
                              if ((obj.state ? obj.state.val : '') > (obj.oldState ? obj.oldState.val : '') + 10) {
                                // es wird/wurde getankt --> Rücksetzen der Werte
                                // Aufbau: Anzahl Werte: {Liter;km},...
                                // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                if (getState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel').val.charAt(0) != '0') {
                                  console.warn((['BMW wird bzw. wurde betankt; Wert vom BMW: ',(obj.state ? obj.state.val : ''),'l'].join('')));
                                }
                                neuer_String = ['0: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                console.info(('BMW Tankfüllstand hat sich erhöht; Init-Wert: ' + String(neuer_String)));
                              } else if ((obj.state ? obj.state.val : '') < (obj.oldState ? obj.oldState.val : '')) {
                                alter_String = getState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel').val;
                                Anzahl_Werte = parseFloat((alter_String.charAt(0)));
                                if (Anzahl_Werte == 0) {
                                  // erster neuer Wert
                                  // Aufbau: Anzahl Werte: {Liter;km},...
                                  // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                  neuer_String = ['1: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                  setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                  console.info(('BMW Tankfüllstand hat sich erstmalig reduziert; neu: ' + String(neuer_String)));
                                } else if (Anzahl_Werte < 9) {
                                  // weitere Werte
                                  // Aufbau: Anzahl Werte: {Liter;km},{Liter;km},...
                                  // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                  neuer_String = ('' + (Anzahl_Werte + 1));
                                  neuer_String = String(neuer_String) + String(alter_String.slice(1, alter_String.length));
                                  neuer_String = [neuer_String,',{',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                  setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                  console.info(('BMW Tankfüllstand hat sich reduziert; neu: ' + String(neuer_String)));
                                } else if (Anzahl_Werte == 9) {
                                  // Liste voll --> 1. Berechnung Differenzwerte
                                  // Aufbau: Anzahl Werte: {Liter;km},{Liter;km},...
                                  // neuer Literwert: "Wert"
                                  // neuer km-Wert: siehe DP "value"
                                  // 1. a) Spritmenge (in Litern) berechnen:
                                  letzter_Listenwert = parseFloat((alter_String.slice(((alter_String.lastIndexOf('{') + 1 + 1) - 1), (alter_String.lastIndexOf(';') + 1) - 1)));
                                  if (parseFloat((obj.state ? obj.state.val : '')) == letzter_Listenwert) {
                                    // keine Änderung in der Literzahl
                                    // --> Abbruch
                                    console.warn('keine Änderung in der Literzahl --> weder Neueintrag noch Berechnung');
                                  } else {
                                    Liter_Differenz = parseFloat((alter_String.slice(((alter_String.indexOf('{') + 1 + 1) - 1), (alter_String.indexOf(';') + 1) - 1))) - parseFloat((obj.state ? obj.state.val : ''));
                                    // 1. b) km-Differenz berechnen
                                    km_Differenz = getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val - parseFloat((alter_String.slice(((alter_String.indexOf(';') + 1 + 1) - 1), (alter_String.indexOf('}') + 1) - 1)));
                                    // Verbrauchsrechnung:
                                    if (km_Differenz > 0) {
                                      // neue Berechnung
                                      Verbrauch = Math.round(((Liter_Differenz * 100) / km_Differenz) * 10) / 10;
                                      setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km' /* BMW Verbrauch je 100km */, Verbrauch, true);
                                      console.warn((['BMW-Verbrauchsrechnung ist erfolgt bei ',getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val,' km mit einem Delta von ',Liter_Differenz,' Litern und ',km_Differenz,'km. Ergebnis: ',Verbrauch,' l/100km'].join('')));
                                    } else {
                                      // Fehler, da km-Differenz = 0!
                                      setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km' /* BMW Verbrauch je 100km */, 99.9, true);
                                      console.error((['BMW-Verbrauchsrechnung sollte erfolgen bei ',getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val,' km, aber die Entfernungs-Differenz ist Null ','--> FEHLER !!'].join('')));
                                    }
                                    // Liste voll --> 2. Werte durchschieben und
                                    //                         neues Wertepaar hinzufügen
                                    // Aufbau: 9: {Liter;km},{Liter;km},...
                                    // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                    neuer_String = alter_String.slice(((alter_String.indexOf('},{') + 1 + 2) - 1), alter_String.length);
                                    neuer_String = ['9: ',neuer_String,',{',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                    setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                    console.info(('BMW Tankfüllstand hat sich reduziert und Verbrauchsrechnung getriggert; neu: ' + String(neuer_String)));
                                  }
                                } else {
                                  // Fehler
                                  console.error(('Ungültiger Wert für 0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel: ' + String(Anzahl_Werte)));
                                  setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, (['0: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('')), true);
                                }
                              } else {
                                // Spritwerte gleich oder geringfügig höher
                                // --> keine Aktion
                              }
                            });
                            

                            ioBroker im lxc auf NUC / Aktive Instanzen: 38

                            S 1 Antwort Letzte Antwort
                            0
                            • vowillV vowill

                              @stenmic Im alten Adapter fand sich der Verbrauch unter bmw.0.WBAxxx.trips.monthly.totalCombustionConsumption.averageConsumption.

                              Anbei mein Skript zur Verbrauchsermittlung.
                              Ablauf: Das Skript schreibt die Wertepaare für km und Liter immer dann in den Datenpunkt 0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel, wenn sich der Tankfüllstand reduziert. Nach 9 Wertepaaren wird die Differenz zwischen neuem Wertepaar und ältestem Wertepaar berechnet und daraus der Verbrauch; das älteste Wertepaar wird dann gelöscht. Wenn getankt wird (und sich deshalb der Tankfüllstand um mehr als 10 Liter erhöht) werden alle Wertepaare gelöscht; die nächste Rechnung findet dann erst wieder statt, wenn es wieder 9 Wertepaare gibt. (Grund ist, dass der BMW-Adapter nur ganze Liter liefert und es daher beim Tanken in der Rechnung eine Ungenauigkeit von bis zu 2 Litern geben könnte (z. B. aktueller Stand 10,0 oder 10,9 Liter und nach dem Tanken z. B. 55,0 oder 55,9 Liter --> ergäbe stets eine Differenz von 45 Litern, obwohl es 44,1 oder 45,9 Liter sein könnten)).
                              Das Ergebnis der Verbrauchsrechnung wird im Datenpunkt 0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km abgelegt.

                              Hier das JS (Blockly gerne auf Anfrage im Chat über private Mailadresse):

                              var alter_String, Anzahl_Werte, neuer_String, letzter_Listenwert, Liter_Differenz, km_Differenz, Verbrauch;
                              
                              // Verfolgung des Tankinhalts
                              // Auswertung DP bmw.0.WBAxxx.stream.vehicle.drivetrain.fuelSystem.remainingFuel.value
                              on({ id: [].concat(['bmw.0.WBAxxx.stream.vehicle.drivetrain.fuelSystem.remainingFuel.value']), change: 'ne' }, async (obj) => {
                                let value = obj.state.val;
                                let oldValue = obj.oldState.val;
                                if ((obj.state ? obj.state.val : '') > (obj.oldState ? obj.oldState.val : '') + 10) {
                                  // es wird/wurde getankt --> Rücksetzen der Werte
                                  // Aufbau: Anzahl Werte: {Liter;km},...
                                  // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                  if (getState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel').val.charAt(0) != '0') {
                                    console.warn((['BMW wird bzw. wurde betankt; Wert vom BMW: ',(obj.state ? obj.state.val : ''),'l'].join('')));
                                  }
                                  neuer_String = ['0: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                  setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                  console.info(('BMW Tankfüllstand hat sich erhöht; Init-Wert: ' + String(neuer_String)));
                                } else if ((obj.state ? obj.state.val : '') < (obj.oldState ? obj.oldState.val : '')) {
                                  alter_String = getState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel').val;
                                  Anzahl_Werte = parseFloat((alter_String.charAt(0)));
                                  if (Anzahl_Werte == 0) {
                                    // erster neuer Wert
                                    // Aufbau: Anzahl Werte: {Liter;km},...
                                    // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                    neuer_String = ['1: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                    setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                    console.info(('BMW Tankfüllstand hat sich erstmalig reduziert; neu: ' + String(neuer_String)));
                                  } else if (Anzahl_Werte < 9) {
                                    // weitere Werte
                                    // Aufbau: Anzahl Werte: {Liter;km},{Liter;km},...
                                    // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                    neuer_String = ('' + (Anzahl_Werte + 1));
                                    neuer_String = String(neuer_String) + String(alter_String.slice(1, alter_String.length));
                                    neuer_String = [neuer_String,',{',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                    setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                    console.info(('BMW Tankfüllstand hat sich reduziert; neu: ' + String(neuer_String)));
                                  } else if (Anzahl_Werte == 9) {
                                    // Liste voll --> 1. Berechnung Differenzwerte
                                    // Aufbau: Anzahl Werte: {Liter;km},{Liter;km},...
                                    // neuer Literwert: "Wert"
                                    // neuer km-Wert: siehe DP "value"
                                    // 1. a) Spritmenge (in Litern) berechnen:
                                    letzter_Listenwert = parseFloat((alter_String.slice(((alter_String.lastIndexOf('{') + 1 + 1) - 1), (alter_String.lastIndexOf(';') + 1) - 1)));
                                    if (parseFloat((obj.state ? obj.state.val : '')) == letzter_Listenwert) {
                                      // keine Änderung in der Literzahl
                                      // --> Abbruch
                                      console.warn('keine Änderung in der Literzahl --> weder Neueintrag noch Berechnung');
                                    } else {
                                      Liter_Differenz = parseFloat((alter_String.slice(((alter_String.indexOf('{') + 1 + 1) - 1), (alter_String.indexOf(';') + 1) - 1))) - parseFloat((obj.state ? obj.state.val : ''));
                                      // 1. b) km-Differenz berechnen
                                      km_Differenz = getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val - parseFloat((alter_String.slice(((alter_String.indexOf(';') + 1 + 1) - 1), (alter_String.indexOf('}') + 1) - 1)));
                                      // Verbrauchsrechnung:
                                      if (km_Differenz > 0) {
                                        // neue Berechnung
                                        Verbrauch = Math.round(((Liter_Differenz * 100) / km_Differenz) * 10) / 10;
                                        setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km' /* BMW Verbrauch je 100km */, Verbrauch, true);
                                        console.warn((['BMW-Verbrauchsrechnung ist erfolgt bei ',getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val,' km mit einem Delta von ',Liter_Differenz,' Litern und ',km_Differenz,'km. Ergebnis: ',Verbrauch,' l/100km'].join('')));
                                      } else {
                                        // Fehler, da km-Differenz = 0!
                                        setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_je_100km' /* BMW Verbrauch je 100km */, 99.9, true);
                                        console.error((['BMW-Verbrauchsrechnung sollte erfolgen bei ',getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val,' km, aber die Entfernungs-Differenz ist Null ','--> FEHLER !!'].join('')));
                                      }
                                      // Liste voll --> 2. Werte durchschieben und
                                      //                         neues Wertepaar hinzufügen
                                      // Aufbau: 9: {Liter;km},{Liter;km},...
                                      // hier: value = bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value
                                      neuer_String = alter_String.slice(((alter_String.indexOf('},{') + 1 + 2) - 1), alter_String.length);
                                      neuer_String = ['9: ',neuer_String,',{',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('');
                                      setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, neuer_String, true);
                                      console.info(('BMW Tankfüllstand hat sich reduziert und Verbrauchsrechnung getriggert; neu: ' + String(neuer_String)));
                                    }
                                  } else {
                                    // Fehler
                                    console.error(('Ungültiger Wert für 0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel: ' + String(Anzahl_Werte)));
                                    setState('0_userdata.0.Fahrzeuge.BMW_Verbrauch_km_bei_l-Wechsel' /* BMW Verbrauch km bei l-Wechsel */, (['0: {',('' + (obj.state ? obj.state.val : '')),';',('' + getState('bmw.0.WBAxxx.stream.vehicle.vehicle.travelledDistance.value').val),'}'].join('')), true);
                                  }
                                } else {
                                  // Spritwerte gleich oder geringfügig höher
                                  // --> keine Aktion
                                }
                              });
                              
                              S Offline
                              S Offline
                              stenmic
                              schrieb am zuletzt editiert von
                              #991

                              @vowill sagte in Test Adapter BMW/Mini v4.x.x:

                              @stenmic Im alten Adapter fand sich der Verbrauch unter bmw.0.WBAxxx.trips.monthly.totalCombustionConsumption.averageConsumption.

                              ok, den hab ich nie genutzt, mich interessiert mehr der Verbrauch ab tanken.

                              1 Antwort Letzte Antwort
                              0
                              • S stenmic

                                @silgri die 244 Häkchen bei BMW hast du alle gesetzt?

                                S Offline
                                S Offline
                                silgri
                                schrieb am zuletzt editiert von
                                #992

                                @stenmic
                                Alle Häkchen sind gesetzt

                                1 Antwort Letzte Antwort
                                0
                                • D derdominik

                                  @silgri said in Test Adapter BMW/Mini v4.x.x:

                                  Hätte aber gerne noch den Ladezustand beim Laden.
                                  Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf

                                  Soweit ich das bisher verstanden habe, wird beim AC-Laden, wenn das Auto ansonsten aus ist, seitens BMW kein Update per MQTT verschickt.

                                  Während der Fahrt -> SoC Update per MQTT.
                                  Beim AC Laden -> Kein MQTT Update, nur per API-Abfrage.

                                  S Offline
                                  S Offline
                                  silgri
                                  schrieb am zuletzt editiert von
                                  #993

                                  @derdominik said in Test Adapter BMW/Mini v4.x.x:

                                  @silgri said in Test Adapter BMW/Mini v4.x.x:

                                  Hätte aber gerne noch den Ladezustand beim Laden.
                                  Im Moment mache ich das auch per Script, wenn an der Lade-Steckdose (11kW) Strom fließt, mache ich alle 10 Minuten ein API Abruf

                                  Soweit ich das bisher verstanden habe, wird beim AC-Laden, wenn das Auto ansonsten aus ist, seitens BMW kein Update per MQTT verschickt.

                                  Während der Fahrt -> SoC Update per MQTT.
                                  Beim AC Laden -> Kein MQTT Update, nur per API-Abfrage.

                                  Aber beim Fahren kommt ja auch nix :disappointed:

                                  1 Antwort Letzte Antwort
                                  0
                                  • HantschelH Offline
                                    HantschelH Offline
                                    Hantschel
                                    schrieb am zuletzt editiert von
                                    #994

                                    Irgendwie stelle ich mich zu blöd an.
                                    Ich bekomme von meinem E-Mini keine Daten mehr.
                                    Zum CarData kann ich den auch irgendwie nicht hinzufügen.
                                    Wer kann mir helfen?

                                    Thomas BraunT 1 Antwort Letzte Antwort
                                    0
                                    • HantschelH Hantschel

                                      Irgendwie stelle ich mich zu blöd an.
                                      Ich bekomme von meinem E-Mini keine Daten mehr.
                                      Zum CarData kann ich den auch irgendwie nicht hinzufügen.
                                      Wer kann mir helfen?

                                      Thomas BraunT Online
                                      Thomas BraunT Online
                                      Thomas Braun
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #995

                                      @hantschel sagte in Test Adapter BMW/Mini v4.x.x:

                                      Wer kann mir helfen?

                                      Ohne was halbwegs handfestestes aus z. B. dem Log vermutlich niemand.

                                      Linux-Werkzeugkasten:
                                      https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                      NodeJS Fixer Skript:
                                      https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                      iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                      1 Antwort Letzte Antwort
                                      0
                                      • M Offline
                                        M Offline
                                        mike1429
                                        schrieb am zuletzt editiert von
                                        #996

                                        Ein neues Problem. Der Wert von energyConsumedFromPowerGridKwh für data01 ist immer der gleiche wie der von data02, und zwar nur der. Alle anderen Werte sind OK. Ab data03 sind alle unterschiedlich und richtig. Weiß jemand davon?

                                        1 Antwort Letzte Antwort
                                        0
                                        • K Offline
                                          K Offline
                                          Karacho
                                          schrieb am zuletzt editiert von Karacho
                                          #997

                                          Problem Solved - Neu Authorisierung über BMW Seite analog LogDatei norwendig...

                                          Wurde aber am Vortag nicht angezeigt.


                                          Hallo

                                          folgendes PRoblem.

                                          Was muss ich tun?

                                          
                                          bmw.0
                                          2025-11-19 14:14:47.019	error	Token refresh failed with HTTP 400 auth error - starting new device flow
                                          
                                          bmw.0
                                          2025-11-19 14:14:47.019	error	Response status: {"error":"invalid_request","error_description":"The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed"}
                                          
                                          bmw.0
                                          2025-11-19 14:14:47.018	error	AxiosError: Request failed with status code 400
                                          
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          644

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe