evcc-io / evcc

Sonne tanken ☀️🚘
https://evcc.io
MIT License
3.02k stars 555 forks source link

Vehicle Soc: timeout - Nissan Ariya #8541

Closed Sundixx closed 1 year ago

Sundixx commented 1 year ago

Describe the bug

I successfully ran a Nissan Leaf with EVCC until last week. Now the leasing contract has expired and I have switched to the new Nissan Ariya model. Unfortunately, there was no information in advance about evcc's support for the Ariya. (As well as the first models are being delivered).

I created the vehicle in the NissanConnect service app as I did before with the Leaf. In config.yaml, I adjusted the capacity and VIN accordingly. First I had a typo in the password and got an authentication failure. I have fixed this. But now I get vehicle soc: timeout.

I guess that the query of the SOC is different for the ARIYA than for the LEAF.

I would be happy if someone would take the some time to look at this.

Steffen

Steps to reproduce

Connected Nissan Ariya with template: nissan gives no Soc.

Configuration details

---  # evcc config
network:
  schema: http
  host: evcc.local  # .local suffix announces the hostname on MDNS
  port: 7070

log: info
levels:
  cache: error

  # unique installation id

plant: +++

interval: 10s  # control cycle interval

meters:
  - type: template
    template: sma-home-manager
    usage: grid
    host: 192.168.1.118  # LAN-IP HomeManager 2.0
    name: grid1

  - type: template
    template: sma-inverter
    usage: pv
    host: 192.168.1.78  # LAN-IP SunnyBoy 3.0
    password: +++
    name: pv2

  - type: template
    template: sma-inverter
    usage: pv
    host: 192.168.1.79  # LAN-IP SunnyBoy 2.0
    password: +++
    name: pv3

  - type: template
    template: sma-inverter
    usage: battery
    host: 192.168.1.104
    port: 502  # Port Optional
    password: +++
    name: bat1

chargers:
  - type: template
    template: go-e-gemini
    host: 192.168.1.98
    name: wallbox5

vehicles:
  - type: template
    template: nissan
    title: Ariya
    user: s++++i@mailbox.org
    password: +++
    vin: +++
    capacity: 63
    phases: 1
    cache: 15m
    mode: pv
    minSoC: 15
    targetSoC: 90
    minCurrent: 6
    maxCurrent: 32
    name: ev4
    identifiers:
      - Leaf

loadpoints:
  - title: Garage
    vehicle: ev4
    charger: wallbox5
    mode: pv
    phases: 3
    mincurrent: 6
    maxcurrent: 24
    resetOnDisconnect: false
    enable:
      threshold: -100  # Wenn der min.Ladeleistung = PV-Ü. - Wert
      delay: 1m
    disable:
      threshold: 400  # maximum import power (W)
      delay: 8m

site:
  title: Home
  meters:
    grid: grid1
    pvs:
      - pv2
      - pv3
    battery:
      - bat1
  bufferSoc: 90  # Hausbatterie wird oberhalb Soc 90% als Puffer genutzt
  prioritySoc: 50  # Hausbatt bekommt bis Soc 50% Priorität beim Laden
  residualPower: 180

sponsortoken: +++
telemetry: true

Log details

