Carnet - das Volkswagen-Modul

Begonnen von bgewehr, 19 Oktober 2017, 08:15:39

Vorheriges Thema - Nächstes Thema

andreas_n

#15
@samsmooth

Ich bin deiner Idee mal nachgegangen und ja ich kann meine Daten (eGolf) abrufen.
Nun schreibst du die Daten in FHEM Readings.....
Ja und da hätte ich eine Bitte ... könntest du evt. den wahrscheinlich vor Dir entwickelten Code mir zur Verfügung stellen.
(Ich habe das Carnet auf einer kleinen Linux Maschine erstellt )

*** Update nicht mehr notwendig ***
Ich habe mich ans gute MQTT erinnert... damit war es recht einfach.


Gruß Andreas

Kamik

Hallo zusammen,

ich würde das Thema gerne auch für meine Zwecke aufgerufen. SMA Sunny Home Manager und prognostiziertes Laden meines e Golf. Hierfür benötige ich den SoC meines Akkus.
Es gibt hier im Thread mehrere github links für python oder andere Anbindungen.
Kann mir jemand von euch deine Installation näher erläutern?

Wir muss ich dir Sachen auf meinem Linux Rasperry inszenierten bzw. Konfigurieren und wie schaffe ich die Schnittstelle zu fhem?
Ich habe unter anderem einen mqtt broker laufen.

Danke für eure Unterstützung
Gruß Kamik

Magic01

Zitat von: andreas_n am 29 August 2020, 14:07:47

*** Update nicht mehr notwendig ***
Ich habe mich ans gute MQTT erinnert... damit war es recht einfach.


Gruß Andreas
Hi Andreas,
verstehe ich das richtig, du hast sozusagen einen Carnet bzw. We-connet zu Mqtt gebaut?
Wenn ja, gibt es das irgendwo online?
Grüße
Markus

andreas_n

#18
Oh verdammt, die Anfrage habe ich glatt übersehen.

Aber ja, ich habe einen eGolf gekauft, der natürlich per Solar geladen werden muss.
Auch möchte ich den Ladezustand SOC wissen, da ich eigentlich nicht über 80% aufladen möchte (es sei denn mit Solar)
Die Daten werden nun über MQTT an FHEM gesendet. Dort wird dann entsprechend entschieden.
Es läuft seit Monaten und das sehr stabil.

Auf FHEM Seite braucht es dann nur noch ein MQTT_DEVICE.

attr eGolf subscribeReading_battery_level /egolf/battery_level
attr eGolf subscribeReading_charge_max_ampere /egolf/charge_max_ampere
attr eGolf subscribeReading_charging /egolf/charging
attr eGolf subscribeReading_charging_time_left /egolf/charging_time_left
attr eGolf subscribeReading_climatisation_target_temperature /egolf/climatisation_target_temperature
attr eGolf subscribeReading_climatisation_without_external_power /egolf/climatisation_without_external_power
attr eGolf subscribeReading_combined_range /egolf/combined_range
attr eGolf subscribeReading_distance /egolf/distance
attr eGolf subscribeReading_door_locked /egolf/door_locked
attr eGolf subscribeReading_electric_climatisation /egolf/electric_climatisation
attr eGolf subscribeReading_electric_range /egolf/electric_range
attr eGolf subscribeReading_external_power /egolf/external_power
attr eGolf subscribeReading_last_connected /egolf/last_connected
attr eGolf subscribeReading_parking_light /egolf/parking_light
attr eGolf subscribeReading_position /egolf/position
attr eGolf subscribeReading_request_in_progress /egolf/request_in_progress
attr eGolf subscribeReading_service_inspection /egolf/service_inspection
attr eGolf subscribeReading_trip_last_average_electric_consumption /egolf/trip_last_average_electric_consumption
attr eGolf subscribeReading_trip_last_average_speed /egolf/trip_last_average_speed
attr eGolf subscribeReading_trip_last_duration /egolf/trip_last_duration
attr eGolf subscribeReading_trip_last_length /egolf/trip_last_length
attr eGolf subscribeReading_trunk_locked /egolf/trunk_locked
attr eGolf subscribeReading_window_heater /egolf/window_heater
attr eGolf subscribeReading_windows_closed /egolf/windows_closed
attr eGolf userReadings Uptime { return ReadingsTimestamp($NAME,"transmission-state",0);;;;}


Das Modul GetVWData.py holt die Daten ab und sendet diese an MQTT. (Läuft bei mir auf einer VM  /  FHEM auf einer Weiteren)

cat GetVWData.py #!/usr/bin/env python3
import volkswagencarnet
import pprint
import asyncio
import logging
import paho.mqtt.client as mqtt #import the client1
broker_address="192.168.1.10"

from aiohttp import ClientSession

logging.basicConfig(level=logging.DEBUG)

VW_USERNAME='email@adresse.de'
VW_PASSWORD='mein VW Passwort'


COMPONENTS = {
    'sensor': 'sensor',
    'binary_sensor': 'binary_sensor',
    'lock': 'lock',
    'device_tracker': 'device_tracker',
    'switch': 'switch',
    'climate': 'climate'
}

RESOURCES = [
    'position',
    'distance',
    'electric_climatisation',
    'combustion_climatisation',
    'window_heater',
    'combustion_engine_heating',
    'charging',
    'adblue_level',
    'battery_level',
    'fuel_level',
    'service_inspection',
    'oil_inspection',
    'last_connected',
    'charging_time_left',
    'electric_range',
    'combustion_range',
    'combined_range',
    'charge_max_ampere',
    'climatisation_target_temperature',
    'external_power',
    'parking_light',
    'climatisation_without_external_power',
    'door_locked',
    'trunk_locked',
    'request_in_progress',
    'windows_closed',
    'sunroof_closed',
    'trip_last_average_speed',
    'trip_last_average_electric_consumption',
    'trip_last_average_fuel_consumption',
    'trip_last_duration',
    'trip_last_length'
]

