Carnet - Homebridge: Wie kriegt man die KFZ-Infos ins Homekit?

Begonnen von bgewehr, 21 Januar 2018, 13:05:24

Vorheriges Thema - Nächstes Thema

Rheininsel

Zitat von: bicmac am 03 November 2020, 21:40:41
hi,
ich suche noch immer für eine Möglichkeit meinen Skoda so anzubinden.
Leider klappt das mit dem Weg so nicht.
Hat das schonmal jemand zum laufen gebracht bzw kennt Ihr einen Weg askoda Connect mit FHEM zu koppeln?
Eine Interessante Frage! Bisher habe ich dazu auch noch nichts gefunden. Hat jemand ohne die (suboptimale) App irgend einen Weg gefunden? Ggf sogar mir Stecker im Auto?

Grüße
Gregor

bicmac

Ich habe mir parallel ein IOBroker installiert und mit FHEM gekoppelt (nutze ich eigentlich für die Visualisierung von FHEM). Im IOBroker gibt es einen VW Adapter der auch Skoda Connect unterstützt.
Zwar ist die Rückmeldung von IOBroker an GHEM nicht ganz so toll, aber es geht. getestet habe ich aber noch nicht das Schalten der Standheizung.

Ein richtiges eigenes FHEM Modul wäre trotzdem besser. leider kann ich das selber nicht realisieren.

msome

Hallo, ich hab mir heute den Connector auch gezogen und im Prinzip funktioniert's.
Ich hab die Nutzerdaten im my-car.py durch die festen Werte ersetzt, um den Aufruf vom FHEM kürzer zu machen.

Aber... ich hab immer eine Fehlermeldung.


Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 159, in <module>
    mqtt(session, url)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 51, in mqtt
    MQTT.mqttc.publish(MQTT_TOPIC + '/car-details', CarNetPost(s,url_base, '/-/mainnavigation/load-car-details/' + getVin(s, url_base, 0)), qos=0, retain=True)

NameError: name 'getVin' is not defined

Ich habe dann gesehen, dass in der we_connect_client.py eine Funktion enthalten ist, die aber getVIN (in Großbuchstaben) ist.
Dachte mir die Signatur der Funktion passt, also einfach mal VIN groß geschrieben.

Leider ändert sich dann nur die Fehlermeldung - und auch in der Fehlermeldung selbst scheint dann noch ein Codierfehler zu sein:

Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/we_connect_client.py", line 442, in getVIN
    'vin': estat.get('fullyLoadedVehiclesResponse').get('vehiclesNotFullyLoaded')[index].get('vin')
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 159, in <module>
    mqtt(session, url)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 51, in mqtt
    MQTT.mqttc.publish(MQTT_TOPIC + '/car-details', CarNetPost(s,url_base, '/-/mainnavigation/load-car-details/' + getVIN(s, url_base, 0)), qos=0, retain=True)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/we_connect_client.py", line 447, in getVIN
    'errorMsg': 'Failed to get VIN for index ' + index
TypeError: can only concatenate str (not "int") to str


Da ich mir nicht weiterhelfen konnte, hab ich aktuell mal die Abkürzung genommen und im my-car.py Zeile 51
das '/-/mainnavigation/load-car-details/' + getVin(s, url_base, 0))
durch '/-/mainnavigation/load-car-details/WVWdefghijk123456' ersetzt. Kein Funktionsaufruf mehr, kein Fehler mehr.  ;D ::)

Sieht das Problem mit getVin auch jemand anders ?

Danke, Matthias
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

FhemPiUser

Hallo,

ich würde gerne die Ladevorgänge mit der ID Charger Pro Wallbox abrufen. Das geht nicht mit dem python client, oder?

dcboy

Zitat von: msome am 15 Dezember 2020, 19:45:03
Hallo, ich hab mir heute den Connector auch gezogen und im Prinzip funktioniert's.
Ich hab die Nutzerdaten im my-car.py durch die festen Werte ersetzt, um den Aufruf vom FHEM kürzer zu machen.

Aber... ich hab immer eine Fehlermeldung.


Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 159, in <module>
    mqtt(session, url)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 51, in mqtt
    MQTT.mqttc.publish(MQTT_TOPIC + '/car-details', CarNetPost(s,url_base, '/-/mainnavigation/load-car-details/' + getVin(s, url_base, 0)), qos=0, retain=True)

NameError: name 'getVin' is not defined

Ich habe dann gesehen, dass in der we_connect_client.py eine Funktion enthalten ist, die aber getVIN (in Großbuchstaben) ist.
Dachte mir die Signatur der Funktion passt, also einfach mal VIN groß geschrieben.

