Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wiki-Eintrag WiCAN OBD2 Dongle mit manuellem SoC #2096

Draft
wants to merge 14 commits into
base: master
Choose a base branch
from
145 changes: 145 additions & 0 deletions docs/WiCAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# WiCAN-OBD2 mit manuellem SoC Modul der openWB

Mit Hilfe des WiCAN OBD2 Dongles von meatPi Electronics können die Werte des Fahrzeugs über die OBD2-Schnittstelle ausgelesen und im WLAN per MQTT an die openWB Wallbox gesendet werden. In Verbindung mit dem manuellem SoC Modul der openWB ist hiermit die Nutzung ohne Cloud-Dienste der Fahrzeughersteller möglich.
https://github.com/meatpiHQ/wican-fw

Beim "einfahren" ins heimische WLAN und ggf. auch während des Ladevorganges wird dann der aktuelle SoC des Fahrzeugs an die openWB übertragen.

Die erste Umsetzung erfolgte von zut im openWB Forum, der hierfür auch eine Unterstützung von Spritmonitor umgesetzt hat. Hierfür ist ein weiteres Gerät im Netzwerk nötig, auf dem ein kleines Programm (soc_helper) laufen kann:
https://forum.openwb.de/viewtopic.php?t=7451

Im Laufe der weiteren Entwicklung wurde die Möglichkeit des automatischen Auslesen (AutoPID) in die Firmware des Gerätes integriert. Hierfür ist nun keine zusätzliche Hardware mehr nötig, da der Dongle die Daten direkt per MQTT an die openWB sendet. Die Unterstützung von Spritmonitor ist hiermit jedoch nicht möglich. Die Einrichtung dieser Funktion soll hier näher beschrieben werden.

### 1. Voraussetzungen
* WiCAN Dongle mit Firmware 3.48.
* Konfiguration des Manuellen SoC Moduls im Fahrzeug der openWB.
* WLAN Empfang im Bereich der openWB bzw. des Fahrzeugs.
* Ggf. Beachtung einer Alarmanlage, die den OBD2 Port überwacht.

### 2. WiCAN Dongle
Die Beschaffung der Hardware ist zunächst die größte Hürde, da die Firma meatPi Electronics Ihren Sitz in Australien hat.
Es sind aktuell 2 Bezugsquellen bekannt:
https://github.com/meatpiHQ/wican-fw?tab=readme-ov-file#order-on-mouser-or-crowd-supply
Es ist hierbei darauf zu achten, dass nur der WiCAN-OBD2 oder der WiCAN PRO (Coming soon) verwendet werden kann. Bei Bestellung über Mouser erfolgt der Versand ab 50€ Versandkostenfrei, so dass sich idealerweise 2 oder mehr Besteller zu einer Sammelbestellung zusammentun können. Achtung: Die angegeben Preise sind Nettopreise.

### 3. Konfiguration manueller SoC in openWB
* In der Fahrzeugkonfiguration muss das manuelle SoC Modul von openWB eingerichtet sein. Für die spätere Konfiguration der MQTT-Topics wird die Fahrzeug-ID benötigt. Diese kann man am besten auf der Status Seite der openWB auslesen:

![Status](pictures/WiCAN_Status.png "openWB Status")

### 4. Konfiguration WiCAN Settings

* Zunächst muss der WiCAN ins Heim-WLAN geholt werden:
https://meatpihq.github.io/wican-fw/config/wifi

* Firmware Update auf 3.48 oder neuer:
https://meatpihq.github.io/wican-fw/config/firmware-update

* Nun werden die weiteren Parameter konfiguriert:
![WiCAN Settings](pictures/WiCAN_Settings.png "WiCAN Settings")

* Protocol AutoPID wird zur automatischen Abfrage der PIDs benötigt (Tab Automate)
* Sleep Mode: Bei Unterschreiten der Sleep Voltage schaltet sich der WiCAN nach 3 Minuten ab. Hierdurch wird ein Entladen der 12V Batterie verhindert.
* MQTT zur openWB erfolgt mit leerem User und Passwort
* RX und Status Topic müssen mit others/ beginnen, damit sie von openWB beachtet werden. Sie dienen nur der Fehleranalyse und Überwachung mit MQTT-Explorer. Für die eigentliche Funktion werden sie nicht benötigt.