Jun 19 12:56:45 TV-SERVER systemd[1]: Started evcc.
Jun 19 12:56:46 TV-SERVER evcc[363875]: [main  ] INFO 2023/06/19 12:56:46 evcc 0.118.1 (780df682)
Jun 19 12:56:46 TV-SERVER evcc[363875]: [main  ] INFO 2023/06/19 12:56:46 using config file: /etc/evcc.yaml
Jun 19 12:56:46 TV-SERVER evcc[363875]: [main  ] INFO 2023/06/19 12:56:46 starting ui and api at :7070
Jun 19 12:56:46 TV-SERVER evcc[363875]: [db    ] INFO 2023/06/19 12:56:46 using sqlite database: /var/lib/evcc/evcc.db
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] WARN 2023/06/19 12:56:51 locking phase config to 3p for switchable charger
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] WARN 2023/06/19 12:56:51 deprecated: use 'pv' instead of 'pvs'
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] WARN 2023/06/19 12:56:51 bufferStartSoc must be larger than bufferSoc
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51 site config:
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51   meters:      grid ✓ pv ✓ battery ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51     grid:      power ✓ energy ✓ currents ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51     pv 1:      power ✓ energy ✓ currents ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51     pv 2:      power ✓ energy ✓ currents ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51     battery 1: power ✓ energy ✓ currents ✓ soc ✓ capacity ✗
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51   vehicles:
Jun 19 12:56:51 TV-SERVER evcc[363875]: [site  ] INFO 2023/06/19 12:56:51     vehicle 1: range ✓ finish ✓ status ✓ climate ✗ wakeup ✗
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51 loadpoint 1:
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51   mode:        pv
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51   charger:     power ✓ energy ✓ currents ✓ phases ✓ wakeup ✗
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51   meters:      charge ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51     charge:    power ✓ energy ✓ currents ✓
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51 vehicle updated: unknown -> Ariya
Jun 19 12:56:51 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:56:51 car connected
Jun 19 12:57:01 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:57:01 start charging ->
Jun 19 12:57:31 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 12:57:31 stop charging <-
Jun 19 12:59:02 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 12:59:02 vehicle soc: timeout
Jun 19 13:04:01 TV-SERVER evcc[363875]: [lp-1  ] INFO 2023/06/19 13:04:01 start charging ->
Jun 19 13:06:12 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:06:12 vehicle soc: timeout
Jun 19 13:06:21 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:06:21 vehicle soc: timeout
Jun 19 13:08:42 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:08:42 vehicle soc: timeout
Jun 19 13:08:51 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:08:51 vehicle soc: timeout
Jun 19 13:09:01 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:09:01 vehicle soc: timeout
Jun 19 13:11:21 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:11:21 vehicle soc: timeout
Jun 19 13:11:31 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:11:31 vehicle soc: timeout
Jun 19 13:11:41 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:11:41 vehicle soc: timeout
Jun 19 13:11:51 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:11:51 vehicle soc: timeout
Jun 19 13:12:01 TV-SERVER evcc[363875]: [lp-1  ] ERROR 2023/06/19 13:12:01 vehicle soc: timeout

What type of operating system are you running?

Linux

Version

evcc version 0.118.1 (780df682)

andig commented 1 year ago

Please provide a trace log for Nissan. Closing until available.

Sundixx commented 1 year ago

Sorry but a few more words of explanation would be appreciated. What exactly do you need?

StefanSchoof commented 1 year ago

From the Issue Template you filled out:

NOTE Due to amount of issues raised we will close incomplete issues (unclear description what the issue actually is, missing log file, unsupported platform) without further comments.

How to create an log, you find under: https://docs.evcc.io/docs/guides/setup#wie-kann-ich-ein-logfile-zur-fehleranalyse-erstellen

If you need help, how to create a log, create a new https://github.com/evcc-io/evcc/discussions and the community will try to help you, so that the developer team gets all info it needs,

An-Wi commented 10 months ago

My new Nissan Ariya was delivered 2 weeks ago. Today I want to configure and test the very nice project 'evcc' and I got the same error like @Sundixx! ScreenShot_9087_

I understood the request to create a trace log and I did it by run command C:\evcc>evcc l trace vehicle. Important lines I will add here:

[main ] INFO 2023/10/05 19:13:26 evcc 0.120.3 [main ] INFO 2023/10/05 19:13:26 using config file: C:\evcc\evcc.yaml ... [nissan] TRACE 2023/10/05 19:13:28 GET https://alliance-platform-caradapter-prod.apps.eu2.kamereon.io/car-adapter/v1/cars/***/battery-status [nissan] TRACE 2023/10/05 19:13:28 {"id":"***","batteryLevel":36,"plugStatus":0,"chargeStatus":0} [nissan] TRACE 2023/10/05 19:13:28 POST https://alliance-platform-caradapter-prod.apps.eu2.kamereon.io/car-adapter/v1/cars/***/actions/refresh-battery-status [nissan] TRACE 2023/10/05 19:13:28 {"data":{"type":"RefreshBatteryStatus"}}

The current SOC of vehicle battery is 36%, which I can see in trace log under ,"batteryLevel":36,

I hope that only a small adjustment to the project is necessary to make the vehicle soc value available for the Nissan Ariya!

