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

AntwortenAntworten Options Options Arrow

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

USER_AVATAR
read
endurance hat geschrieben:@LocutusB: mal ehrlich was willst Du mit den Daten alle 15min? da ist zu 99.999% immer dasselbe drin. Jäger und Sammler...?
Nein, ich vergleiche die Zeitstempel und speichere nur bei neuen Werten. 15 Minuten Abstand halte ich für vertretbar. Es werden auch nicht hunderte nutzen. Ist ja auch die Frage, ob BMW die Zugriffe überhaupt unterscheiden kann oder ob die nicht denken da klickt alle 15 Minuten einer den Refresh. Dauerhaft werde ich das eh nicht laufen lassen. Lade ja meist Zuhause und da protokolliert ein Zähler.
Aber klar, eine Schleife die den Zustand Laden ja/nein prüft und bei nein aussteigt klingt auch gut. Müsste halt immer manuell gestartet werden und der Browser offen bleiben.
Anzeige

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

USER_AVATAR
read
BTW kleiner Frühstückscodesnippet - wenn Ihr im HTML code nach der Zeile

Code: Alles auswählen

document.getElementsByTagName( 'body' )[0].classList.remove( 'loading' );
folgendes

Code: Alles auswählen

				// check if we should refresh the window after a while
				var charginglevel=json["chargingLevel"];
				if(charginglevel<100)
				{
					setTimeout("location.reload(true)", 60000);
				}
				else
				{
					// do nothing
				}
einbaut, sollte die Seite - solange das Auto geladen wird - alle 60s neu geladen werden.
Das muss jetzt noch mit dem chargingActive wert verknüpft werden und evtl. abhängig vom Charginglevel den timeout anpassen und dann sollte es OK sein.

also in etwa so

Code: Alles auswählen

				var charginglevel=json["chargingLevel"];
				var chargingActive=json["chargingActive"];
				if(chargingActive!=0)
				{
					console.log("chargingActive");
					if(charginglevel<75)
					{
						console.log("Charging Level <75");
						setTimeout("location.reload(true)", 60000);
					}
					else
					{
						if(charginglevel<100)
						{
							console.log("Charging Level >=75 && <100");
							setTimeout("location.reload(true)", 120000);
						}
						else 
						{
							console.log("Charging Level >=100");
							// do nothing
						}
					}	
				}
				else
				{
					console.log("Your BMW is not charging");
				}
das war's dann von der coding front für heute
Technikblog & Shop: http://www.elektrifiziert.net
PV 18,2kWp - BHKW EcoPower 1.0, 30kWh LiON Sunny Island System
BMW i3 60Ah (Verbrauch ca. 13,8kWh/100km; SW: I001-16-07-506)

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

USER_AVATAR
read
@endurance: Du solltest für die Abbruchbedingung aber besser den chargingSystemStatus verwenden. Sonst läuft die Schleife bis Du einen Ladevorgang tatsächlich bis 100% laufen läßt ...

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

herrmann-s
read
ich finde das schon recht beachtlich was hier rumprogrammiert wird. fuer mich ist das magie, deshalb vllt eine etwas bloede frage. wenn der ladezustand aktualisiert wird usw, koennte man dann diesen html code irgendwie in die app vom remus (evplugfinder) einpflanzen, sodass zb angezeigt wird, dass die ladesaeule zz belegt ist die man vor hat anzusteuern?

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

USER_AVATAR
read
herrmann-s hat geschrieben:ich finde das schon recht beachtlich was hier rumprogrammiert wird. fuer mich ist das magie, deshalb vllt eine etwas bloede frage. wenn der ladezustand aktualisiert wird usw, koennte man dann diesen html code irgendwie in die app vom remus (evplugfinder) einpflanzen, sodass zb angezeigt wird, dass die ladesaeule zz belegt ist die man vor hat anzusteuern?
Das wird nur bedingt gehen. Hintergrund dieser webapp ist die Hinterlegung der CD Zugangsdaten in einem geschützten Bereich des Webspace. Nur so funktioniert die Abfrage bei den BMW Servern. Deine Idee ist gut, bedeutet aber, dass irgendwo die Zugangsdaten hinterlegt werden müssen, entweder in der App oder online. Da auch die VIN darin inbegriffen ist, ist das sicherheitstechnisch nicht ohne
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

i3fahrer
  • Beiträge: 467
  • Registriert: So 8. Jan 2017, 15:28
  • Wohnort: Hamburg
  • Hat sich bedankt: 36 Mal
  • Danke erhalten: 16 Mal
