Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Am besten spielst du gleich eine aktuelle Distribution auf, es sind bestimmt schon etliche Sicherheitslücken bei Dir, die nicht mehr geflickt werden, weil die Software so alt ist.
Ansonsten kannst du versuchen, das neuste Python aufzuspielen, aber das könnte daran scheitern, daß der Rest des Systems alt ist.
Ansonsten kannst du versuchen, das neuste Python aufzuspielen, aber das könnte daran scheitern, daß der Rest des Systems alt ist.
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
So mache ich es.
Ist ein längerer Weg, aber bestimmt sinnvoll, mal grundlegend alles auf den neuesten Stand zu bringen.
Ist ein längerer Weg, aber bestimmt sinnvoll, mal grundlegend alles auf den neuesten Stand zu bringen.
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
So, das Update beim pi hat funktioniert. Nun gibt es auch keine Fehlermeldung mehr beim Aufruf des soc_helper. Allerdings kommt vom Auto keine Info zurück. Der Beginn der Ausgabe des soc_helper sieht exakt aus wie in Deiner Doku. Aber nach dem Senden der SOC- und DST-Anforderung passiert nichts mehr.
Ich habe den Output angehängt und auch die Einstellungen des WiCAN.
Und damit alle Infos zusammen sind, hier auch noch einmal die configuration.py:
Im MQTT-Browser wird weiterhin auch nur das Status-Topic angezeigt.
Ich habe den Output angehängt und auch die Einstellungen des WiCAN.
Und damit alle Infos zusammen sind, hier auch noch einmal die configuration.py:
Code: Alles auswählen
"""
Dies ist das Konfigurationsfile. Hier bitte nach eigenen Gegebenheiten eintragen. soc_helper
entdeckt Schreibzugriffe auf die Datei und liest sie neu ein. Bitte trotzdem die Ausgabe in
nohup.out oder auf der Konsole beachten, falls etwas Ungültiges abgespeichert wurde.
"""
"""
Spritmonitor-Konfiguration.
WICHTIG: Es muß eine gültige Umgebungsvariable SPRITMONITOR_BEARER_TOKEN geben. Diese kann
bei Spritmonitor.de auf der Passwort-Vergessen-Seite angefordert werden. Eine Umgebungs-
variable wird verwendet, damit nicht aus versehen der Zugang mit verschickt wird, wenn der
Code weitergegeben oder veröffentlicht wird. Sie wird vor Aufruf von soc_helper.py mittels
"export SPRITMONITOR_BEARER_TOKEN=<eigenerToken>" deklariert - idealerweise in der Datei
~/.profile schon bei der Anmeldung am System.
"""
USE_SPRITMONITOR = False # Auf False setzen, falls Übertragung nicht erfolgen soll
SPRITMONITOR_VEHICLE_ID = '1370192' # Bitte hier die eigene Fahrzeug-ID (In der App oder Webseite angezeigt) einfügen
SPRITMONITOR_FUELSORT = 24 # über die API sind die Nummern der Kraftstoffsorten abrufbar. Hier wichtig: 19 - Elektrizität, 24 - Ökostrom
SPRITMONITOR_FUELPRICE = 0.08 # Preis in €/kWh. Bei reinem PV-Laden die Einspeisevergütung plus evt. Umsatzsteuer auf Eigenverbrauch.
# Folgende Attribute können der Betankung per default zugefügt werden (maximal je eines pro Zeile aussuchen):
# Reifen: summertires wintertires allyeartires
# Fahrweise: slow normal fast
# Mit Klima: ac
# Mit Anhänger: trailer
# Mit Standheizung: heating
SPRITMONITOR_ATTRIBUTES = 'summertires,slow'
"""
CAN. Siehe CAN-Datenbank VW: https://www.goingelectric.de/wiki/Liste-der-OBD2-Codes/
"""
# Die eigentliche Botschaft an den WiCAN im json-Format wird in soc_helper zusammengebaut. Beispiel für das eine Sendebotschaft (11-Bit-ID):
# '{ "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": false, "data": [3, 34, 2, 140, 170, 170, 170, 170] }] }'
# Beispiel für das eine Sendebotschaft (29-Bit-ID):
# '{ "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": true, "data": [3, 34, 2, 140, 170, 170, 170, 170] }] }'
# hier wird nur das Relevante angegeben: Die IDs der addressierten CAN-Teilnehmer (Sende-/EmpfangsID) und 8 Datenbytes in einer Liste, im Beispiel
# SOC_REQUEST=[3, 34, 2, 140, 170, 170, 170, 170] 3 Kommando-Bytes, nämlich 34,2,140. Der Rest ist Füllung.
# SOC_REQ_ID=2021 Dies ist die ID der Anforderung
# SOC_RESP_ID=2029 Mit dieser ID kommt die Antwort aus dem Fahrzeug
# FIXME: Momentan wird automatisch genau dann eine 29-Bit-ID angenommen, wenn die ID >4095 ist, sonst eine 11-Bit-ID.
# Sobald ein Fahrzeug diese Annahme verletzt, muß der Code angepaßt werden.
# VW e-up
SOC_REQUEST = [3, 34, 2, 140, 170, 170, 170, 170]
SOC_REQ_ID = 2021 # 2021: Batterie-SG
SOC_RESP_ID = 2029 # 2029: Batterie-SG
ODO_REQUEST = [3, 34, 2, 189, 170, 170, 170, 170] # e-up - Antwort ist 2 CAN-Frames lang!
ODO_REQ_ID = 2021 # 2021: Batterie-SG
ODO_RESP_ID = 2029 # 2029: Batterie-SG
# VW e-Golf
#SOC_REQUEST = [3, 34, 2, 140, 170, 170, 170, 170]
#SOC_REQ_ID = 2021 # 2021: Batterie-SG
#SOC_RESP_ID = 2029 # 2029: Batterie-SG
#ODO_REQUEST = [3, 34, 2, 189, 170, 170, 170, 170]
#ODO_REQ_ID = 2021 # 2021: Batterie-SG
#ODO_RESP_ID = 2029 # 2029: Batterie-SG
# Ora Funky Cat, Danke an Kitmgue
#SOC_REQUEST = [3, 34, 3, 8, 170, 170, 170, 170]
#SOC_REQ_ID = 1931
#SOC_RESP_ID = 1995
#ODO_REQUEST = [3, 34, 208, 4, 170, 170, 170, 170]
#ODO_REQ_ID = 1931
#ODO_RESP_ID = 1995
#VW MEB (laut id3esp32)
#SOC_REQUEST = [3, 34, 2, 140, 170, 170, 170, 170]
#SOC_REQ_ID = 0x17FC007B
#SOC_RESP_ID = 0x17FE007B
#ODO_REQUEST = [3, 34, 41, 90, 170, 170, 170, 170]
#ODO_REQ_ID = 0x17FC0076
#ODO_RESP_ID = 0x17FE0076
# Fiat 500e, siehe https://github.com/meatpiHQ/wican-fw/issues/95
#SOC_REQUEST = [3, 34, 160, 16, 170, 170, 170, 170]
#SOC_REQ_ID = 0x18DA44F1
#SOC_RESP_ID = 0x18DAF144
#ODO_REQUEST = [3, 34, 32, 1, 170, 170, 170, 170]
#ODO_REQ_ID = 0x18DA42F1
#ODO_RESP_ID = 0x18DAF142
"""
#OPENWB-Konfiguration
"""
OPENWB_IP = '192.168.1.60' # hier die Adresse der OpenWB einstellen - Lokaler Name könnte auch funktionieren, nicht ausprobiert
# Die folgenden Topics hängen von der Konfiguration der OpenWB ab. Wichtig ist, die Zahlen (IDs) richtig zu setzen. Sie sind in
# Firmware 2.0 auf der Statusseite zu finden.
#Für OpenWB 2.x:
OPENWB_SETSOC_TOPIC = 'openWB/set/vehicle/1/soc_module/calculated_soc_state/manual_soc' # Topic zum Setzen des manuellen SOC.
OPENWB_GETSOC_TOPIC = 'openWB/vehicle/1/get/soc' # Topic, um den SOC-Wert der Wallbox auszulesen
OPENWB_CHARGECOUNTER_TOPIC = 'openWB/chargepoint/3/get/imported' # Topic, um den Ladezähler auszulesen. Insbesondere die Nummer ist anzupassen
OPENWB_GETPLUGSTATE_TOPIC = 'openWB/chargepoint/3/get/plug_state' # Topic, um den Steckerzustand auszulesen. Nummer anpassen!
OPENWB_FACTORCOUNTER = 1000 # Faktor, um von der Einheit des Zählers (in 2.0 sind es Wh) auf kWh umzurechnen
#Für OpenWB 1.9:
#OPENWB_SETSOC_TOPIC='openWB/set/lp/1/manualSoc' #das Topic, auf das der ermittelte SOC geschrieben werden soll.
#OPENWB_GETSOC_TOPIC='openWB/lp/1/%Soc' #Topic, um den SOC-Wert der Wallbox auszulesen
#OPENWB_CHARGECOUNTER_TOPIC='openWB/lp/1/kWhCounter' #Topic, um den Ladezähler auszulesen. Bei 1.9 in kWh, bei 2.0 in Wh!
#OPENWB_GETPLUGSTATE_TOPIC='openWB/lp/1/boolPlugStat' #Topic, um den Steckerzustand auszulesen.
#OPENWB_FACTORCOUNTER=1 #Faktor, um von der Einheit des Zählers (in 1.9 sind es kWh) auf kWh umzurechnen
"""
WiCAN
"""
WICAN_NAME= 'eup' # Eindeutiger Name des WiCAN, beispielsweise der Name des Fahrzeugs. Definiert einen Zweig unter others/ im MQTT-Broker.
"""
Sonstiges
"""
# Zum Loglevel:
# CRITICAL - momentan nur Versionsausgabe bei Start
# ERROR - Fehler
# WARNING - nur Dinge, die auffällig sind und wichtiger
# INFO - Überblick, was gerade so passiert
# DEBUG - Zur Entwicklung.
LOGLEVEL = 'INFO'
# In das Chargelog werden die Daten der Ladevorgänge geschrieben: Start-SOC, Kilometerstand, Energiemenge, End-SOC laut Wallbox
CHARGELOG_PATH = '/home/pi/soc_helper/energydata.csv'
# Berechnungsfunktion des SOC aus der Antwort des Fahrzeugs.
# Die Antwortbytes des Fahrzeuges auf die SOC-Abfrage werden in einer Liste "bytes" mit n Elementen
# gesammelt. Das erste Element hat den Index 0 und beinhaltet die Sender-ID. Die Funktion rechnet aus
# den Bytes den SOC als Ganzzahl aus und gibt ihn zurück.
# Das Ergebnis muß für die OpenWB-SW 1.9 eine Ganzzahl sein, die Software 2.x kann Nachkommastellen.
def getSoc(bytes):
"""
Berechnen eines SOC aus den übergebenen Bytes. In der Regel entspricht der Rückgabewert des Batteriesteuergerätes dem echten
SOC des Akkus. Die Anzeige zeigt aber schon früher 100% (z.B. bei echten 96%) und 0% (z.B. bei echten 4%). Es sollte der
angezeigte Wert zurückgegeben werden, da sonst z.B. bei 96% echtem SOC die Ladungs seitens des Autos beendet wird.
Des weiteren kann zumindest bei VW ein Wert größer umgerechneten 100% auf einen Fehler oder fehlende Bereitschaft des ange-
fragten Steuergerätes deuten.
"""
soc = round(bytes[4]/2.5*51/46-6.4) # VW e-up [2029, 98, 2, 140, aa, xx, xx, xx, xx]. SOC=aa/2.5, Umrechung auf Anzeigewert
#soc = round((bytes[4]/2.5-8)/0.88) # e-Golf [2029, 98, 2, 140, aa, xx, xx, xx, xx]. SOC=aa/2.5, Umrechung auf Anzeigewert
#soc = round((bytes[4]*256+bytes[5])/10) # Ora Funky Cat [1995, 98, 3, 8, aa, bb, xx, xx]. SOC ist (aa*256+bb)/10
#soc = round((bytes[4]/2.5*51/46-6.4) # VW MEB [0x17FE007B, 98, 2, 140, aa, xx, xx, xx]. SOC ist aa/2.5, Umrechnung auf Anzeigewert
#soc = round((bytes[6]/2.55) # Fiat 500e [0x18DAF144, 98, 160, 16, xx, xx, aa, xx, xx, xx, ...]. SOC ist aa/2.55
#ungültige Werte werden in soc_helper.py abgefangen und gelogged.
return soc
# Funktionen für die Kilometerstand-Berechnung
# Die Antwortbytes des Fahrzeuges auf die km-Abfrage werden in einer Liste "bytes" mit n Elementen
# gesammelt. Das erste Element hat den Index 0 und beinhaltet die Sender-ID. Die Funktion rechnet
# aus den Bytes den Kilometerstand als Ganzzahl aus und gibt ihn zurück.
def getOdo(bytes):
odo=bytes[5]*65536+bytes[6]*256+bytes[7] # VW e-up. [2029, 98, 2, 189, xx, bb, cc, dd, xx, xx, xx, xx, xx, xx]
#odo=bytes[5]*65536+bytes[6]*256+bytes[7] # VW e-Golf, ungetestet. [2029, 98, 2, 189, xx, bb, cc, dd, xx, xx, xx, xx, xx, xx]
#odo = bytes[4]*65536+bytes[5]*256+bytes[6] # Ora Funky Cat. [1995, 98, 208, 4, aa, bb, cc, xx]
#odo = bytes[4]*65536+bytes[5]*256+bytes[6] # VW MEB. [0x17FE0076, 98, 41, 90, aa, bb, cc, xx]
#odo = (bytes[4]*65536+bytes[5]*256+bytes[6])/10 # Fiat 500e [0x18DAF142, 98, 32, 1, aa, bb, cc, xx]
return odo
- Dateianhänge
-
- MQTT-Explorer.png (35.16 KiB) 2750 mal betrachtet
-
- soc_helper output.png
- (130.9 KiB) Noch nie heruntergeladen
-
- WiCAN.png (58.92 KiB) 2750 mal betrachtet
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Hier noch ein Screenshot aus der openWB. Die IDs vom Fahrzeug und der Wallbox sollten zu configuration.py passen.
- Dateianhänge
-
- openWB IDs.png
- (134.99 KiB) Noch nie heruntergeladen
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Und noch ein Nachsatz: Ich habe einmal geprüft, ob die Tonics aus der configuration.py auch bei der openWB schon vorhanden sind. Dabei ist mir aufgefallen, dass calculated_soc_state dort noch keine Unterstruktur mit manual_soc hat. Wird das vielleicht erst mit dem ersten Ladevorgang erzeugt und könnte die Ursache sein, dass der soc_helper bislang keine Rückmeldung bekommt bzw. anzeigt?
- Dateianhänge
-
- MQTT openWB.png
- (175.03 KiB) Noch nie heruntergeladen
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Die Kommunikation mit dem broker der Wallbox funktioniert grundsätzlich, was der Status-Eintrag von WiCAN sowie die Reaktion des soc_helper beweist. Eigentlich sollten nach dem Absetzen der requests die can/tx-Topics im mqtt-explorer auftauchen. Sie fehlen im Bild aber. Der WiCAN wird also vermutlich die Anforderung noch gar nicht erhalten haben. Ich werde mal nachsehen, sobald ich die Zeit finde ob mir irgend etwas auffällt. Möglicherweise die Topics noch falsch zusammengebaut? Du könntest in der Konfiguration den loglevel auf debug stellen, eventuell habe ich da noch Ausgaben eingebaut.
Eine weitere Möglichkeit wäre, eine tx-Anforderung im mqtt-explorer per Hand abzusetzen, wenn das Fahrzeug online ist und zu schauen, ob der WiCAN darauf hin ein rx-Topic ablegt.
Eine weitere Möglichkeit wäre, eine tx-Anforderung im mqtt-explorer per Hand abzusetzen, wenn das Fahrzeug online ist und zu schauen, ob der WiCAN darauf hin ein rx-Topic ablegt.
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Ich habe nochmal geschaut und auf die Schnelle nichts Auffälliges gefunden. Meine Ausgabe mit deinem configuration.py-file (angepasste IP-Adresse) mit Loglevel DEBUG (Fahrzeug ist nicht aktiv) ist:
Hier könntest Du schonmal die Zusammengebauten Pfade sehen.
Blöde Frage: Unter dem Abschnitt CAN im WiCAN-Setup (das ist oberhalb Deines Screenshots) steht MQTT aber auf Enable, oder?
Code: Alles auswählen
2024-06-07 23:14:43,754; CRITICAL;[ soc_helper.py:370 - <module>() ] Starte soc_helper Version 2024-05-28
2024-06-07 23:14:43,755; INFO;[ soc_helper.py:186 - openLocalLogfile() ] Öffne existierende Logdatei ./energydata.csv.
2024-06-07 23:14:43,755; DEBUG;[ soc_helper.py:414 - <module>() ] Verbindungsversuch mit MQTT-Broker der Wallbox unter Adresse 192.168.1.102.
2024-06-07 23:14:43,755; DEBUG;[ soc_helper.py:421 - <module>() ] WiCAN-Status-Topic: others/wican/eup/status/#
2024-06-07 23:14:43,755; DEBUG;[ soc_helper.py:423 - <module>() ] WiCAN-Empfangs-Topic: others/wican/eup/can/rx/#
2024-06-07 23:14:43,755; DEBUG;[ soc_helper.py:425 - <module>() ] WiCAN-Sende-Topic: others/wican/eup/can/tx
2024-06-07 23:14:43,755; DEBUG;[ inotify_buffer.py: 59 - _group_events() ] in-event <InotifyEvent: src_path=b'./energydata.csv', wd=1, mask=IN_OPEN, cookie=0, name='energydata.csv'>
2024-06-07 23:14:43,757; INFO;[ soc_helper.py:231 - on_connect() ] Verbindung hergestellt zu 192.168.1.102 mit Resultat 0
2024-06-07 23:14:43,762; INFO;[ladevorgangclass.py: 64 - setPlug() ] Ladestecker wurde gesteckt bei Zähler 1583970.95.
Blöde Frage: Unter dem Abschnitt CAN im WiCAN-Setup (das ist oberhalb Deines Screenshots) steht MQTT aber auf Enable, oder?
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
MQTT ist beim WiCAN eingeschaltet. Wenn das Fahrzeug wieder online ist, schaue ich aber sicherheitshalber nochmal nach.
Ich habe den loglevel umgestellt und folgendes Ergebnis erhalten:
Wenn das Fahrzeug wieder online ist, probiere ich gerne aus, was passiert, wenn ich den eine tx-Anforderung im mqtt-explorer per Hand absetze. Ich weiß aber nicht, was ich dafür an welcher Stelle im mqtt-explorer eintragen muss ...
Was mir noch eingefallen ist: Du hast geschrieben, dass Du den Master-Zweig der openWB-Software nutzt. Bei der Version auf der SD-Karte, die ich bei openWB bestellt hatte, war der Release-Zweig eingestellt. Davon habe ich dann das Update auf die aktuelle Version 2.1.4 durchgeführt.
Ich habe den loglevel umgestellt und folgendes Ergebnis erhalten:
Code: Alles auswählen
2024-06-08 10:40:56,696; CRITICAL;[ soc_helper.py:370 - <module>() ] Starte soc_helper Version 2024-05-28
2024-06-08 10:40:56,721; INFO;[ soc_helper.py:186 - openLocalLogfile() ] Öffne existierende Logdatei /home/pi/soc_helper/energydata.csv.
2024-06-08 10:40:56,726; DEBUG;[ soc_helper.py:414 - <module>() ] Verbindungsversuch mit MQTT-Broker der Wallbox unter Adresse 192.168.1.60.
2024-06-08 10:40:56,731; DEBUG;[ soc_helper.py:421 - <module>() ] WiCAN-Status-Topic: others/wican/eup/status/#
2024-06-08 10:40:56,735; DEBUG;[ soc_helper.py:423 - <module>() ] WiCAN-Empfangs-Topic: others/wican/eup/can/rx/#
2024-06-08 10:40:56,738; DEBUG;[ soc_helper.py:425 - <module>() ] WiCAN-Sende-Topic: others/wican/eup/can/tx
2024-06-08 10:40:56,758; INFO;[ soc_helper.py:231 - on_connect() ] Verbindung hergestellt zu 192.168.1.60 mit Resultat 0
2024-06-08 10:40:57,470; INFO;[ soc_helper.py:258 - cb_status() ] WiCAN-Status: others/wican/eup/status b'{"status": "offline"}'
2024-06-08 10:40:57,473; INFO;[ soc_helper.py:274 - cb_status() ] Fahrzeugstatus ist <<offline>>
Was mir noch eingefallen ist: Du hast geschrieben, dass Du den Master-Zweig der openWB-Software nutzt. Bei der Version auf der SD-Karte, die ich bei openWB bestellt hatte, war der Release-Zweig eingestellt. Davon habe ich dann das Update auf die aktuelle Version 2.1.4 durchgeführt.
- Dateianhänge
-
- Bildschirmfoto 2024-06-08 um 11.52.20.png
- (65.7 KiB) Noch nie heruntergeladen
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Ich denke kaum, daß mein master-Zweig das Problem darstellt. Um es trotzdem zu prüfen, bin ich wieder auf Release gegangen und werde testen, sobald sich Gelegenheit ergibt.
Ich halte erstmal fest:
Oder es liegt ein mir noch nicht offensichtlicher Fehler irgendwo zwischen soc_helper und wallbox vor.
Zum Versuch, das Auslesen ohne pi vom mqtt-explorer zu starten: Rechts im Abschnitt "Publish" unter Topic
eintragen und etwas tiefer als payload das hier:
Dann auf den rechten blauen Knopf "PUBLISH" klicken.
Es sollte links unter others/wican/eup ein Zweig can/tx erscheinen und die Botschaft. Idealerweise sollte bei aktivem e-up mit Wican die Antwort dann unter rx auftauchen.
Ich halte erstmal fest:
- der soc_helper initiiert erfolgreich eine mqtt-Verbindung zur Wallbox.
- die Topics werden meiner Meinung nach korrekt gebildet.
- der soc_helper bemerkt, wenn der WiCAN-Status online geht
- er sagt, er fordere SOC und Kilometerstand an.
- eine Antwort ist in mqtt-explorer nicht sichtbar
Oder es liegt ein mir noch nicht offensichtlicher Fehler irgendwo zwischen soc_helper und wallbox vor.
Zum Versuch, das Auslesen ohne pi vom mqtt-explorer zu starten: Rechts im Abschnitt "Publish" unter Topic
Code: Alles auswählen
others/wican/eup/can/tx
Code: Alles auswählen
{ "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": false, "data": [3, 34, 2, 140, 170, 170, 170, 170] }] }
Es sollte links unter others/wican/eup ein Zweig can/tx erscheinen und die Botschaft. Idealerweise sollte bei aktivem e-up mit Wican die Antwort dann unter rx auftauchen.
Re: Projekt: SOC von OBD2-Buchse in die Wallbox (ohne Cloud)
Es funktioniert!
Zwei Dinge habe ich gemacht:
1. Das WLAN zu WiCAN nochmal nachgebessert. Es war tatsächlich etwas schwach, sollte jetzt aber deutlich besser und damit ok sein. Die alte schwache Verbindung hatte aber bei der ursprünglichen Konstellation mit Software 1.9 ausgereicht, um zuverlässig die Fahrzeugdaten über den soc_helper in die Wallbox zu übertragen.
2. Das Fahrzeug einmal geladen mit dem manuellen SOC-Modul. Dadurch ist bei der openWB nun bei calculated_soc_state eine Unterstruktur mit manual_soc.
Ich danke Dir vielmals für Deine Hilfe und für das tolle Projekt!!
Zwei Dinge habe ich gemacht:
1. Das WLAN zu WiCAN nochmal nachgebessert. Es war tatsächlich etwas schwach, sollte jetzt aber deutlich besser und damit ok sein. Die alte schwache Verbindung hatte aber bei der ursprünglichen Konstellation mit Software 1.9 ausgereicht, um zuverlässig die Fahrzeugdaten über den soc_helper in die Wallbox zu übertragen.
2. Das Fahrzeug einmal geladen mit dem manuellen SOC-Modul. Dadurch ist bei der openWB nun bei calculated_soc_state eine Unterstruktur mit manual_soc.
Code: Alles auswählen
2024-06-08 16:00:07,437; CRITICAL;[ soc_helper.py:370 - <module>() ] Starte soc_helper Version 2024-05-28
2024-06-08 16:00:07,464; INFO;[ soc_helper.py:186 - openLocalLogfile() ] Öffne existierende Logdatei /home/pi/soc_helper/energydata.csv.
2024-06-08 16:00:07,469; DEBUG;[ soc_helper.py:414 - <module>() ] Verbindungsversuch mit MQTT-Broker der Wallbox unter Adresse 192.168.1.60.
2024-06-08 16:00:07,473; DEBUG;[ soc_helper.py:421 - <module>() ] WiCAN-Status-Topic: others/wican/eup/status/#
2024-06-08 16:00:07,477; DEBUG;[ soc_helper.py:423 - <module>() ] WiCAN-Empfangs-Topic: others/wican/eup/can/rx/#
2024-06-08 16:00:07,482; DEBUG;[ soc_helper.py:425 - <module>() ] WiCAN-Sende-Topic: others/wican/eup/can/tx
2024-06-08 16:00:07,500; INFO;[ soc_helper.py:231 - on_connect() ] Verbindung hergestellt zu 192.168.1.60 mit Resultat 0
2024-06-08 16:00:08,243; INFO;[ soc_helper.py:258 - cb_status() ] WiCAN-Status: others/wican/eup/status b'{"status": "online"}'
2024-06-08 16:00:08,246; INFO;[ soc_helper.py:264 - cb_status() ] Fahrzeug ist online. Sende SOC- und ODO-Anforderung
2024-06-08 16:00:08,251; INFO;[ soc_helper.py:267 - cb_status() ] Sende SOC-Anforderung: { "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": false, "data": [3, 34, 2, 140, 170, 170, 170, 170] }] }
2024-06-08 16:00:08,256; INFO;[ soc_helper.py:271 - cb_status() ] Sende ODO-Anforderung: { "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": false, "data": [3, 34, 2, 189, 170, 170, 170, 170] }] }
2024-06-08 16:00:08,509; DEBUG;[ soc_helper.py:285 - cb_rx() ] Empfangene CAN-Botschaft: b'{"bus":"0","type":"rx","ts":46822,"frame":[{"id":2029,"dlc":8,"rtr":false,"extd":false,"data":[4,98,2,140,197,170,170,170]}]}'
2024-06-08 16:00:08,514; DEBUG;[ soc_helper.py:329 - cb_rx() ] Einteilige Botschaft: [2029, 98, 2, 140, 197, 170, 170, 170]
2024-06-08 16:00:08,518; DEBUG;[ soc_helper.py:339 - cb_rx() ] lenSOC: 3; expectSOC: [98, 2, 140]
2024-06-08 16:00:08,521; DEBUG;[ soc_helper.py:343 - cb_rx() ] lenODO: 3; expectODO: [98, 2, 189]
2024-06-08 16:00:08,526; INFO;[ soc_helper.py:351 - cb_rx() ] Fahrzeug-SOC ist 81
2024-06-08 16:00:08,529; DEBUG;[ soc_helper.py:353 - cb_rx() ] SOC-Wert von 81 an openWB/set/vehicle/1/soc_module/calculated_soc_state/manual_soc schicken.
2024-06-08 16:00:08,538; DEBUG;[ soc_helper.py:285 - cb_rx() ] Empfangene CAN-Botschaft: b'{"bus":"0","type":"rx","ts":46842,"frame":[{"id":2029,"dlc":8,"rtr":false,"extd":false,"data":[16,13,98,2,189,137,0,69]}]}'
2024-06-08 16:00:08,543; DEBUG;[ soc_helper.py:306 - cb_rx() ] Ersten Teil einer mehrteiligen Botschaft empfangen: [2029, 98, 2, 189, 137, 0, 69]
2024-06-08 16:00:08,547; DEBUG;[ soc_helper.py:313 - cb_rx() ] Aufforderung für Folgeteile absetzen: { "bus": "0", "type": "tx", "frame": [{ "id": 2021, "dlc": 8, "rtr": false, "extd": false, "data": [48, 0, 100, 170, 170, 170, 170, 170] }] }
2024-06-08 16:00:08,593; DEBUG;[ soc_helper.py:285 - cb_rx() ] Empfangene CAN-Botschaft: b'{"bus":"0","type":"rx","ts":47112,"frame":[{"id":2029,"dlc":8,"rtr":false,"extd":false,"data":[33,192,0,0,151,179,16,84]}]}'
2024-06-08 16:00:08,598; DEBUG;[ soc_helper.py:322 - cb_rx() ] Mehrteilige Botschaft komplett: [2029, 98, 2, 189, 137, 0, 69, 192, 0, 0, 151, 179, 16, 84]
2024-06-08 16:00:08,603; DEBUG;[ soc_helper.py:339 - cb_rx() ] lenSOC: 3; expectSOC: [98, 2, 140]
2024-06-08 16:00:08,608; DEBUG;[ soc_helper.py:343 - cb_rx() ] lenODO: 3; expectODO: [98, 2, 189]
2024-06-08 16:00:08,611; INFO;[ soc_helper.py:361 - cb_rx() ] Fahrzeug-Kilometerstand ist 17856