Skip to content

Kirmesboxer24: Alpha Innotec WZ S80H (Sole Wasser, Oldtimer), Senec.Home 2.1, ABL eMH1 (Senec‐branded), SMA Sunny Tripower 10.0, Hoymiles HM‐1500, Fiat 500e, Tibber

Kirmesboxer24 edited this page Nov 10, 2024 · 7 revisions

Die Ausgangslage

Als wir 2020 unsere Wohnimmobilie von 2007 kauften, waren wir froh über die eingebaute Erdwärmepumpe, die seit der Erbauung im Haus werkelt. Sie ist jedoch schon ein bisschen angegraut und dem entsprechend „dumm“. Die genauen Mechanismen und Kriterien, die den Energieverbrauch beeinflussen, waren uns anfangs schleierhaft. Die Pumpe lief erratisch, aber bei einem fixen Stromtarif und ohne Solaranlage war das zunächst kein Thema – sie machte ihren Job.

IMG_0312

Das änderte sich, als wir 2021 eine 10 kWp PV-Anlage mit einem SMA-Wechselrichter und einem Senec-Speicher installierten. Dazu kam eine Wallbox mit Senec-Logo, die eigentlich eine ABL ist. Der Senec-Speicher gehört zu der Generation, die für viele Probleme bekannt ist – wir warten gerade auf den Austausch gegen ein Modell mit LFP-Zellen.

Wallbox

Die Wallbox sollte eigentlich PV-Überschussladen ermöglichen, aber in der Praxis war das wegen der Verzögerung der Senec-Cloud nahezu unbrauchbar. Wir nannten sie daher scherzhaft den „Wolkenfinder“, da sie bei einem Sonne-Wolken-Mix zuverlässig Strom aus dem Netz zog. Anfangs hatte ich Respekt davor, in die Hardware einzugreifen, doch die bevorstehende Garantieablauf 2024 und erfolgreiche Anleitungen in Verbindung mit EVCC gaben mir Mut.

Ein ungenutzter Raspi 4 und ein USB RS485 Converter Adapter kamen zum Einsatz. Ich wollte EVCC eigentlich in unseren Proxmox-Cluster integrieren, aber dafür wäre eine RS485-zu-Ethernet-Umsetzung nötig gewesen und ein Netzwerkkabel zur Wallbox zu ziehen, war mir zu aufwendig. Deshalb „wohnt“ der Raspi jetzt direkt an der Wallbox, dem vormals größten Schmerzpunkt im System.

IMG_5780

Mit den Empfehlungen aus dem EVCC-Konfigurator in der Shell lief die Einrichtung reibungslos.

Ein Problem blieb: Die Stellantis-Cloud, über die unser Fiat verbunden ist, ist ähnlich träge wie die VW-Cloud, die wir vom e-Up! kennen. Das führt dazu, dass die Fahrzeugerkennung Zeit braucht. Daher bleibt die Wallbox standardmäßig auf „off“, um nicht minutenlang mit maximaler Leistung zu laden, während das Auto erkannt wird. Das eigenwillige Konzept der Fiat-Ladestufen, die nur über die App eingestellt werden können, ist eine Geschichte für sich – gerne erzähle ich bei Interesse mehr dazu.

Oldtimer-Wärmepumpe mit ioBroker

Unsere Alpha Innotec WZ S80H, Baujahr 2006, ist sogar älter als das Haus und bot keinerlei externe Steuerungsmöglichkeit – scheinbar. Nach vielen Anfragen beim Hersteller, Technikergesprächen und Websuchen war ich überzeugt, dass da nichts zu machen ist. Ein entscheidender Hinweis kam aus Marcus Jaschens Wochenrückblick 2023-45 (https://www.marcusjaschen.de/blog/2023/2023-45/), in dem er beschrieb, wie er Daten aus seiner Wärmepumpe ausliest – ein echter Augenöffner. Eine Recherche in diese Richtung zeigte, dass die Steuerplatine Luxtronik 1 sehr wohl in moderne Systeme eingebunden werden kann.

Ich entschied mich für die Anbindung der seriellen Wartungsschnittstelle per RS232 zu Ethernet an den ioBroker, der hier sowieso schon ein wichtiger Bestandteil der Haustechnik ist. Es gibt auch eine ESPHome-Anbindung, die mit Home Assistant hätte funktionieren können, jedoch zu der Zeit nur lesend, nicht schreibend.

IMG_4940

Ich sammelte erste Erfahrungen mit der Steuerung der Wärmepumpe, was sich später als essenziell für die EVCC-Integration herausstellte. Die Hauptfaktoren zur Steuerung des Verdichters waren „AbwRLs“ (Abweichung Rücklauf SOLL) und „BWs“ (Brauchwasser SOLL). Mehrere Blockly-Skripte halfen dabei, den Stromverbrauch in günstige und ertragreiche Zeitfenster zu verlegen. Diese Skripte erforderten jedoch immer wieder manuelles Eingreifen, besonders im Winter, um eine kurze Wolkenlücke zu erwischen.

Oldtimer-Wärmepumpe mit EVCC

Mit EVCC wird die Automatisierung durch den „enable:“-Befehl gestartet. Die Werte werden in ioBroker zur Visualisierung und Steuerung bereitgehalten und per MQTT gesteuert:

  • BWi (Int, Visualisierung)
  • evcc-enable (Bool, als Trigger)
  • evcc-enabled (Bool, wird durch das Skript aktiviert)
  • evcc-status (String, signalisiert Ladebereitschaft des Fahrzeugs)
  • evcc-maxcurrent (Int, wahrscheinlich verzichtbar)

Bildschirmfoto 2024-11-10 um 19 07 30

Bildschirmfoto 2024-11-10 um 10 40 38

Wenn der Trigger aktiv ist, setzt ioBroker „BWs“ auf einen erprobten Wert, der den Verdichter startet. Ein weiteres Skript setzt „AbwRLs“ bei Bedarf auf den Maximalwert, sodass der Verdichterbetrieb auch gleich zur Raumheizung genutzt wird. Da es keinen Pufferspeicher gibt, fungieren der Heizkreis und der Estrich als Wärmespeicher. Der Takt ist auf 60 Minuten begrenzt, dann werden die Parameter zurückgesetzt. EVCC schaltet die Wärmepumpe nach einer Stunde Netzbezug ebenfalls ab, was bisher aber mehr der Visualisierung dient. Die eigentliche Steuerung durch EVCC ist hier noch nicht implementiert.

Bildschirmfoto 2024-11-10 um 10 57 18

Bildschirmfoto 2024-11-10 um 10 57 45

Ja, der Anlagenzustand kommt als Strings „Bereitschaft“, „Heizung“ und „Warmwasser“ über die Schnittstelle....

Bildschirmfoto 2024-11-10 um 11 10 52

Ich bin noch dabei herauszufinden, ob ich die Funktionen „enable:“ und „enabled:“ optimal nutze und ob es hier noch elegantere Lösungen gibt.

config.yaml

Die YAML ist ein Mix aus der Grundkonfig und verschiedenen Umsetzungen hier aus der Doku, die ich an meine Bedürfnisse angepasst habe.

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

log: debug
levels:
  cache: error

# unique installation id
plant: *****

interval: 30s # control cycle interval

sponsortoken: *****

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

meters:
- type: template
  template: senec-home 
  usage: grid  
  host: 192.168.2.171  
  schema: https  
  name: grid1
- type: template
  template: senec-home 
  usage: pv  
  host: 192.168.2.171  
  schema: https  
  name: pv2
- type: template
  template: senec-home 
  usage: battery  
  host: 192.168.2.171  
  schema: https  
  capacity: 7
  name: battery3
- type: template
  template: hoymiles-opendtu 
  usage: pv  
  host: 192.168.2.96  
  name: pv4
- name: ShellyLuxTr
  type: template
  template: shelly-3em
  usage: charge
  host: 192.168.2.233

chargers:
- type: template
  template: abl 
  id: 1  
  device: /dev/ttyUSB0  
  baudrate: 38400  
  comset: 8E1  
  modbus: rs485serial  
  name: wallbox5
- name: LuxTr_Pwr
  type: custom
  icon: heater
  features: 
    - integrateddevice
    - heating
  status: # charger status A..F
    source: mqtt
    topic: 0_userdata/0/Appliances/Heizung/evcc-status
  enabled: # charger enabled state (true/false or 0/1)
    source: mqtt
    topic: 0_userdata/0/Appliances/Heizung/evcc-enabled
  enable: # set charger enabled state (true/false or 0/1)
    source: mqtt
    topic: 0_userdata/0/Appliances/Heizung/evcc-enable
    payload: 1
  maxcurrent: # set charger max current (A)
    source: mqtt
    topic: 0_userdata/0/Appliances/Heizung/evcc-maxcurrent
- name: Toploader
  type: template
  template: shelly
  host: 192.168.2.208
- name: Dishwasher
  type: template
  template: shelly
  host: 192.168.2.230

loadpoints:
- title: Wallbox
  priority: 3
  charger: wallbox5
  mode: off
- title: Luxtronik
  priority: 2
  vehicle: Heizung
  charger: LuxTr_Pwr
  meter: ShellyLuxTr
  mode: pv
  enable:
      # einschalten, wenn 1 Minute lang mindestens 500 W Überschuss vorhanden ist
    delay: 1m
    threshold: -1500
  disable:
      # ausschalten, wenn 45 Minuten lang mehr als 1500 W aus dem Netz bezogen werden
    delay: 60m
    threshold: 1500
- title: Waschen
  priority: 1
  charger: Toploader
  vehicle: Waschen
  mode: now
  soc:
    estimate: true
- title: Geschirr
  priority: 0
  charger: Dishwasher
  vehicle: Dishwasher
  mode: now
  soc:
    estimate: true
  

site:
  title: Schmiedestate
  meters:
    grid: grid1
    pv:
    - pv2
    - pv4
    battery:
    - battery3
#  residualpower: -100 # akzeptierter Netzbezug

vehicles:
- type: template
  template: fiat 
  title: Pio  
  icon: car  
  user: *****
  password: *****
  vin: *****
  capacity: 42  
  phases: 3  
  cache: 15m  
  pin: *****
  mode: pv  
  minCurrent: 6  
  maxCurrent: 16  
  welcomecharge: false  
  name: ev1
- name: Heizung
  title: Heizung
  icon: waterheater
  type: custom
  soc:           # SoC = Wassertemeratur
    source: mqtt
    topic: iobroker/luxtronik1/0/temperaturen/BWi
  limitsoc:
    source: mqtt
    topic: 0_userdata/0/Appliances/Heizung/evcc-bws-fix
- name: Waschen
  type: custom
  title: Toploader
  icon: generic
  capacity: 5
  soc:
    source: const
    value: 0.1
- name: Dishwasher
  type: custom
  title: Dishwasher
  icon: generic
  capacity: 5
  soc:
    source: const
    value: 0.1


tariffs:
  grid:
    type: template
    template: tibber
    token: *****
  feedin:
    type: fixed
    price: 0.08 # [currency]/kWh

mqtt:
  broker: 192.168.2.112:1883
  topic: evcc
  user: *****
  password: *****


Version: `0.131.4`

Danksagungen

Mein Dank geht jedenfalls an die Teams von EVCC und ioBroker, im Besonderen aber auch an [forelleblau] (https://github.com/forelleblau) für den Luxtronik1-Adapter, der mir den letzten Part überhaupt ermöglicht. Und natürlich an Marcus (https://github.com/mjaschen), der den Groschen geliefert hat, der dann fiel.

Clone this wiki locally