evcc-io / evcc

Solar Charging ☀️🚘
https://evcc.io
MIT License
3.68k stars 688 forks source link

Nach Stromausfall lädt Auto mit volllast #8018

Closed horst789github closed 1 year ago

horst789github commented 1 year ago

Describe the bug

Ausgangssituation: 3x LoadPoints an dem 1 Tesla hängt (Lp1 "easeeRechts") der schon sein ziel soc von 85% erreicht hat und deswegen auch nicht lädt. PV Anlage speißt ein weil auch Hausakku voll ist.

Dann: Stromausfall: ich hatte gerade einen ungeplanten Stromausfall, meine Wechselrichter hat nach ~30 sekunden in den Inselbetrieb gewechselt. Soweit alles ok, es wurde weiterhin kein Auto geladen. Die NAS auf dem EVCC läuft, war jederzeit an (wegen USV). Nur die Wallbox hat für die Umschaltung jeweils kein Strom gehabt. Nach 5min war Strom wieder da, also hat der WechselRichter vom Inselbetrieb auf Netzbetrieb umgeschwenkt, was wieder einen kurzen Stromausfall von ~10 sekunden zur Folge hatte.

Danach habe ich eine große Last gesehen und mich gewundert was hier mit 11 kW lädt. Kurze prüfung von EVCC, war es LP1 der den Tesla lädt obwohl ja ziel SoC von 85% schon längst erreicht wurde. Auch die anzeige im EVCC hatte das erkannt (die daten aus Tesla API wurden korrekt angezeigt und übertragen).

Es sieht so aus als würde nach einem Stromausfall hier irgendwo das Signal herkommen, dass er "schnell" laden soll, obwohl der Modus weiterhin auf PV stand.

Steps to reproduce

nach Strom ausfall

Configuration details

network:
  # schema is the HTTP schema
  # setting to `https` does not enable https, it only changes the way URLs are generated
  schema: http
  # host is the hostname or IP address
  # if the host name contains a `.local` suffix, the name will be announced on MDNS
  # docker: MDNS announcements don't work. host must be set to the docker host's name.
  host: evcc.local
  # port is the listening port for UI and api
  # evcc will listen on all available interfaces
  port: 7070

interval: 10s # control cycle interval

# database configuration for persisting charge sessions and settings
# database:
#   type: sqlite
#   dsn: <path-to-db-file>

# sponsor token enables optional features (request at https://sponsor.evcc.io)
sponsortoken: xxxx

# telemetry enables aggregated statistics
#
# Telemetry allows collecting usage data (grid and green energy, charge power).
# Data is aggregated, no individual charging sessions are tracked. The collected,
# anonymous data can be retrieved using https://api.evcc.io.
#
# See https://github.com/evcc-io/evcc/pull/4343 or details.
#
# For time being, this is only available to sponsors, hence data is associated with
# the sponsor token's identity.
#
# telemetry: true

# log settings
log: info
levels:
  site: error
  lp-1: error
  lp-2: error
  lp-3: error
  cache: error
  db: error
# log settings beschreibung
#     fatal: Nur Nachrichten der Kategorie fatal werden angezeigt. Das sind Fehler, die die Systemausführung verhindern.
#    error: Nur Nachrichten der Kategorie error werden angezeigt. Das sind die wenigsten Nachrichten.
#    warn: Beinhaltet error, zusätzlich werden Nachrichten der Kategorie warn angezeigt.
#    info: Beinhaltet warn, zusätzlich werden Nachrichten der Kategorie info angezeigt.
#    debug: Beinhaltet info, zusätzlich werden Nachrichten der Kategorie debug angezeigt. Dies ist für die Fehleranalyse erforderlich.
#    trace: Beinhaltet debug, zusätzlich werden Nachrichten der Kategorie trace angezeigt. Dies ist die detaillierteste Kategorie und kann zu sehr großen Logdaten führen. In der Regel wird dies nicht benötigt!

# modbus proxy for allowing external programs to reuse the evcc modbus connection
# each entry will start a proxy instance at the given port speaking Modbus TCP and
# relaying to the given modbus downstream device (either TCP or RTU, RS485 or TCP)
modbusproxy:
  #  - port: 5200
  #    uri: solar-edge:502
  #    # rtu: true
  #    # readonly: true

# meter definitions
# name can be freely chosen and is used as reference when assigning meters to site and loadpoints
# for documentation see https://docs.evcc.io/docs/devices/meters
meters:
  - name: my_grid
    type: template
    template: e3dc
    usage: grid
    host: 192.168.0.220 # IP-Adresse oder Hostname
    port: 502 # Port (Optional) 
  - name: my_pv
    type: template
    template: e3dc
    usage: pv
    host: 192.168.0.220 # IP-Adresse oder Hostname
    port: 502 # Port (Optional) 
  - name: my_battery
    type: template
    template: e3dc
    usage: battery
    host: 192.168.0.220 # IP-Adresse oder Hostname
    port: 502 # Port (Optional) 
    capacity: 13

# charger definitions
# name can be freely chosen and is used as reference when assigning charger to vehicle
# for documentation see https://docs.evcc.io/docs/devices/chargers
chargers:
  - name: go-e-charger
    type: template
    template: go-e
    host: 192.168.0.157 # IP-Adresse oder Hostname 
  - name: easeeRechts
    type: template
    template: easee
    user: xxxx
    password: xxxx
    charger: EHD9PXXX
  - name: easeeLinks
    type: template
    template: easee
    user: xxxx
    password: xxxx
    charger: EH6BMXXX

# vehicle definitions
# name can be freely chosen and is used as reference when assigning vehicle to loadpoint
# for documentation see https://docs.evcc.io/docs/devices/vehicles
vehicles:
  - name: TeslaModel3LRblau
    type: template
    template: tesla
    title: Tesla # Wird in der Benutzeroberfläche angezeigt (Optional)
    accessToken: xxxx
    refreshToken: xxxx
    vin: xxxx # Erforderlich, wenn mehrere Fahrzeuge des Herstellers vorhanden sind (Optional)
    mode: pv # enable PV-charging when vehicle is identified
    minSoc: 20 # immediately charge to 0% regardless of mode unless "off" (disabled)
    targetSoc: 85 # limit charge to 90%

  - name: Fiat500e
    type: template
    template: fiat
    title: Fiat500e
    user: xxxx
    password: xxxx!
    vin: xxx
    pin: xxx
    mode: pv # enable PV-charging when vehicle is identified
    minSoc: 20 # immediately charge to 0% regardless of mode unless "off" (disabled)
    targetSoc: 100 # limit charge to 90%
    priority: 3

 #   

# site describes the EVU connection, PV and home battery
site:
  title: Zuhause # display name for UI
  meters:
    grid: my_grid # grid meter
    pv: my_pv
    battery: my_battery
  residualPower: # additional household usage margin
  prioritySoc: 50 # give home battery priority up to this soc (empty to disable)
  bufferSoc: 90 # ignore home battery discharge above soc (empty to disable)
  maxGridSupplyWhileBatteryCharging: # ignore battery charging if AC consumption is above this value
  smartCostLimit: # set cost limit for automatic charging in PV mode

# loadpoint describes the charger, charge meter and connected vehicle
loadpoints:
  - title: easeeRechts # display name for UI
    charger: easeeRechts # Wallbox Referenz
    vehicle: TeslaModel3LRblau # Referenz auf Standardfahrzeug
    mode: pv # charge mode (off, now, minpv, pv)
  - title: easeeLinks # display name for UI
    charger: easeeLinks # Wallbox Referenz
    mode: off # charge mode (off, now, minpv, pv)
  - title: go-e-charger # display name for UI
    charger: go-e-charger # charger
    vehicle: Fiat500e # Referenz auf Standardfahrzeug
#    meter: my_pv # charge meter
    mode: "pv" # set default charge mode, use "off" to disable by default if charger is publicly available
    # vehicle: car1 # set default vehicle (disables vehicle detection)
    resetOnDisconnect: true # set defaults when vehicle disconnects
    phases: 3 # electrical connection (normal charger: default 3 for 3 phase, 1p3p charger: 0 for "auto" or 1/3 for fixed phases)
    minCurrent: 6 # minimum charge current (default 6A)
    maxCurrent: 16 # maximum charge current (default 16A)

    # remaining settings are experts-only and best left at default values
    priority: 0 # relative priority for concurrent charging in PV mode with multiple loadpoints (higher values have higher priority)
    soc:
      # polling defines usage of the vehicle APIs
      # Modifying the default settings it NOT recommended. It MAY deplete your vehicle's battery
      # or lead to vehicle manufacturer banning you from API use. USE AT YOUR OWN RISK.
      poll:
        # poll mode defines under which condition the vehicle API is called:
        #   charging: update vehicle ONLY when charging (this is the recommended default)
        #   connected: update vehicle when connected (not only charging), interval defines how often
        #   always: always update vehicle regardless of connection state, interval defines how often (only supported for single vehicle)
        mode: charging
        # poll interval defines how often the vehicle API may be polled if NOT charging
        interval: 60m
      estimate: true # set false to disable interpolating between api updates (not recommended)
    enable: # pv mode enable behavior
      delay: 1m # threshold must be exceeded for this long
      threshold: 0 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
    disable: # pv mode disable behavior
      delay: 1m # threshold must be exceeded for this long
      threshold: 0 # maximum import power (W)
    guardDuration: 3m # switch charger contactor not more often than this (default 5m)

# tariffs are the fixed or variable tariffs
tariffs:
  currency: EUR # three letter ISO-4217 currency code (default EUR)
  grid:
    # either static grid price (or price zones)
    type: fixed
    price: 0.38 # EUR/kWh

    # # or variable via tibber
    # type: tibber
    # token: "476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4" # access token
    # homeid: "cc83e83e-8cbf-4595-9bf7-c3cf192f7d9c" # optional if multiple homes associated to account

    # # or variable via awattar
    # type: awattar
    # region: de # optional, choose at for Austria
  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.0606 # EUR/kWh
  planner:
    # planner tariff can be used for target charging if not grid tariff is specified
    # GrünStromIndex (Germany only) or ElectricityMaps provide CO2 intensity forecast

    # type: grünstromindex
    # zip: <zip>

    # type: electricitymaps
    # uri: <uri>
    # token: <token>
    # zone: DE