read
fridgeS3 hat geschrieben:Hintergrund dieser webapp ist die Hinterlegung der CD Zugangsdaten in einem geschützten Bereich des Webspace. Nur so funktioniert die Abfrage bei den BMW Servern. Deine Idee ist gut, bedeutet aber, dass irgendwo die Zugangsdaten hinterlegt werden müssen, entweder in der App oder online. Da auch die VIN darin inbegriffen ist, ist das sicherheitstechnisch nicht ohne
So schaut's aus.
Meine T-Shirts für E-MOBILISTEN

BMW i3 Fluid Black / 60 Ah / Since 2016

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

herrmann-s
read
ja sowas in der art dachte ich mir schon. deshalb hatte ich uberlegt, dass das handy einfach nur ein belegt oder nicht belegt mit positionsdaten zuruecksendet ohne dass die VIN sozusagen im "uplink" enthalten ist.
aber wie gsagt moeglicherweise verstehe ich die programmierebene nicht und was erforderlich ist um sowas realisieren zu koennen.
deshalb repekt und danke an die bastler, hut ab!
bin draussen :)

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

USER_AVATAR
read
LocutusB hat geschrieben:@endurance: Du solltest für die Abbruchbedingung aber besser den chargingSystemStatus verwenden. Sonst läuft die Schleife bis Du einen Ladevorgang tatsächlich bis 100% laufen läßt ...
? die läuft solange wie ich das Fenster im Browser offen habe bzw. chargingActive==false wird. 100% ist keine Abbruchbedingung.

Was ich noch prüfen muss ist was das Array zurückgibt wenn es den index nicht gibt.

olaf
Technikblog & Shop: http://www.elektrifiziert.net
PV 18,2kWp - BHKW EcoPower 1.0, 30kWh LiON Sunny Island System
BMW i3 60Ah (Verbrauch ca. 13,8kWh/100km; SW: I001-16-07-506)

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

USER_AVATAR
read
Hm, da hab ich wohl nicht genau genug hingeschaut :-/

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

USER_AVATAR
read
Zur Tageschau: So ist es jetzt implementiert und scheint zu laufen, muss ich mal mit der CCS Ladekurve vergleichen, man könnte nat. den Abstand der Refreshs auch von der Ladeleistung abhängig machen - macht eigentlich mehr Sinn...
Hab die CSS styles auch in eine extra Datei ausgelagert damit ist die index.html etwas aufgeräumter.

Code: Alles auswählen

<script>
            const req = new XMLHttpRequest();
			var high_charging_level_refresh=300000; // 5min
			var mid_charging_level_refresh =120000;	// 2min		
			var low_charging_level_refresh =30000;  // 30s
			
            req.addEventListener( 'load', function() {
                if ( this.status !== 200 ) {
                    return alert( 'Request failed: ' + this.status );
                }
				//console.log(this.responseText);
                const json = JSON.parse( this.responseText );
				console.log(this.responseText);
                [ 'header', 'main', 'footer' ].forEach( id => {
                    document.getElementById( id ).innerHTML = doT.template( document.getElementById( `${id}-tmpl` ).text )( json );
                } );
                document.getElementsByTagName( 'body' )[0].classList.remove( 'loading' );
				
				// check if we should refresh the window after a while
				var chargingLevel=json["chargingLevel"];
				var chargingActive=json["chargingActive"];
				if(chargingActive>0 && typeof chargingActive != 'undefined' && typeof chargingLevel != 'undefined' )
				{
					console.log("chargingActive - Level:"+chargingLevel);
					if(chargingLevel<60){
						console.log("Charging Level <60");
						setTimeout("location.reload(true)", low_charging_level_refresh);
					} else if(chargingLevel<80){
						console.log("Charging Level >=60 && <80");
						setTimeout("location.reload(true)", mid_charging_level_refresh);
					} else if(chargingLevel<100){
						console.log("Charging Level >80");
						setTimeout("location.reload(true)", high_charging_level_refresh);
					}
					else {
						console.log("Charging Level >=100");
						// do nothing
					}	
				}
				else {
					console.log("Your BMW is not charging"+"-"+chargingActive+"-"+chargingLevel);
				}
            } );

            req.open( 'GET', './api/' );
            req.send();
        </script>
Technikblog & Shop: http://www.elektrifiziert.net
PV 18,2kWp - BHKW EcoPower 1.0, 30kWh LiON Sunny Island System
BMW i3 60Ah (Verbrauch ca. 13,8kWh/100km; SW: I001-16-07-506)
Anzeige
AntwortenAntworten

Zurück zu „i3 - Laden, Ladeequipment“

Gehe zu Profile
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag