NEWS
Test Adapter Bosch ebik connect / flow
-
Hallo,
irgendwie klappt die Anmeldung nicht. Zwei Browser, inkognito oder nicht, kein Werbeblocker, cookies gelöscht. Entweder bin ich schon angemeldet oder er findet die Cookies nicht. Hab nach einer Stunde aufgegeben. Läßt auch keinen weiteren Versuch mehr zu. Hat vielleicht jemand noch einen Tip für mich?
Danke
-
@ratte-rizzo said in Test Adapter Bosch ebik connect / flow:
Also ich hab sowohl das Connect-Modul verbaut, als auch das Abo... Was muss ich zum Testen tun?
Mein Verständnis ist, dass mit ConnectModul (und Abo) sowohl SOC als auch die letzte bekannte Position in der Cloud landen müssen, da sie auch ohne Bluetooth Verbindung in der Flow-App angezeigt werden.
Tauchen die Datenpunkte bei dir im Adapter auf?
@tombox falls nicht, was muss @ratte-rizzo tun, um dich bei der Implementierung zu unterstützen?@no6mis said in Test Adapter Bosch ebik connect / flow:
tombox falls nicht, was muss ratte-rizzo tun, um dich bei der Implementierung zu unterstützen?
@tombox, hast du mal geschaut, ob du die Position und den SOC aus dem ConnectModul auslesen kannst?
-
@bahnuhr
Anbei mein Script:// Script um aus den DP vom Adapter "bosch-ebike" eine MAP zu erstellen und den Weg zu zeichnen // bahnuhr, 03_2024 // Variablen var poly =""; // hier werden die GPS gespeichert // var trip = "03"; // DP bei den Objekten der eingelesen werden soll: bosch-ebike.0.trips.xx.details var logging = true; var center_gps = "53.465, 11.71"; // Mittelpunkt der Karte var zoom = 17 // Zoom der Karte var pfad = "route.html" // Dateiname - wird in vis.0 gespeichert // GPS einlesen und der Variablen poly zuweisen // html erzeugen und speichern in /vis.0/xxx.html var string = '<!DOCTYPE html>\n<html>\n<head>\n<title>Simple Leaflet Map</title>\n<meta charset="utf-8" />\n' string = string + '<body>\n' string = string + '<table border=0>' string = string + '<tr>' const idsCO2 = $('bosch-ebike.0.trips.*.id'); var f = 2 var hilf = 0 idsCO2.each(function(id, i) { var poly =""; var h= getState(id).val if (i < 9){ ii = i + 1 hilf = "0" + ii } else{ ii =i + 1 hilf = i + 1 } distance = 0 var distance = getState("bosch-ebike.0.trips." + hilf + ".attributes.distance").val; var startTime = getState("bosch-ebike.0.trips." + hilf + ".attributes.startTime").val; var ModeUsage01_name = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage01.name").val; var ModeUsage01_assistModeUsage = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage01.assistModeUsage").val; var ModeUsage01_color = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage02.color").val; var ModeUsage02_name = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage02.name").val; var ModeUsage02_assistModeUsage = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage02.assistModeUsage").val; var ModeUsage02_color = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage03.color").val; var ModeUsage03_name = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage03.name").val; var ModeUsage03_assistModeUsage = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage03.assistModeUsage").val; var ModeUsage03_color = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage04.color").val; var ModeUsage04_name = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage04.name").val; var ModeUsage04_assistModeUsage = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage04.assistModeUsage").val; var ModeUsage04_color = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage05.color").val; var ModeUsage05_name = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage05.name").val; var ModeUsage05_assistModeUsage = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage05.assistModeUsage").val; var ModeUsage05_color = getState("bosch-ebike.0.trips." + hilf + ".attributes.assistModeUsage05.color").val; var date = formatDate(startTime, "TT.MM.JJJJ SS:mm") string = string + '<td>' string = string + date + ' ' + distance/1000 + " KM" string = string + '<table border=0>' string = string + '<tr>' string = string + '<td bgcolor=yellow>' string = string + ModeUsage01_name string = string + '</td>' string = string + '<td bgcolor=blue>' string = string + ModeUsage02_name string = string + '</td>' string = string + '<td bgcolor=green>' string = string + ModeUsage03_name string = string + '</td>' string = string + '<td bgcolor=orange>' string = string + ModeUsage04_name string = string + '</td>' string = string + '<td bgcolor=red>' string = string + ModeUsage05_name string = string + '</td>' string = string + '</tr>' string = string + '<tr>' string = string + '<td>' string = string + ModeUsage01_assistModeUsage/1000 string = string + '</td>' string = string + '<td>' string = string + ModeUsage02_assistModeUsage/1000 string = string + '</td>' string = string + '<td>' string = string + ModeUsage03_assistModeUsage/1000 string = string + '</td>' string = string + '<td>' string = string + ModeUsage04_assistModeUsage/1000 string = string + '</td>' string = string + '<td>' string = string + ModeUsage05_assistModeUsage/1000 string = string + '</td>' string = string + '</tr>' var Prokm = distance /100 string = string + '<tr>' string = string + '<td>' string = string + Math.round(ModeUsage01_assistModeUsage/Prokm) + ' %' string = string + '</td>' string = string + '<td>' string = string + Math.round(ModeUsage02_assistModeUsage/Prokm) + ' %' string = string + '</td>' string = string + '<td>' string = string + Math.round(ModeUsage03_assistModeUsage/Prokm) + ' %' string = string + '</td>' string = string + '<td>' string = string + Math.round(ModeUsage04_assistModeUsage/Prokm) + ' %' string = string + '</td>' string = string + '<td>' string = string + Math.round(ModeUsage05_assistModeUsage/Prokm) + ' %' string = string + '</td>' string = string + '</tr>' string = string + '</table>' var poly =""; var string3 = ""; var obj = JSON.parse(getState("bosch-ebike.0.trips." + hilf + ".details").val); var end = obj.activityData.length - 1; var center_gps = '"' + obj.activityData[30].lat + ', ' + obj.activityData[30].lon + '"'; for (var x=0; x<=end; x++) { if (obj.activityData[x].lat != null) { poly = poly + "["+obj.activityData[x].lat+", "+obj.activityData[x].lon+"]" if (x < end) poly = poly + "," } else { } } if (logging) log (poly); string = string + '</td>' string = string + '<td>' var center_gps = "48.90376, 11.93504"; // Mittelpunkt der Karte var zoom = 11 string = string + '<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="crossorigin=""/></head>\n' string = string + '<body>\n<div id="map' + hilf + '" style="width: 600px; height: 400px"></div>\n<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="crossorigin=""></script>\n<script>\n' string = string + "var map"+ hilf + " = L.map('map" + hilf + "').setView([" + center_gps + "], " + zoom + ");\n" string = string + "mapLink = '<a href=" + '"http://openstreetmap.org"' + ">OpenStreetMap</a>';\n" string = string + "L.tileLayer( 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {attribution: '© ' + mapLink + ' Contributors', maxZoom: 18,}).addTo(map" + hilf + ");\n" string = string + 'var polyline = L.polyline([ \n' + poly + '\n], { color: "blue", weight: 3, opacity: .7, lineJoin: "round" } ).addTo(map' + hilf + ');\n' string = string + '</script>\n' string = string + '</td>' string = string + '</tr>' }); string = string + '</body>\n</html>' writeFile("vis.0", "/" + pfad, string, (error) => { if (logging) log('Datei "" gespeichert!'); }); -
@migul_70 Hallo,
hab's jetzt endlich geschafft, die URL zu bekommen. Leider wird er nicht grün. Gibt es da Probleme mit dem Passwort?
-
@ratte-rizzo said in Test Adapter Bosch ebik connect / flow:
Also ich hab sowohl das Connect-Modul verbaut, als auch das Abo... Was muss ich zum Testen tun?
Mein Verständnis ist, dass mit ConnectModul (und Abo) sowohl SOC als auch die letzte bekannte Position in der Cloud landen müssen, da sie auch ohne Bluetooth Verbindung in der Flow-App angezeigt werden.
Tauchen die Datenpunkte bei dir im Adapter auf?
@tombox falls nicht, was muss @ratte-rizzo tun, um dich bei der Implementierung zu unterstützen?@no6mis said in Test Adapter Bosch ebik connect / flow:
Mein Verständnis ist, dass mit ConnectModul (und Abo) sowohl SOC als auch die letzte bekannte Position in der Cloud landen müssen, da sie auch ohne Bluetooth Verbindung in der Flow-App angezeigt werden.
Tauchen die Datenpunkte bei dir im Adapter auf?
@tombox falls nicht, was muss @ratte-rizzo tun, um dich bei der Implementierung zu unterstützen?SOC wird laut Bosch während des Ladens alle 5 Minuten aktualisiert und ist aus der Cloud abrufbar, wenn das Diebstahlschutz Abo abgeschlossen ist.
Die API sieht ungefähr so aus:
obc-rider-profile.prod.connected-biking.cloud/v1/state-of-charge/<BIKE_ID>zurück kommt ein JSON dict, das unter anderem
stateOfChargeals Schlüssel enthält, mit einem Prozentwert für den Ladezustand. -
@no6mis said in Test Adapter Bosch ebik connect / flow:
Mein Verständnis ist, dass mit ConnectModul (und Abo) sowohl SOC als auch die letzte bekannte Position in der Cloud landen müssen, da sie auch ohne Bluetooth Verbindung in der Flow-App angezeigt werden.
Tauchen die Datenpunkte bei dir im Adapter auf?
@tombox falls nicht, was muss @ratte-rizzo tun, um dich bei der Implementierung zu unterstützen?SOC wird laut Bosch während des Ladens alle 5 Minuten aktualisiert und ist aus der Cloud abrufbar, wenn das Diebstahlschutz Abo abgeschlossen ist.
Die API sieht ungefähr so aus:
obc-rider-profile.prod.connected-biking.cloud/v1/state-of-charge/<BIKE_ID>zurück kommt ein JSON dict, das unter anderem
stateOfChargeals Schlüssel enthält, mit einem Prozentwert für den Ladezustand. -
H Homoran verschob dieses Thema von Tester am
-
H Homoran verschob dieses Thema von ...nicht in offiziellem Repo am
-
Moin, habe die Tage von Bosch eine Nachricht erhalten. Darin wurde um die neue Bosch-EBike-Live-Data Api geworben.
https://www.bosch-ebike.com/de/business/live-data-interface
Ist das wirklich etwas neues? Garmin Edge nutzt diese API schon. Leider erfahre ich aus dem Netz nichts darüber, ob Privatleute
diese API auch nutzen können. Wer weiß etwas genaueres? -
Moin,
bin gerade am basteln mit dem eBike-Zeugs.
Ich habe ein Connect-Modul nachgerüstet und auch die Flow+ aktiviert. (1. Jahr kostenfrei)
Mein IObroker-Adapter hat Verbindung und aktualisiert alle Werte - ausser Batteriestand
Habe auch homey zu laufen und dort eine Beta-App eBike installiert - auch hier alle Werte aktuell - bis auf Batteriestand.
Vielleicht muß ich auch erstmal den Akku über die App laden - mal sehen.
Um den Akku nicht immer auf 100% zu jagen hat ein User einen ESP (Sonoff) geflasht, dort kann man dann den max-Wert für die Ladung einstellen.
Der Sonoff wird als Komponente in der Bosch-App hinzugefügt und hat dann via BT direkten Kontakt zum eBike.
Der Sonoff schaltet dann bei erreichtem max-Wert das interne Relais ab.
Auf den Sonoff kommt man dann via Browser.
Habe mir einen Sonoff gekauft - der USB-Serial-Adapter zum flashen ist noch unterwegs.
https://github.com/Xunil99/ha-bosch-ebike?tab=readme-ov-file
https://xunil99.github.io/ha-bosch-ebike/
Ich melde mich, wenn ich fertig bin. -
also bei der homey-App funktioniert der Batteriestatus. Kann also wohl nicht an der Cloud liegen.
So wie ich schon vermutet habe muß man im Bike laden und nicht den Akku alleine.
Vielleicht geht auch extern laden, ins Bike stecken und eine Tour machen.
Aber dann ist ja die Ladeüberwachung Quatsch.

Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
