Ich verwende hier eine Heidelberg Energy Control Wallbox hier kaufen*. Falls Du schon solch eine Wallbox hast, aber noch keinen dynamischen Strompreistarif, habe ich am Ende der Seite einen Tipp für dich, denn grade als E-Auto Fahrer lohnen sich dynamische Strompreistarife sehr.

Physikalische Verkabelung

  • Ein Drahtpäarchen aus einem schon verlegten CAT6 Netzwerkkabel
  • An der Heidelberg Wallbox auf die entsprechenden Klemmen A (blau) und B (weiss) angeschlossen und den Schirm der Leitung an der vorgesehenen Stelle mit dem Gehäuse verbunden:

Anschluss an der Wallbox

  • Die Bus-ID der Wallbox auf “1” setzen gemäß Heidelberg Anleitung, dazu den DIP-Schalter S4/4 auf EIN stellen
  • Das andere Ende des Netzwerkkabels an einen Modbus2USB Adapter anschließen und einen 120 Ohm Widerstand (ich hatte nur 100 Ohm) parallel schalten:

Canbus-Adapter

  • Am Raspberry PI den USB-Stick anschließen
  • Verwendet wird ein Wingoneer USB-485 “USB to RS 485” Stick BTE17-07 hier kaufen*

Test auf der Kommandozeile

  • Mit modbus_cli kann die Installation auf einfache Weise getestet werden
  • Installation: pip3 install modbus_cli
  • Der Aufruf liest das Input-Register 4 aus (Serielle Einstellungen 19200 8E1 lt. Anleitung Heidelberg): modbus -b 19200 -p 1 -P e -B be /dev/ttyUSB0 i@4 (hier das richtige USB-Serial-Device auswählen)
    • Der Aufruf liefert in meinem Fall 0x108, was Version 1.0.8 der Firmware entspricht
  • In /etc/udev/rules.d/99-usb-serial.rules eine Zeile ergänzen: SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyUSB_WB" (die IDs erhält man per lsusb).
  • Mit udevadm control --reload-rules && udevadm trigger die Regeln neu laden und prüfen ob der Symlink erstellt wurde.

EVCC installieren

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

mqtt:
  broker: mqtt:1883
  topic: evcc

log: info
levels:
  cache: error

# unique installation id
plant: <installid>

interval: 10s # control cycle interval

sponsortoken: <sponsortoken>

# sponsors can set telemetry: true to enable anonymous data aggregation
# see https://github.com/evcc-io/evcc/discussions/4554
telemetry: false

meters:
  - name: netz
    type: template
    template: tibber-pulse
    usage: grid
    token: <token>
    homeid: <homeid>

vehicles:
- name: ev1
  type: template
  template: id
  title: ID.3
  user: <mail>
  password: <pwd>
  vin: <id>
  capacity: 58
  phases: 3
  icon: car
  cache: 15m
  minSoc: 20
  targetSoc: 80
  minCurrent: 6
  maxCurrent: 16

chargers:
- type: template
  template: heidelberg
  id: 1
  device: /dev/ttyUSB_WB
  baudrate: 19200
  comset: 8E1
  modbus: rs485serial
  name: wallbox1

loadpoints:
- title: Garage
  charger: wallbox1
  mode: pv
  phases: 3
  mincurrent: 6
  maxcurrent: 16
  resetOnDisconnect: true
  vehicle: ev1

tariffs:
  grid:
    type: tibber
    token: "<token>" # access token
    homeid: "<homeid>"
  co2:
    type: grünstromindex
    zip: <plz>

site:
  title: Mein Zuhause
  meters:
    grid: netz

messaging:
  events:
    start: # charge start event
      title: 🚗⚡ Charge of {{.vehicleTitle}} started
      msg: |
        Wallbox {{.title}} started charging {{.vehicleTitle}} in {{ toString .mode | upper }} mode.

#        --------------------------
#        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
#        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
#        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
#        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
#        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
    stop: # charge stop event
      title: 🚗🔋 Charge of {{.vehicleTitle}} finished
      msg: |
        Wallbox {{.title}} finished charging {{.vehicleTitle}}
        with {{round (divf .chargedEnergy 1000) 2 }} kWh in {{.chargeDuration}}.

#        --------------------------
#        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
#        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
#        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
#        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
#        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
    connect: # vehicle connect event
      title: "🚗 {{.vehicleTitle}} connected on wallbox {{.title}}"
      msg: |
        {{.vehicleTitle}} connected on wallbox {{.title}} at {{round (divf .pvPower 1000) 2 }} kW PV.

#        --------------------------
#        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
#        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
#        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
#        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
#        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
    disconnect: # vehicle connected event
      title: "🚗 {{.vehicleTitle}} disconnected of wallbox {{.title}}"
      msg: |
        {{.vehicleTitle}} disconnected of wallbox {{.title}} after {{.connectedDuration}}.

#        --------------------------
#        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
#        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
#        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
#        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
#        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoc }} %){{end}}
  services:
  - type: telegram
    token: <token>
    chats:
    - <id> 

Sonstiges

Die Verwendung von mbusd um den Modbus per TCP weiterzuleiten schlug bei mir fehl. Trotzdem hier das Vorgehen zur Dokumentation

mbusd

Siehe GitHub - 3cky/mbusd: Open-source Modbus TCP to Modbus RTU (RS-232/485) gateway.

Installation

git clone https://github.com/3cky/mbusd.git 
$ cd mbusd
$ mkdir -p build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ sudo make install

Konfiguration

nano /usr/local/etc/mbusd/mbusd-ttyUSB_WB.conf
# Serial port device name
device = /dev/ttyUSB_WB

# Serial port speed
speed = 19200

# Serial port mode
mode = 8e1

systemctl start mbusd@ttyUSB_WB.service

Folgende Links waren mir beim Erstellen der Seite eine Hilfe:

Hinweis: Die so (*) markierten Links sind Affiliate-Links. Das bedeutet, dass ich eine kleine Provision erhalte, wenn ihr über diese Links einkauft. Für euch entstehen dabei keine zusätzlichen Kosten. Die Einnahmen helfen mir, diesen Blog und meinen YouTube-Kanal zu betreiben und weiterhin kostenlose Inhalte für euch zu erstellen. Vielen Dank für eure Unterstützung!