Skip to content

EVCC as input device #406

Description

@thebrainkafka

Verwendung von EVCC als Eingabequelle

EVCC stellt seine aktuellen Werte (u. a. grid.power) über eine REST-API bereit. Ein eigenes,
EVCC-spezifisches Input-Device gibt es in uni-meter nicht – stattdessen wird EVCC wie jede andere
JSON-liefernde HTTP-Quelle über das generische generic-http-Input-Device angebunden.

Die EVCC-API liefert den aktuellen Netzbezug/-einspeisung unter $.grid.power als einzelnen
Gesamtwert (kein Drehstromzähler mit separaten Phasenwerten). Deshalb wird hier nur mit
einem Leistungs-Channel gearbeitet.
Wahl des Phase-Mode
Auch wenn EVCC nur einen Gesamtwert liefert, sollte für die Leistung nicht power-phase-mode = "mono-phase" zusammen mit dem Channel power-total verwendet werden. In diesem Modus kopiert
uni-meter den gelieferten Wert unverändert auf alle drei Phasen, wodurch der resultierende
total_act_power im emulierten Zähler fälschlich verdreifacht erscheint.
Stattdessen wird power-phase-mode = "tri-phase" gesetzt und der volle Wert nur auf einen
einzelnen Phasen-Channel gelegt (z. B. power-l1). Die anderen beiden Phasen bleiben unbelegt
(0), sodass die Summe wieder exakt dem EVCC-Wert entspricht:
Power tri-phase (empfohlen für EVCC)
power-l1 – kompletter EVCC-Wert ($.grid.power)
power-l2 / power-l3 – nicht konfiguriert, bleiben bei 0
Power mono-phase (nicht empfohlen)
power-total – würde zur Verdreifachung führen
Für die Energiewerte (falls benötigt) gilt die gleiche Logik wie bei anderen JSON-Quellen; EVCC
liefert unter energy bzw. je nach Version/Konfiguration ggf. keine kumulierten Zählerstände,
sodass dieser Teil optional bleibt.
Konfiguration
Die anzubindende Channel-Liste wird über json-path-Ausdrücke auf das JSON der EVCC-API
gemapped. Die einfachste /etc/uni-meter.conf, die den aktuellen Netzbezug von EVCC liest,
sieht so aus:

uni-meter {
  output = "uni-meter.output-devices.shelly-pro3em"
  input  = "uni-meter.input-devices.generic-http"

  http-server {
    port = 80
  }

  output-devices {
    shelly-pro3em {
      udp-port = 1010
      udp-interface = "0.0.0.0"
      min-sample-period = 2000ms
    }
  }

  input-devices {
    generic-http {
      url = "http://<evcc IP>:7070/api/state"
      polling-interval = 10s

      power-phase-mode  = "tri-phase"
      energy-phase-mode = "mono-phase"

      channels = [{
        type = "json"
        channel = "power-l1"
        json-path = "$.grid.power"
        scale = 1.0
      }]
    }
  }
}

Hinweise
Polling-Intervall: EVCC aktualisiert seine internen Werte standardmäßig nur alle 30 s
(interval in der evcc.yaml). Ein kürzeres polling-interval als das EVCC-Aktualisierungs-
intervall bringt keinen Mehrwert und erzeugt nur unnötige Last auf beiden Seiten. 10 s sind ein
sinnvoller Kompromiss, um kurzfristige Änderungen dennoch zeitnah zu übernehmen.

min-sample-period am Output-Device: Falls der abnehmende Speicher/Wechselrichter sehr
häufig abfragt, kann min-sample-period (z. B. 2000ms) im jeweiligen Output-Device
konfiguriert werden, um ein zu starkes Flattern der ausgelieferten Werte zu vermeiden.

Vorzeichen: Wie bei den anderen generic-http-Quellen folgt uni-meter der Vorzeichen-
konvention des gelieferten Werts unverändert. Bei EVCC ist grid.power üblicherweise negativ
bei Einspeisung und positiv bei Bezug – ggf. mit scale = -1.0 anpassen, falls das gewünschte
Ausgabegerät die umgekehrte Konvention erwartet.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions