Hier noch Doku für HA:
der Hersteller vom Wican hat jetzt auch verraten, wie sein Weg ist die richtigen Phrasen herauszubekommen.
Wican ins Auto stecken, die App Carscanner aufs Handy laden, Carscanner per Wifi mit dem Wican verbinden (der hat ja ne eigene IP, Port ist 23).
Dann in der Carscanner-App das eigene Auto auswählen, Sensoren auswählen, und dann den einen Sensor dauerhaft abfragen lassen, den man haben möchte.
Dann sieht man im MQTT-Channel „CAN“ TX und RX die Abfrage-Phrase und die Antwort-Phrase und kann damit weiter arbeiten. Kann man z.b. bequem über den MQTT-Explorer vom Home-Assistant loggen.
Auto: BYD Atto 3 (Baujahr 2024, Linkslenker)
SoC Auslesemöglichkeiten:
1. Ablesbar in der App des Herstellers (kann nicht über eine API angezapft werden und wurde bis dato auch noch nicht reverse engineered, sodass man die Daten dort rausbekommt)
2. Mittels OBD Stecker
Setup:
1. Wican wie auf der Github Seite beschrieben aufgesetzt, inkl. MQTT Kommunikatrion zu einem Mosquitto Broker den ich schon hatte.
2. Folgenden Wican Filter:
Bild
3. HomeAssistant, wiederum wie auf der Github Seite von Wican beschrieben.
- HA lauscht für das Wican Topic, welches sagt, dass er online ist
- und ab dann wird alle 5 Sekunden folgendes MQTT Topic geplublished, woraufhin der Wican wie im Filter konfiguriert antwortet. Sieht im MQTT Explorer etwa so aus: Bild
- geht der Wican Status auf offline, stoppt die regelmäßige Abfrage des SoC
Infos:
Während die Zündung aktiv ist und während dem Laden bleibt der Wican eingeschaltet. Wenn die Zündung aus ist, und auch nicht geladen wird, erkennt der Wican das an der Spannung der 12V Batterie und geht nach 3 Minuten in den deep sleep. Umgekehrt, wacht er bei Zündung und/oder Laden wieder auf.
Details zum CAN Protokoll:
Folgende CAN Message triggert die SoC Response im Atto 3: (diese wird auch in meiner HomeAssistant Automation regelmäßig geschickt)
{"bus":"0","type":"tx","ts":51109,"frame":[{"id":2023,"dlc":8,"rtr":false,"extd":false,"data":[3,34,0,5,170,170,170,170]}]}
Als Antwort kommen immer zwei Frames:
{"bus":"0","type":"rx","ts":37872,"frame":[{"id":2031,"dlc":8,"rtr":false,"extd":false,"data":[7,98,31,254,44,26,152,58]}]}
{"bus":"0","type":"rx","ts":38043,"frame":[{"id":2031,"dlc":8,"rtr":false,"extd":false,"data":[4,98,0,5,57,170,170,170]}]}
Interessant für den SoC ist dabei nur der Frame, in dem data mit 4 beginnt. Darin ist der 5. Wert der SoC als Dezimalzahl in % (konkret ist es das 4. byte mit 1 byte Länge, daher Start Bit 32, Bit length 8, Expression bloß V (weil der Wert direkt drin steht), die CAN ID steht mit 2031 fest und bei PID wird 4 angegeben, weil das der Filter auf das erste byte von data ist (damit wählen wir also den relevanten Framne der zwei))
Ich hoffe das hilft dem ein oder anderen BYD Atto 3 Besitzer bei den eigenen Versuchen mit MeatPi Wican OBD den SoC des Atto ins Smart Home zu bekommen (und von dort aus dann noch wer weiß wohin...)