If the full trace log is needed, I will be happy to attach it...

andig commented 10 months ago

Please send vehicle credentials to info@evcc.io for testing.

An-Wi commented 10 months ago

You mean my login account details of NissanConnectService ("user" and "password" as set in the yaml file)?

An-Wi commented 10 months ago

@andig Schade, dass ich noch keine Rückmeldung erhalten habe... Leider ist mir "vehicle credentials" nicht geläufig und GoogleTranslate übersetzt es mit "Fahrzeugscheine" 🤷‍♂️

Würde sehr gern auch mithelfen und anbieten, eine angepasste Vorab-Beta bei mir zu testen oder aktiv den Code bzw. das Template anzupassen. GET/POST-requests sind mir nicht neu (sehe für mich in den TRACE-Logs auch nicht falsch aus) und die Auswertung der responses ist mir aus meiner täglichen Arbeitswelt absolute nicht unbekannt...

Ein kurzer Blick in den SourceCode verwirrt mich etwas. Scheinbar liefert response schon das richtige Property "batteryLevel", was auch erwartet wird. Da ich nicht mehr sicher bin, ob das Auto vor 2 Tagen angesteckt war und geladen hat, habe ich das Trace-Log soeben (Auto steckt an und lädt) nochmal laufen lassen und erhalte nun folgende Antwort, die mir zumindest logisch erscheint: {"id":"***","batteryLevel":44,"plugStatus":1,"chargeStatus":1}

Hilft das irgendwie weiter?

andig commented 10 months ago

You mean my login account details of NissanConnectService ("user" and "password" as set in the yaml file)?

Genau- ich brauche die Zugangsdaten damit ich testen/anpassen kann.

An-Wi commented 10 months ago

Mail ist raus... Teste auch gern die Anpassung vor einem neuen Release bei mir nochmal.

Sundixx commented 10 months ago

@andig @An-Wi Funktioniert wieder einwandfrei! Vielen Dank für Eure Mühe.

Wieder ein Modell mehr supportet ;)

Viele Grüße Steffen

An-Wi commented 10 months ago

@andig Vielen Dank auch von mir nochmal. Im neuen Release (0.121.0) funktioniert nun das Auslesen des SOC für den Nissan Ariya. Respekt für die schnelle Anpassung! Ein absolut geniales Projekt!

An-Wi commented 10 months ago

Ich muss leider nochmal hier eine kleine Ergänzung vornehmen.

Seit dem Update 0.121.0 erhalte ich nun folgende Meldung "vehicle range: not available": photo_2023-10-15_16-09-09

Die Konsolen-Abfrage zu vehicle bestätigt, dass diese Info nicht vorliegt (für SOC funktioniert sie nun prima): C:\evcc>evcc vehicle [main ] INFO 2023/10/15 15:45:14 evcc 0.121.0 [main ] INFO 2023/10/15 15:45:14 using config file: C:\evcc\evcc.yaml Soc: 57% Capacity: 87.0kWh Charge status: B Range: not available Finish time: not available Identifiers: [04***********3] Features: []

Da ich aus dem Trace-Log weiß, dass die Info von der Nissan API für den Ariya nicht geliefert wird, stellt sich mir die Frage, wofür wird "Range" und "Finish time" überhaupt benötigt und kann man diese Fehlermeldung irgendwie verhindern bzw. abschalten?

andig commented 10 months ago

Wir könnten die Meldung nur generell für alle Fahrzeuge unterdrücken oder- vielleicht besser- einmalig beim Start schauen, ob/welche Daten das Fahrzeug liefert. Das würde allerdings den Start von evcc langsamer machen. Oder- dritte Option- das Fahrzeug müsste extra any Ariya konfiguriert werden womit dann einher ginge, dass bestimmte Informationen nicht verfügbar sind. Mangels Zugangsdaten kann ich es aber auch nicht mehr nachvollziehen.

An-Wi commented 10 months ago

Zu Option 1) Meldung generell unterdrücken halte ich für keine gute Idee, wenn die Infos für evcc intern wichtig sind (wie bei SOC). Wenn die Infos nur für externe Abfragen bspw. REST/MQTT API (wobei ich dort keine Abfrage für "range" gefunden habe) oder command line "evcc vehicle" dient, dann könnte man drüber nachdenken. In den externen Abfrage würde dort ggf. ein "not available" in meinen Augen ausreichen.