Leider ändert sich dann nur die Fehlermeldung - und auch in der Fehlermeldung selbst scheint dann noch ein Codierfehler zu sein:

Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/we_connect_client.py", line 442, in getVIN
    'vin': estat.get('fullyLoadedVehiclesResponse').get('vehiclesNotFullyLoaded')[index].get('vin')
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 159, in <module>
    mqtt(session, url)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/my-car.py", line 51, in mqtt
    MQTT.mqttc.publish(MQTT_TOPIC + '/car-details', CarNetPost(s,url_base, '/-/mainnavigation/load-car-details/' + getVIN(s, url_base, 0)), qos=0, retain=True)
  File "/opt/fhem/carnet/volkswagen-carnet-client-master/we_connect_client.py", line 447, in getVIN
    'errorMsg': 'Failed to get VIN for index ' + index
TypeError: can only concatenate str (not "int") to str


Da ich mir nicht weiterhelfen konnte, hab ich aktuell mal die Abkürzung genommen und im my-car.py Zeile 51
das '/-/mainnavigation/load-car-details/' + getVin(s, url_base, 0))
durch '/-/mainnavigation/load-car-details/WVWdefghijk123456' ersetzt. Kein Funktionsaufruf mehr, kein Fehler mehr.  ;D ::)

Sieht das Problem mit getVin auch jemand anders ?

Danke, Matthias

Ja, diesen Fehler habe ich auch. Ob @bgewehr sich da vielleicht mal anschauen könnte? Ich selbst bin leider nur einfacher Copy&Paste User...

ReneR1986

Hallo zusammen,

ich habe gerade eine Info bekommen, dass sich das WeConnect Portal zum 27.4.2021 verabschiedet und durch myVolkswagen ersetzt wird.
https://www.volkswagen.de/de/besitzer-und-nutzer/myvolkswagen.html

Vielleicht/hoffentlich lässt sich die neue Plattform leicht adaptieren...
Das bisherige phython Script hat bei mir bisher sehr gut funktioniert.

msome

Hallo,
scheinbar ist es jetzt wirklich passiert.

Bei mir zeigt das Skript nur noch "Failed to login Failed to get CSRF from landing page." an.
Pünktlich zur Umstellung wie angekündigt.

Schade.

Ich hoffe mal dass es ein Update geben wird, das Cookie csrf, hmac, ... was auch immer Zeug sagt mir gar nix.

FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

ReneR1986


kurt6908

Hallo,

auch ich versuche meinen neuen VW Plug-in in FHEM zu bekommen und bin daher auf dieses Forum gestoßen. Während der Implementierung hat VW das Portal wohl abgeschaltet, so dass man nur noch per App auf die Daten und die Schaltmöglichkeiten kommt.

Im Netz habe ich dieses gefunden:

https://github.com/nightsha-de/npm-vwconnectapi

Ich habe an der Fundstelle aber noch nichts über Fehler gelesen, vielleicht weil dieses Projekt eine andere Zugriffsschicht nutzt???

Vielleicht wäre es auch möglich, dieses NPM, da es ja JS-lastig ist, auch in FHEM zu integrieren??? 
3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Tasmota/MQTT, Rademacher DuoFern, EPEver HiPower/ModBus, go-eCharger

msome

#54
Hi kurt6908,

ich habe das auch gefunden und gestern abend mehrere Stunden damit zugebracht genau dieses npm-vwconnectapi zum laufen zu bringen.
Hat eine Weile gedauert bis ich rausgefunden hatte dass es nodejs in Version 12 braucht.
Leider aber auch mit begrenztem Erfolg, irgendwie hängt es für ewig in einer Abfrageschleife und wartet auf irgendwas (mit dem Demo-Code als Aufruf).

Da dieses npm-vwconnectapi laut der Git-Seite auf einer ioBroker aufsetzt, hab ich dann sogar den ioBroker und den Connector mal
installiert - und - voila, der Zugang funktioniert, die Daten meines VW-Up werden direkt im ioBroker angezeigt.

Daher sehe ich nach wie vor das npm-vwconnectapi als erfolgversprechenden Weg an.
Der Login an sich hat ja auch im npm-vwconnectapi funktioniert, aber danach hängt es.

Wie man allerdings dann die Daten ins FHEM bringt - darüber hab ich mir noch keine Gedanken gemacht. Notfalls dachte ich mir, bastle ich wieder einen MQTT rein, so wie im vorherigen Skript.

