Smartmeter und Nulleinspeisung

smarthome homeassistant solar linux

Um meinen Smartmeter Typ DWSB10.2H auszulesen, braucht es einen IR-Lesekopf. Hier fand ich bitshake.de ganz ansprechend. Zunächst muss gemäß Anleitung die WLAN-Verbindung fürs Tasmota hergestellt werden, dann kann im nächsten Schritt das Skript für den Zähler konfiguriert werden. Die Liste der verfügbaren Skripte findet sich unter https://docs.bitshake.de/script/ - In meinem Fall war mein Zähler nicht gelistet, aber ähnliche Modelle, so dass es sich leicht anpassen ließ. Siehe hierzu auch https://tasmota.github.io/docs/Smart-Meter-Interface/#dzg-dwsb122-sml

>D
>B
=>sensor53 r
>M 1
+1,5,s,0,9600,DWSB10,4
1,77070100010800ff@1000,Verbrauch,kWh,E_in,3
1,77070100020800ff@1000,Einspeisung,kWh,E_out,3
1,77070100100700ff@1,akt. Leistung,W,Power,0
1,77070100600100ff@#,Zählernummer,,meter_number,0
#

Anschließend muss das Skript noch aktiviert werden.

Damit die Daten im Homeassistant ankommen, muss man noch MQTT konfigurieren. Hierzu braucht es einen mosquitto-Server. Mittels MQTT-Explorer lassen sich die übermittelten Daten einsehen, um unter "tele" die erforderlichen Parameter für die configuration.yaml zu finden. MQTT-Explorer

In der configuration.yaml dann für diesen spezifischen Smartmeter die folgenden Parameter verwenden

mqtt:
  sensor:
    - name: "Einspeisung"
      state_topic: "tele/tasmota_48FDB8/SENSOR"
      json_attributes_topic: "tele/tasmota_48FDB8/SENSOR"
      value_template: "{{ value_json.DWSB10.E_out }}"
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
    - name: "Netzbezug"
      state_topic: "tele/tasmota_48FDB8/SENSOR"
      json_attributes_topic: "tele/tasmota_48FDB8/SENSOR"
      value_template: "{{ value_json.DWSB10.E_in }}"
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
    - name: "Momentanverbrauch"
      state_topic: "tele/tasmota_48FDB8/SENSOR"
      json_attributes_topic: "tele/tasmota_48FDB8/SENSOR"
      value_template: "{{ value_json.DWSB10.Power }}"
      unit_of_measurement: "W"
      device_class: power
      state_class: measurement

Damit lassen sich die Werte im Energiedashboard von Homeassistant nutzen und im nächsten Schritt eine Nulleinspeisung realisieren. Dazu erstellen wir uns eine neue Automatisierung wie folgt:

alias: Nulleinspeisung
description: ""
triggers:
  - seconds: /15
    trigger: time_pattern
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.solar_summe
        state: unavailable
actions:
  - target:
      entity_id: aed5ee0d9d5d74b4c78704412eab09b8
    data:
      value: >
        {% set consumption = states('sensor.momentanverbrauch') | float %}
        {% set current_output = states('sensor.powerstream_cloud_inverter_output_watts') | float %}
        {% set min_output = 0 %}
        {% set max_output = 800 %}
        {% set bat_level = states('sensor.delta_2_max_cloud_battery_level') | float %}
        {% if -15 < consumption < 0 %}
          {% set desired_output = consuption %}
        {% else %}
          {% set desired_output = current_output + consumption + 10 %}
        {% endif %}
        {% if bat_level > 97 %}
          {% set desired_output = max_output %}
        {% endif %}
        {% set desired_output = [desired_output | round(0,'floor'),max_output] | min %}
        {% set desired_output = [desired_output, min_output] | max %}
        {{ desired_output }}
    action: number.set_value
mode: single

Alle 15 Sekunden prüfen wir hier den aktuellen Momentanverbrauch (am Smartmeter gemessene Wattzahl) und die aktuelle Einspeisung wie den aktuellen Ladestand der Batterie. Liegt der momentane Verbrauch zwischen -6W und +6W, dann steuern wir nicht weiter nach, sondern setzen die neue Zieleinspeisung gleich der alten, ansonsten werden aktueller Verbrauch plus Einspeisung zum neuen Zielverbrauch verrechnet und noch ein Puffer von 10W (Ausgleichen von Messfehlern der div. unterschiedlichen Geräte) draufgeschlagen. Damit wird auf 15 Sekunden genau das eingespeist was verbraucht wird. Ist die Batterie über 97% geladen wird schlicht der maximale Wert eingespeist, unabhängig vom Verbrauch - wir "verschenken" also dadurch Strom, aber das macht ja dann nichts, wir haben ja erstmal genug.

Das Setup agiert unabhängig vom aktuellen Solarertrag und zieht damit auch automatisch aus der Batterie, wenn zu wenig Solarleistung da ist. Für Sonnenarme Monate überlege ich noch die Nulleinspeisung Bedarfsgerecht an-/abschaltbar zu machen.

Vorheriger Beitrag