def is_enabled(attr):
    """Return true if the user has enabled the resource."""
    return attr in RESOURCES

async def main():
    """Main method."""
    client = mqtt.Client("P1") #create new instanc
    client.connect(broker_address) #connect to broker
    async with ClientSession(headers={'Connection': 'keep-alive'}) as session:
        connection = volkswagencarnet.Connection(session, VW_USERNAME, VW_PASSWORD)
        if await connection._login():
            if await connection.update():
                # Print overall state
                pprint.pprint(connection._state)

                # Print vehicles
                for vehicle in connection.vehicles:
                    pprint.pprint(vehicle)

                # get all instruments
                instruments = set()
                for vehicle in connection.vehicles:
                    dashboard = vehicle.dashboard(mutable=True)

                    for instrument in (
                            instrument
                            for instrument in dashboard.instruments
                            if instrument.component in COMPONENTS
                            and is_enabled(instrument.slug_attr)):

                        instruments.add(instrument)

                # Output all supported instruments
                for instrument in instruments:
                    print(f'name: {instrument.full_name}')
                    print(f'str_state: {instrument.str_state}')
                    print(f'state: {instrument.state}')
                    print(f'supported: {instrument.is_supported}')
                    print(f'attr: {instrument.attr}')
                    print(f'attributes: {instrument.attributes}')
                    TROPIC = "/egolf/" + format(instrument.attr)
                    PAYLOD = format(instrument.str_state)
                    client.publish(TROPIC,PAYLOD) #publish


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    # loop.run(main())
    loop.run_until_complete(main())


Das ganze rufe ich dann über einen Crontab auf.
"*/30 * * * *     python3 /home/vw/carnet/GetVWData.py"

Hoffe es hilft. Die Installation ist weiter oben beschrieben - hier geht es ja im wesentlichen über die MQTT Anbindung.

haneub

#19
ich bräuchte da noch etwas Hilfe um das ganze zum Laufen zu bringen...
Bei mir läuft fhem auf nem Raspi und ich will einen Seat Mii abfragen um damit eine go-e box zur PV-Ladung zu steuern.
Wo finde ich ein wenig mehr schritt für schritt / zwischendrin testen?
Gemacht habe ich:

pip3 install volkswagencarnet
pip3 install paho-mqtt
GetVWData.py erstellt und ip des fhem als broker eingetragen sowie user und password
Wenn ichs laufen lasse erhalte ich
$ python3 GetVWData.py
DEBUG:asyncio:Using selector: EpollSelector
DEBUG:volkswagencarnet:Using service <https://www.portal.volkswagen-we.com/>
Und nun?

Funktioniert das auch bei den anderen? Seat ?
Danke, Harald

Kamik

#20
Hallo zusammen,

ich habe seit dem 26.03. das Problem, dass ich keine Daten mehr abrufen kann. Der Dienst ist über die Android App noch i.O.
Ich bekommen folgende Fehlermeldung:


/usr/lib/python3/dist-packages/urllib3/connectionpool.py:732: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html (This warning will only appear once by default.)
  InsecureRequestWarning)


Im Original Pythonscript, das du aufrufst habe ich ich den Debugger laufen lassen und bin bis zu Step 6 gekommen.
Fehlermeldung hier:


Failed to Login. Failed to get portlet code


Habt ihr die Probleme auch? Hat sich vielleicht etwas auf seiten von VW geändert?

Gruß



EDIT:
Die Lösung scheint die Aktualisierung der AGB's zu sein. Wenn man sich über den Webbrowser auf dem WE-Volkswagenportal anmeldet erscheint eine Meldung, die man bestätigen muss. Danach erfolgte wieder der Datenabruf.

torsten12

Hallo,

ich habe eine diesbezügliche eMail von Volkswagen bekommen:


Hallo ....,

wir starten in den Frühling mit ein paar Neuigkeiten: Das We Connect Portal verabschiedet sich am 27.04.2021. Ihre mobilen Online-Dienste können Sie natürlich weiterhin nutzen.1,2

   
     
Aus dem Diensteportfolio Car-Net/We Connect finden Sie folgende Funktionen künftig auf der neuen Website myVolkswagen:
• Fahrzeug hinzufügen
• Fahrzeug verwalten
• Nachrichten (RSS-Feeds)
• Fahrdaten
• Fahrzeugzustandsbericht
• Mobiler Schlüssel
• Service-Terminplanung
• Präferierter Service Partner    
     Zu myVolkswagen →    

     
In der We Connect App stehen Ihnen komfortabel per Smartphone folgende Funktionen zur Verfügung:
• Fahrzeug hinzufügen
• Fahrzeuge verwalten
• Volkswagen Ident-Verfahren
• Verwaltung von Mitnutzern
• Fahrdaten
• Fahrzeugzustandsbericht
• Türen & Licht
• Parkposition
• Gebietsbenachrichtigung
• Geschwindigkeitsbenachrichtigung
• Hupen & Blinken
• Online-Diebstahlwarnanlage
• Online-Standheizung
• Online-Zielimport
• Online-Routenimport
• Verriegeln & Entriegeln
• Abfahrtszeiten
• Klimatisierung
• Laden
• Mobiler Schlüssel
• Service-Terminplanung
• Präferierter Service Partner




Kamik

Hi,

ich habe nun wieder seit einigen Tagen wieder keinen Zugriff über FHEM. Muss hier noch etwas geändert werden? Wie siehts bei den anderen aus? Aktuell komme ich nicht wirklich weiter.