### 5. Ermittlung der PID Parameter aus dem Vehicle Profile bei meatPi

Für die Anbindung an HomeAssistant werden bei meatPi die benötigten PID Parameter verschiedener Fahrzeuge in Vehicle-Profilen gesammelt. Die Informationen aus diesen Profilen können wir verwenden, um die Parameter, die wir für die openWB benötigen, zu ermitteln.

Die Profile sind hier einzeln verfügbar:
https://github.com/meatpiHQ/wican-fw/tree/main/vehicle_profiles

Anhand des Beispiels eines VW:ID, die wichtigen Informationen (fettgedruckt).
Wir benötigen zwingend den SoC, optional können wir auch die Reichweite (Range) gebrauchen:

---
{
"car_model":"VW: ID",
**"init":"ATST96;ATFCSD300000;ATFCSM1;",**
"pids":[
{
**"pid":"22028C1",**
**"pid_init":"ATSP7;ATCP17;ATSHFC007B;ATFCSH17FC007B;ATCRA17FE007B;",**
"parameters":[
{
"class":"battery",
**"expression":"B4\*0.4425-6.1947",**
**"name":"soc",**
"unit":"%"
}
]
},
{
**"pid":"222AB62",**
**"pid_init":"ATSP6;ATCP18;ATSH710;ATFCSH710;ATCRA77A;",**
"parameters":[
{
"class":"none",
**"expression":"[B5:B6]",**
**"name":"range",**
"unit":"km"
}
]
}

### 6. Übernahme der Werte für die Custom PIDs (Automate-Tab)

die gefundenen Werte werden nun im Tab Automate bei den Custom PIDs eingetragen:
![WiCAN Automate Tab](pictures/WiCAN_Automate.png "WiCAN Automate")

- "**init**" wird in das Feld "Custom Initialisation" übernommen.
- Das Feld Name muss für den SoC "manual_soc" lauten, für die Reichweite "range".
- Falls vorhanden wird "**pid_init**" in das Feld "Init" übernommen. Dieses Feld kann auch leer sein, wenn für die einzelnen PIDs keine besondere Initialisierung benötigt wird.
- "**pid**" wird in das Feld PID übernommen.
- "**expression**" wird in das Feld Expression übernommen.
- Period(ms) ist das Intervall, in denen die Werte abgefragt werden.
- Im Feld Type muss für den SoC "MQTT_Topic", für die Reichweite jedoch "MQTT_Wallbox" eingestellt werden.
- Im Feld Send_to muss die Fahrzeug ID aus der openWB, die wir in [Punkt 3](#3-konfiguration-manueller-soc-in-openwb) ermittelt haben, eingesetzt werden (...vehicle/**x**/...):
- Für den SoC:
openWB/set/vehicle/**x**/soc_module/calculated_soc_state
- Für die Reichweite:
openWB/set/vehicle/**x**/get/range

Das Ergebnis sieht dann z.B. so aus:

Name|Init|PID|Expression|Period(ms)|Type|Send_to
-|-|-|-|-|-|-
manual_soc|ATSP7;ATSHFC007B;ATCP17;ATCRA17FE007B;ATFCSH17FC007B;|22028C1|B4*0.4425‑6.1947|60000|MQTT_Topic|openWB/set/vehicle/**3**/soc_module/calculated_soc_state
range|ATSP6;ATSH710;ATCP18; ATCRA77A;ATFCSH710;|222AB62|[B5:B6]|60000|MQTT_Topic|openWB/set/vehicle/**3**/get/range

### Ergänzug zur openWB 1.9
Bei openWB 1.9 wird das SOC Modul Manuell+Berechnung am Ladepunkt konfiguriert, das Topic benötigt hier den Typ MQTT_Wallbox.
Am Beispiel Ladepunkt 1 würde dies dann so aussehen:
Name|Init|PID|Expression|Period(ms)|Type|Send_to
-|-|-|-|-|-|-
manualSoC|ATSP7;ATSHFC007B;ATCP17;ATCRA17FE007B;ATFCSH17FC007B;|22028C1|B4*0.4425‑6.1947|60000|MQTT_Wallbox|openWB/set/lp/**1**


### 7. Alarmanlage des Fahrzeugs

Bei Fahrzeugen mit einer Alaramanlage wird häufig auch der OBD2-Port überwacht, so dass bei einer Abfrage die Alarmanlage auslöst.
Um dieses Problem zu umgehen sind momentan folgende Lösungen bekannt:

- Bei einigen Fahrzeugen liegt an PIN1 des OBD2-Ports nur bei eingeschalteter Zündung eine Spannung von 12V an. Diese kann dann zur Versorung des WiCAN Dongles verwendet werden, so dass dieser bei abgeschalteter Zündung gar keine Spannungsversorgung hat. Normalerweise liegt an PIN16 die Versorgungsspannung für den WiCAN an.
Es kann also in doiesem Fall mit einem entsprechend "manipuliertem" Adapterkabel z.B. PIN1 und PIN16 getauscht werden:
https://forum.openwb.de/viewtopic.php?p=115467#p115467
- Ggf. ist eine Anpassung der OBD2-Überwachung der Alarmanlage möglich:
https://www.born-forum.de/forum/thread/193-m%C3%B6gliche-codierungen-am-cupra-born-ohne-gew%C3%A4hr-auf-eigene-gefahr/?postID=77395#post77395

Beide Lösungen dienen nur zur Info und erfolgen stets auf eigene Gefahr

### 8. Übersicht erfolgreich getesteter Fahrzeuge

Abschliessend noch eine kurze Auflistung von bereits erfolgreich getesteten Fahrzeugen.
Gerne kann und sollte diese Liste erweitert werden.
Zur besseren Übersicht werden hier nur die tatsächlich verwendeten Fahrzeuge (am besten mit Modelljahr) sowie nur der SoC aufgeführt:

|Fahrzeug|Custom Initialisation|Name|Init|PID|Expression|
|-|-|-|-|-|-|
|CUPRA Born 2022|ATST96;ATFCSD300000;ATFCSM1;|manual_soc|ATSP7;ATCP17;ATSHFC007B;ATFCSH17FC007B;ATCRA17FE007B;|22028C1|B4*0.4425‑6.1947|
|Hyundai Ioniq (28 kWh) 2017|ATSP6;ATSH7E4;ATST96;|manual_soc||2105|B39/2|
|Peugeot iOn|ATSP6;ATFCSH761;ATFCSD300000;ATFCSM1;ATSH761;ATCRA762;|manual_soc||2101|(B4/2)‑5|

Anmerkungen zur Tabelle:
Um einen Zeilenumbruch zu verhindern, müssen Leerzeichen durch einen "no-break space character" (\ ) und ein Minuszeichen durch "no-brak hyphen" (\‑) im Markdown Quelltext ersetzt werden.
1 change: 1 addition & 0 deletions docs/_Sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* [Ladepunkte](https://github.com/openWB/core/wiki/Ladepunkte)
* [Fahrzeuge](https://github.com/openWB/core/wiki/Fahrzeuge)
* [Manueller SoC](https://github.com/openWB/core/wiki/Manueller-SoC)
* [WiCAN OBD2 Dongle mit manuellem SoC](https://github.com/openWB/core/wiki/WiCAN)
* [Lademodi](https://github.com/openWB/core/wiki/Lademodi)
* Zähler
* [Grundsätzliches zu Zählern](https://github.com/openWB/core/wiki/Grundsätzliches-zu-Zählern)
Expand Down
Binary file added docs/pictures/WiCAN_Automate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/pictures/WiCAN_Settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/pictures/WiCAN_Status.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.