Zu Option 2) Langsamer Start ist keine Option!

Zu Option 3) Verstehe ich nicht so ganz. Geht das in Richtung externe Abfragen, wenn "bestimmte Informationen nicht verfügbar sind"?

Option 4) Beim 1. notwendigen API-Request (Fahrzeug angesteckt/lädt bzw. bei loadpoints soc: poll: mode: always) normal wie bisher inklusiver Anzeige der Fehlermeldung abarbeiten. Dabei auswerten, wenn "range" und/oder "finsih time" nicht verfügbar sind, dann Info aufheben, dass diese "zweitrangigen" Infos nicht verfügbar sind und ab 2. API-Request dann keine Fehlermeldung mehr bringen. Das Wegdrücken der dadurch nur noch einmalig auftretenden Fehlermeldung wäre für mich eine gute Lösung.

Option 5) Würde mich mit der Nissan-Hotline in Verbindung setzen und nachfragen, warum diese beiden Infos derzeit für euren API-Account nicht verfügbar sind. Über die NissanConnectApp werden diese beiden Infos angezeigt. Kann mir nicht vorstellen, dass die App einen anderen Weg für ihre Datenabfragen geht! Sorry an dieser Stelle für das Ändern meines Zugangspassworts nach Lösen des SOC-Problems (password paranoia) 🙈

An-Wi commented 6 months ago

@andig Stecke mit meinem Nachbau zum Experimentieren leider immer noch bei der 2. Authorize-Stufe fest und bekomme permanent ein "Bad Request" 🤬 (siehe meine letzte Mail an dich)...

Aber ich habe gestern Abend noch eine Quelle gefunden, die vor 3 Wochen zuletzt aktualsiert wurde. Vielleicht hilft sie dir weiter: https://github.com/dan-r/HomeAssistant-NissanConnect/blob/main/custom_components/nissan_connect/kamereon.py#L1155 In der markierten Codezeile 1155 wird ein POST auf v1/cars/***/actions/refresh-battery-status ausgeführt. Könnte das wichtig und hilfreich sein? Wäre es möglich, diesen POST einfach mal zusätzlich vor dem GET von v1/cars/***/battery-status einzubauen, dass ich es mir dann im trace-log mal anschauen kann?

An-Wi commented 4 months ago

Update zum Thema "Nissan Ariya: vehicle range: not available"

Bin über eine Quelle (https://community.home-assistant.io/t/integration-for-nissanconnect-services/507695/46) gestolpert, die meine Vermutung zur Anpassung von v1 nach v2 bei dem request für .../battery-status untermauert: ScreenShot_9432_

In Eintrag 46/145 hat kefjevl nochmal darauf hingewiesen, als jmd. für seinen Nissan Leaf die Anpassung wieder in "v1" ändern sollte, damit die Reichweite per API auslesbar ist: image

Das würde aber bedeuten, dass der Nissan Ariya ein eigenes Template benötigt? Oder kann alternativ die v2-API abgefragt werden, wenn der erste Request über v1 keine Range bringt?

@andig Soll ich mein Passwort für NissanConnect-Services wieder auf die dir bekannten Zugangsdaten (von Oktober 2023) umstellen, damit du es testen kannst?

andig commented 4 months ago

@An-Wi gerne. Der Fix bringt dann nur Range oder ist noch mehr zu reparieren?

An-Wi commented 4 months ago

@andig Passwort habe ich soeben geändert (siehe meine Mail vom 08.10.2023).

Der Fix bringt die "Range" und sollte eigentlich auch "Finish time" liefern. BatteryLevel (Capacity), plugStatus sowie chargeStatus hat über v1 schon sehr stabil funktioniert - aber auch hier sollte die v2-API diese Werte mitliefern.

Ist neben den 5 genannten Werten für evcc noch was von Bedeutung?

An-Wi commented 3 months ago

@andig Danke danke danke 😅

@Sundixx Das neue Template wird dir gefallen 😉

Sundixx commented 3 months ago

Das neue Template wird dir gefallen

@An-Wi Oh schön, ich schau es mir an. Danke.