P.S. Ich bin mir nicht sicher ob VW das komplette Portal umgestellt hat, oder ob einfach nur der Login jetzt anders (und auf einem anderen Server) funktioniert ?
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

kurt6908

Hallo msome,

mein neuer Plug-in wird erst im Juli geliefert, aber dennoch bin ich schon am Anbinden, leider noch ohne eigene Echtdaten ;=)

Dennoch beschäftige ich mich, daher keine Ahnung ob's damit funktioniert:

https://metacpan.org/pod/JavaScript::SpiderMonkey

Idee dahinter: Über Perl einen Javascript-Routine aufrufen .....

Bin über die Seite

https://stackoverflow.com/questions/4767562/is-there-a-way-to-execute-javascript-in-perl

draufgestoßen. Hätte den Charme, dass "direkt" kommuniziert wird und keine weitere Schnittstelle benötigt wird.
3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Tasmota/MQTT, Rademacher DuoFern, EPEver HiPower/ModBus, go-eCharger

msome

Hi, ich hab meinen Versuch aufgegeben die Login-Prozedur von JS ins Python zu übertragen, das ist nicht meine Welt der Programmierung.

Also... "mit Kanonen auf Spatzen schießen". Als meine Lösung hab ich jetzt einfach eine ioBroker Instanz parallel zu FHEM installiert,
darauf den vw-connect Adapter und den fhem Adapter installiert - und es läuft. In weniger als 1 Stunde.

Keine Loginprobleme, alle Daten des Autos werden geladen und schon erfolgreich nach FHEM übertragen.
Lade- und Klimatisierungs-Kommandos funktionierten sofort aus ioBroker raus - wie ich die aus FHEM triggern kann, muss ich noch rausfinden.

Ich brauchte eine schnelle Lösung, denn es gab Kritik von der Regierung - da der Ladestand und die Restreichweite nicht mehr im Haus-Tablet angezeigt wurden. :o  :-*
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

msome

Hi zusammen, zufällig bin ich auf ein Python Projekt gestoßen wo der Login funktioniert.

Es gibt auch eine Anbindung über MQTT, wo auf de Projektseite sogar FHEM als Anwendung erwähnt ist (OK, nur mit einem Wort. Aber immerhin :-) ).

https://github.com/tillsteinbach/WeConnect-mqtt

Ich hab bisher zwar nur die Kommandozeilenversion zum laufen gebracht, denn über MQTT hab ich noch Probleme.

Es sieht aber schon mal gut aus, da ich mit der Kommandozeilenversion den Login überstehe, sowie auch Daten wie Reichweite & Akkustand abfragen kann.

Mit meinem Mosquitto über den FHEM läuft, scheint es noch nicht zu funktionieren.

Vielleicht hat ja jemand Lust, es parallel zu versuchen ?

bfn, Matthias
FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen

ReneR1986

Sieht bei mir auch soweit gut aus.
Über Docker läuft es bei mir und die Daten kommen über den Broker auch bei FHEM an.

Leider habe ich es noch nicht geschafft über das MQTT_DEVICE mit dem Attribut autoSubscribeReadings alle Daten auszulesen bzw. Readings zu erzeugen.
Es scheint, als ob autoSubscribeReadings nur single-level wildcards '+' unterstützt. Ist laut commandref auch so beschrieben.
Die Topicstruktur ist aber so aufgebaut, dass ich eher multi-level wildcards benötige '#'..

msome

Nachdem ich jetzt zwei Wochen über Skript & Commandline Interface die Werte ausgelesen habe, hab ich jetzt den Umstieg auf Docker+MQTT versucht.

Nachdem ich wie @ReneR1986 bei MQTT_DEVICE nicht weitergekommen bin, bin ich auf MQTT2_CLIENT umgestiegen.
Definiert, auf AutoCreate gestellt - und schon wurde ein Client für weConnect angelegt mit einer Reihe Readings.

Leider werden etliche Readings automatisch mehrfach auf den gleichen Namen gemappt (nur 1 openState statt 6, ...),
aber das lässt sich in der readingList leicht korrigieren indem man am Ende jeder Zeile den Ziel-Reading-Namen anpasst.

Werd morgen mal mit der Erstellung des detaillierten Mappings beginnen um alle MQTT Daten auch in separate Readings zu bekommen.


FHEM auf ODROID-C4 & FHEM auf Raspberry 3B+
IO: HMUARTLGW (wired), Velux KLF200, DuoFernStick, DeConz, HMUSB-2, JeeLink, ModBus, RS232, WiFi,
Geräte: so ziemlich alles was es an Geräten von HM gibt, PCA301, SDM630M, Hue Lampen & Steckdosen