# mqtt message broker
mqtt:
  # broker: localhost:1883
  # topic: evcc # root topic for publishing, set empty to disable
  # user:
  # password:

# influx database
influx:
#   url: http://localhost:8086
#   database: evcc
#   org: Organisationsname

# eebus credentials
eebus:
  # uri: # :4712
  # interfaces: # limit eebus to specific network interfaces
  # - en0
  # certificate: # local signed certificate, required, can be generated via `evcc eebus-cert`
  #   public: # public key
  #   private: # private key

# push messages
messaging:
  events:
    start: # charge start event
      title: Charge started
      msg: Started charging in "${mode}" mode
    stop: # charge stop event
      title: Charge finished
      msg: Finished charging ${chargedEnergy:%.1fk}kWh in ${chargeDuration}.
    connect: # vehicle connect event
      title: Car connected
      msg: "Car connected at ${pvPower:%.1fk}kW PV"
    disconnect: # vehicle connected event
      title: Car disconnected
      msg: Car disconnected after ${connectedDuration}
    soc: # vehicle soc update event
      title: Soc updated
      msg: Battery charged to ${vehicleSoc:%.0f}%
    guest: # vehicle could not be identified
      title: Unknown vehicle
      msg: Unknown vehicle, guest connected?
  services:
  # - type: pushover
  #   app: # app id
  #   recipients:
  #   - # list of recipient ids
  # - type: telegram
  #   token: # bot id
  #   chats:
  #   - # list of chat ids
  # - type: email
  #   uri: smtp://<user>:<password>@<host>:<port>/?fromAddress=<from>&toAddresses=<to>
  # - type: ntfy
  #   uri: https://<host>/<topics>
  #   priority: <priority>
  #   tags: <tags>

Log details

[lp-3  ] ERROR 2023/05/15 16:08:27 charge meter: Get "http://192.168.0.157/status": dial tcp 192.168.0.157:80: i/o timeout
[lp-3  ] ERROR 2023/05/15 16:08:42 charge meter: Get "http://192.168.0.157/status": dial tcp 192.168.0.157:80: i/o timeout
[lp-3  ] ERROR 2023/05/15 16:08:53 charge meter: Get "http://192.168.0.157/status": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[lp-3  ] ERROR 2023/05/15 16:11:02 charge meter: Get "http://192.168.0.157/status": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[main  ] INFO 2023/05/15 16:16:03 new version available: 0.117.3

What type of operating system are you running?

Docker container

Version

0.117.2

horst789github commented 1 year ago

grafik

mucki12 commented 1 year ago

Umfasst deine USV denn die gesamte Netzwerkkette?

horst789github commented 1 year ago

Umfasst deine USV denn die gesamte Netzwerkkette?

internet ist dann kurz weg, ansonsten funktioniert das netzwerk durch die usv. warum fragst du?

mucki12 commented 1 year ago

Bin da kein Fachmann, aber bei mir wäre aufgrund des Switches das Netzwerk unterbrochen. Daher habe ich für mich selber die Frage gestellt, wie sich evcc verhalten würde, wenn es nach einem bereits begonnen Ladestart verhalten würde. Das wäre ja ungefähr das gleiche. Mein Netzwerk wäre kurz weg - die Wallbox hat (wieder) Strom - es steckt ein Fahrzeug dran - die Wallbox würde mit 11KW laden. Habe noch nicht ausprobiert was wäre, wenn ich evcc während dieser Ladung starten würde.

andig commented 1 year ago

Ohne Logfile lässt sich da wenig sagen. Für den Ausnahmefall "strom weg" würde ich allerdings aktuell auch keinen Aufwand investieren.

Hofyyy commented 1 year ago

Ich kann was sehr ähnliches reproduzieren. Wenn ich die Wallbox per Sicherung kurz vom netz nehme, muss ich danach den evcc docker neustarten. sonst sind die speed limits per evcc nicht richtig gesetzt.

mein usecase war eine 22kw wallbox und ich habe maxcurrent auf 16A gestellt.

Die frage ist ob der usecase überhaupt abgedeckt ist und zu welchen Zeitpunkten diese werte per modbus tcp gesetzt werden.

Also mit evcc neustart läd er mit 16A bei sofort.

Ohne evcc neustart läd er mit 20A (mehr kann das auto nicht)

andig commented 1 year ago

Also enabled/disabled wird geprüft. Wenn sich am Strom regelungstechnisch nichts ändert wird der aber nicht neu gesetzt- sonst müssten wir das ja quasi bei jedem Durchgang machen.

Hofyyy commented 1 year ago

Also ich verstehe dich sondas dies nicht vorgesehen ist. Oder könnte man ohne nachteile in jedem zyklus den speed auslesen und bei abweichung einmal neu durch konfigurieren. So wie out of sync detected, force reconfigure ...

andig commented 1 year ago

"speed auslesen" ist keine Schnittstelle die wir implementiert haben...