-
Notifications
You must be signed in to change notification settings - Fork 8
Elli Wallbox eebus not detected #1
Comments
Same here. evcc 0.94 and Elli Wallbox updated to the latest firmware. I can confirm receiving mDNS / SHIP announcements from the wallbox, with tcpdump I see SRV records with apparently valid A and AAAA fields. The "evcc charger" returns nothing, and from the wallbox web UI I see no available "energy managers". @vheat the SHIP specs are publicly available, let me know if you did not find them. My wallbox config block in evcc.yaml is
I have some experience with Go and had a quick look at the SHIP and SPINE specifications, if there's anything I can do to help in debugging this issue I will be glad to. |
@ginsolvibile SHIP only happens after the discovery. Without any logging I'm still unsure what exactly fails during discovery. @DerAndereAndi mentioned mDNS but I'm not sure what goes wrong. It would probably help to have the Go mDNS listener to add some logging. |
I am on it with some success and some problems. Not done yet. The current implementation is not compatible, you need to wait. |
What I can see via wireshark is that the wallbox sends 3 mDNS queries (AAAA, A and SRV) and then immediately answers itself. The SRV query is:
and the corresponding answer is
Let me know if you want me to do some tests on my network. |
Thank you @DerAndereAndi and @andig for all the work you've done, implementing eebus from scratch must have been a challenging task. After 2 years waiting for Elli to deliver the protocol they promised :) I can certainly wait all the time you need. I'm available for further testing, if you need. |
The problem with mDNS here is the zeroconf library. Elli can not see the mDNS entry from this library and the library only sometimes sees entries from the Elli wallbox. When it does see the Elli wallbox, there are always some mandatory items missing, either the network record or the TXT record. I implemented a workaround to use the native avahi linux system when available. That way discovery works flawlessly. My desire to make zerconf work here is very very low. For ship to work I already have some fixes, they were minor. The other remaining issue is the certificate Elli or better EVBox uses (they are the 3rd party building the wallbox and developing the software). The certificate is not conforming to the DER standard and marking the isCA flag with 0x1 for true instead of 0xFF and go crypto checks for 0xFF and rejects the certificate otherwise. More info here: https://forum.golangbridge.org/t/x509-certificate-parse-error-with-iot-device/27622/2 |
Ich hab mal bei GE angefragt ob jemand von VW mit liest. |
You could try the |
For more discussions see evcc-io/evcc#1217 (reply in thread) |
I am not an asn.1 expert, but if I read https://docs.microsoft.com/en-us/windows/win32/seccertenroll/about-boolean correct the bool is a valid true. |
Here the expertise from an SSL expert (not me):
|
Das Cert der Elli bekommt man mit Aus dem Ergebnis das Cert ausschneiden (von BEGIN bis END CERTIFICATE und z.B. in wallbox.crt kopieren) Der freie OSS Nokalva ASN1 Decoder Da scheint die Elli intern die Certs für https und SHIP unterschiedlich zu erzeugen. |
Bzgl. SSL: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/ schreibt:
Ich würde das Go issue aufmachen, weiß aber nicht wie ich mit
umgehen soll. Kann der Experte vllt nochmal sagen, ob/wie man ihm das ansieht? Hilfreich wäre auch ein Callstack von der Stelle wo das Bool Decoding aussteigt- dann wüsste man wenigstens was Go da in den höheren Levels gerade versucht. |
Allerdings sieht das schlecht aus: golang/go#48210 (comment)
|
Aber vielleicht hilft das ja: https://github.com/go-asn1-ber/asn1-ber |
Hallo, ich bedanke mich für die Blumen :-) Direkt die Introduction in dieser Spec sagt, Seite v
Damit ist Decoding wie Encoding und die Position von cryptobyte ist akzeptabel. Elli ist damit definitiv falsch. Persönlich fände ich auch gut, die Varianz im TLS Cert möglichst gering zu halten, insofern hat die TLS/X.509 Spec auch DER gewählt. Es stört uns nur im Moment... Aber ich denke kurz-/mittelfristig muss Elli hier nachbessern, Ich halte ein falsch encodiertes TLS Cert schon für problematisch. |
Der asn1-ber vergleicht für BOOLEAN True mit
Ebenso beim Encoding Line 526, da wird einfach der Wert != 0 genommen.
Sollten wir den BER Code allgemein verwenden, könnten wir an anderer Stelle in Problem laufen, sollte die Elli intern dann doch DER machen. Nur als Randbemerkung, das Cert, dass die Elli für https / lokales Config Interface verwendet, ist korrekt mit 0xFF kodiert. |
Bleibt die Frage wie wir die Library überhaupt nutzen könnten:
Der zweite Absatz dürfte der spannende sein. Jetzt müsste man mal testen, ob sich die Verifikation damit umgehen lässt. Ich fürchte aber auch das würde das Problem nicht lösen, da uns das Zertifikat denn nicht zum Verschlüsseln zur Verfügung stünde? |
Nein, die Methode kann man nicht verwenden, er steigt vorher aus. In https://github.com/golang/go/blob/master/src/crypto/tls/handshake_client.go#L856 geht er aus Hilft also leider nicht. Es scheint es gibt hier nur 2 Lösungen:
Übersehe ich eine Lösungsvariante? |
Ich seh eigentlich nur die zweite Lösung, Elli benutzt hier ein formal inkorrektes Zertifikat (soll DER sein). Lösung 1 wäre für mich ein Workaround bis dahin. Gibt es bei Go eine Möglichkeit, privat einen Patch auf ein vorhandenes Paket zu setzen? |
Ein anderer (aber auch kein schöne) Möglichkeit wäre das über einen Proxy, der das Zert akzeptiert und ein eignes Präsentiert laufen zu lassen. |
Ich hatte versucht das in ein eigenes gepatchtes Crypto Paket zu forken, aber die internen Abhängigkeiten sind recht groß, so dass ich davon abgelassen habe. Einen anderen Weg das "schön" zu patchen, ist mir nicht bekannt. Vielleicht hat da aber @andig eine Idee, er hat da viel mehr Erfahrung. Ob und bis Elli das korrigiert, wird kein kurzfristiger Prozess sein, sondern eher Monate dauernd (nach meiner Erfahrung). Ein Proxy zu nutzen ist nicht trivial möglich. Es muss zwischen den Geräten eine stehende TLS WebSocket Verbindung geben und Informationen aus dem Zertifikat in ein Proxy Zertifikat müssten transparent übersetzt werden, da diese Zertifikatsinfos auch in der weiteren Kommunikation relevant sind. Nach meiner Einschätzung wäre das extrem viel Arbeit und zu wissen ob das auch funktionieren könnte. Den Aufwand imho nicht Wert. |
Ja,
Coole Idee. Gibts da was? |
Kann man damit auch einzelne Files ersetzen? Das Modul zu extrahieren um es zu patchen hatte ich versucht aber die internen Querverbindungen (Referenzen auf Ich versuche das mal fix nur mit Update: bekomme es nicht hin. |
|
Ich denke das geht nur auf ganze Module und nicht einzelne Packages :( Und dann hängst Du wieder an den |
@DerAndereAndi könntest Du den PR auch gegen die originale |
Ich habe noch nichts benutzt. Per Google habe ich welche gefunden. "Leider" viele in go geschrieben, so dass sie nicht wahrscheinlich helfen können (https://github.com/suyashkumar/ssl-proxy, https://github.com/ghostunnel/ghostunnel). |
Update: hab es hinbekommen und den Branch einfach von nem älteren Commit gemacht: grandcat/zeroconf#108 |
Mein Vorschlag wäre ganz einfach: abwarten. Der ganze Proxykram nutzt uns sowieso nur wenn danach auch die Kommunikation funktioniert. Da ist Andi mit Elli dran. Wenn der Kontakt eh steht hätte ich auch die Hoffnung, dass sich beim Zertifikat was tut. Von daher würde ich da aktuell gar keinen Aufwand rein stecken. Wer jetzt testen will hat den Workaround mit lokal gepatchtem Go. |
Anders gesagt: Es wird hier keine kurzfristige Lösung von Elli geben. Eine Workaround wird wohl für dieses Jahr notwendig sein. |
Hatte Elli etwas gesagt, wann sie einen fix dafür heraus bringen werden? |
@matze-pe Elli ist sehr daran interessiert dass die Wallbox mit möglichst vielen EEBUS HEMS Systemen funktioniert. Ich würde jetzt aber nicht davon ausgehen, dass nur für evcc ein Software Update außerhalb der geplanten Releases herauskommen wird. |
Moin! |
@HeikoSausM Danke, es sind bereits alle Probleme bei Elli adressiert und bekannt. |
Hallo @HeikoSausM, |
@vheat nein, evcc hat das E3DC System erkannt. Die können kein EEBUS, bzw. nur deren Mutterkonzern Hager hat bisher ein HEMS das EEBUS kann. |
@lansester Ich würde hier in diesem Ticket gerne nur um das eigentliche Thema diskutieren, hoffe auf dein Verständnis. Als Hinweis: Du kannst die Box per DIP Schalter auch auf 4,2kW reduzieren. Ist im Handbuch dokumentiert. |
This comment was marked as off-topic.
This comment was marked as off-topic.
sehr ruhig geworden... |
Ich bin mit Elli im Kontakt und Elli ist sehr an einer Lösung interessiert. Wir können nur warten. |
Hallo, ich habe Elli gerade auch wegen dem Thema angeschrieben, da ich das hier zu spät gelesen haben. :-( Hast du irgendwelche Ticketnummern von Elli, oder ein paar Infos wie du mit ihnen in Kontakt stehst? Viele Grüße |
@Hofyyy Ich bin mit dem entsprechenden Projektverantwortlichen in Kontakt. Es braucht da keine Ticketnummern oder ähnliches. Es gibt viele Audi/VW Mitarbeiter die bei dem Problem nachgefragt haben, weil sie selbst betroffen sind, die Manager wollen auch dass es Lösungen gibt, von Elli Seite ist da genug drive und Druck dahinter. Auch wenn das nach außen wenig ist, ist es das einzige was ich sagen kann. Bitte um Verständnis. P.S.: Wer einmal in so großen Firmen (habe ich) in der Automobilindustrie (habe ich auch) gearbeitet hat weiss, dass man da nicht einfach jemanden ein paar Stunden hinsetzen kann um das Problem zu finden, zu lösen und dann ein Bugfix zu veröffentlichen. P.P.S.: Die Box wird nicht von Elli selbst entwickelt, sondern wird zugeliefert. Schaut mal auf die Plakette, da steht der Anbieter. Und der macht auch die Software, wobei da bei EEBUS ein weiterer Zulieferer im Boot ist. |
@DerAndereAndi Deine P.P.S. Gründe kann ich nachvollziehen, allerdings besteht ja der Fehler darin, dass VW als Konzern es so organisiert und nicht die Fäden in der Hand behält. Um es mal mit den Worten von Herrn Diess zu sagen: Ich bin sehr gespannt ob sich die Deutsche Autoindustrie auf der Vergangenheit ausruht, oder sich Strukturell so aufstellt, so ein Thema wie EEBUS in einem sinvollen Zeitrahmen abfahren zu können und nicht auf Zulieferer verweisen zu müssen. Und auch Zulieferer kann man anders Managen. PS: |
Ich fände es Klasse, wenn die Offenheit und Lösungsorientierung soweit gehen würde, dass z.B. VW oder Elli Mitarbeiter hier in ihrer Rolle präsent wären. Schöne Beispiele dafür gibts z.B. bei Go wo Intel oder auch Mitarbeiter anderer Firmen in loser Zusammenarbeit Themen voran bringen. Uns treibt ja der gemeinsame Anspruch, die Energiewende zum Erfolg zu machen! |
Update: ich habe es nun zum Laufen gebracht, es gab noch einen Fehler bei den Heartbeats hier im Stack. Ein Feld ist mandatory und wird benötigt, die Porsche Wallbox hatte das aber nicht interessiert, daher ist das bis jetzt durchgerutscht. Der Zertifikatsproblem ist noch offen, da bin ich noch mit Elli dran. Und auch an den Workarounds die ich einbauen musste aufgrund von Fehlern auf deren Seite. |
Danke….. |
Klasse! Bei fehlenden Pflichtfeldern würde man ja eine Fehlermeldung erwarten; beim Heartbeat lässt sich aber sicher nachvollziehen, dass das dann als Verbindungsabbruch gewertet wird... |
Vielen Dank Andi, can't wait to see it finished! |
@elli.eco: könnten wir bitte eine grobe Abschätzung bekommen wie lange eine Korrektur des Zertifikats etwa dauern sollte bzw. wann das nächste Release geplant ist? |
Eventuell. Ist noch nichts sicher. Es gibt von Elli keine öffentlichen Release Planungen. |
Es ist leider weiterhin unklar wann das Zertifikat gefixt wird. Wäre es evtl. denkbar dass man bei den automatisierten Builds oder im Makefile einen patch der Z.b. mit
Die Optionen stellen sicher dass der Patch nur durchgeführt wird, wenn er noch nicht vorhanden ist. Es ist aber nicht 100% sichergestellt dass der Patch auch nicht zu Compiler Fehlern führt, falls sich die Datei geändert hat. --- asn1.go 2022-09-15 13:21:17.000000000 +0200
+++ asn1_new.go 2022-09-15 13:22:12.000000000 +0200
@@ -255,7 +255,7 @@
switch bytes[0] {
case 0:
*out = false
- case 0xff:
+ case 1, 0xff:
*out = true
default:
return false Auf dem Mac liegt die Datei in |
Das wäre:
ich wage aber zu bezweifeln, ob uns die CI da ran lassen würde, |
Ich glaube das geht:
|
@andig was wäre dein präferierter Ort wo das patchen gemacht werden sollte/könnte ? |
Makefile? Dann könnte man das sowohl im Dockerfile als auch in release.yaml aufrufen. |
Im Makefile wird ja image:
gokr-packer -overwrite=$(IMAGE_FILE) -target_storage_bytes=1258299392 $(IMAGE_OPTIONS)
loop=$$(sudo losetup --find --show -P $(IMAGE_FILE)); sudo mkfs.ext4 $${loop}p4
gzip -f $(IMAGE_FILE) Ich mach das mal in den PR im evcc repo rein |
Das Repository hier wird archiviert, da die EEBUS Implementierung ersetzt wurde. Elli ist meines Wissens an dem Zertifikatsproblem weiter dran und es soll ein Bugfix kommen. Wann ist bisher leider unbekannt. Der momentane Workaround funktioniert und hoffentlich kann er baldigst gestrichen werden. Falls es weiteren Gesprächsbedarf zu dem Thema gibt, macht bitte eine Diskussion bei evcc auf: https://github.com/evcc-io/evcc/discussions |
Today (2022-05-31) Elli distributed a new firmware of Elli Wallbox (ID.charger and other Volkwagen models).
This offers eebus interaction. However evcc-io/eebus does neither recognize the mDNS coming from the wallbox nor the wallbox lists the EVCC for a HEMS. Looks like the mDNS is also not recognized correctly by the box.
If needed I can provide a wireshark trace for the mDNS (both sources).
There are notices around that SMA can deal with the Elli for EEbus control, also the SMA looks to have some issues showing the Elli, but this is just early information.
I'm trying to get the EEbus SHIP specifcation to verify the mDNS records.
In EVCC log level trace there is not any indication of an mDNS entry being received (in [eebus] and other records)
The text was updated successfully, but these errors were encountered: