Smart Meter per Modbus in HA

Ich auch. Hier ist mein funktionierender Code:

      
    - name: "Stromzähler - Herd - Verbrauch"
      unique_id: Stromzähler - Herd - Verbrauch
      slave: 1
      data_type: float32
      precision: 2
      address: 72
      input_type: input
      unit_of_measurement: kWh
      state_class: measurement
      device_class: energy

Ich habe auch viel getestet aber nun funktioniert alles. Ich nutze einen SDM72D-M Zähler und einen Waveshare rs485 auf Eth Adapter

Die funktionierende modbus.yaml ( saubere Einrückung mit 2 Leerzeichen pro Ebene)

- type: tcp
  host: 192.168.178.111
  port: 502
  name: SDM72D-M
  timeout: 9
  sensors:
    # Spannung L1
    - name: SDM72 Phase_1_line_to_neutral_volts
      address: 0
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Spannung L2
    - name: SDM72 Phase_2_line_to_neutral_volts
      address: 2
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Spannung L3
    - name: SDM72 Phase_3_line_to_neutral_volts
      address: 4
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Strom L1
    - name: SDM72 Phase_1_current
      address: 6
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Strom L2
    - name: SDM72 Phase_2_current
      address: 8
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Strom L3
    - name: SDM72 Phase_3_current
      address: 10
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Gesamtleistung aktiv
    - name: SDM72 Total_active_power
      address: 12
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: W
      state_class: measurement
      device_class: power

    # Gesamtenergie (kWh)
    - name: SDM72 Total_energy
      address: 342
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy

1 „Gefällt mir“

Hallo in die Runde

Ich habe gestern meine Wärempumpe bekommen und davor einen Tecget Drehstromzähler eingebaut bekommen. Dieser hat Modbos.
Nun lese ich hier, dass man den Waveshare Amazon Link einbauen kann um vom Modbus auf RJ45 zu kommen und das Gerät somit im Netzwerk einbinden kann.

Nun meine eigentlichen Fragen:

Der Tecget hat nur 2 RS485 Anschlüsse Link , bei den Waveshare braucht man aber 3 (485A, 485B, GND). Woher soll ich dann GND nehmen?

Und da der Waveshare auch Spannung braucht nimmt man am besten den mit PoE?

Viele Grüße

Martin

Es gibt viele RS485/TCP Adapter auf dem Markt. Waveshare ist in der Community beliebt, ich finde sie aber etwas teuer. Die Adapter brauchen Strom, ob du POE, 12V oder 230V ist dabei erstmal egal. Nimm das, was für dich am einfachsten zu installieren ist. Auch WLAN Adapter gibt es.

Für den RS485 BUS braucht man nur 2 Adern. Der GND ist nicht notwendig.

1 „Gefällt mir“

Guten Morgen

Die Hardware ist verkabelt nun stehe ich etwas auf dem Schlauch wie ich die Daten in Home Assistant bekomme um dann den Verbraucher ins Energy Dashboard zu intigrieren.

Habe ich aufgearbeitet. Ist somit alt.

Was ich bisher verstanden habe:

Modbus wird in die configuration.yaml eingetragen. In etwa also so:

# Example yaml: full tcp-rtu connection
modbus:
  - name: waermepumpe
    type: rtuovertcp
    host: 10.10.3.52
    port: 4196

    delay: 0
    message_wait_milliseconds: 30
    timeout: 5

Dann bekomme ich die Meldungen:

Logger: homeassistant.setup
Quelle: setup.py:278
Erstmals aufgetreten: 10:37:27 (1 Vorkommnis)
Zuletzt protokolliert: 10:37:27

Setup failed for ‘modbus’: Integration failed to initialize.

und:

Logger: homeassistant.components.modbus.validators
Quelle: components/modbus/validators.py:136
Integration: modbus (Dokumentation, Probleme)
Erstmals aufgetreten: 10:37:27 (1 Vorkommnis)
Zuletzt protokolliert: 10:37:27

Modbus zaehlerwaermepumpe contain no entities, causing instability, entry not loaded

Ich lese aber keinen “richtigen” Stromzähler aus, sondern nur einen zwischengeschalteten Drehstromzähler für die Wärmepumpe. Kann mir jemand einen Denkanstoß geben?

Die derzeitige configuration.yaml sieht so aus:

modbus:
  - name: zaehlerwaermepumpe
    type: rtuovertcp
    host: 10.10.3.52
    port: 502

    delay: 0
    message_wait_milliseconds: 30
    timeout: 5

    sensors:
    # Spannung L1
    - name: Phase A voltage 
      address: 97
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Spannung L2
    - name: Phase B voltage 
      address: 98
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Spannung L3
    - name: Phase C voltage 
      address: 99
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: V
      state_class: measurement
      device_class: voltage

    # Strom L1
    - name: Phase A active power 
      address: 356
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Strom L2
    - name: Pahse B active power 
      address: 358
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Strom L3
    - name: Phase C active power 
      address: 360
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: A
      state_class: measurement
      device_class: current

    # Gesamtleistung aktiv
    - name: Current total active power
      address: 0
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: W
      state_class: measurement
      device_class: power

    # Gesamtenergie (kWh)
    - name: Total active power
      address: 362
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: kWh
      state_class: total_increasing
      device_class: energy

Nun startet HA und ich sehe die Modbus integration. Allerdings habe ich noch keine Werte. Die Adressen habe ich aus dieser Modbus Tabelle

Die Konfiguration des Waveshare:

Viele Grüße
Martin

Die von Dir verlinkte Modus Tabelle ist nur eine Beispiel Tabelle, wie sowas aussehen könnte.

Du brauchst von dem Hersteller des Stromzähler die richtigen Adressen. Es ist nur drauf zu achten, das die Adressen manchmal in HEX und manchmal in DEZIMAL angegeben sind. Dann muss man es umrechnen.

Auch die Konfig deines Waveshare muss zum Stromzähler passen. Auch hier gibt der Hersteller des Stromzählers vor, wie diese kommunizieren möchte.

1 „Gefällt mir“

Guten Morgen

Dankeschön! Du hast natürlich Recht. Genau das war der Punkt wo ich auf dem Schlauch stand.

Wie der Zähler und der Waveshare miteinander “Sprechen” (Baudrate, etc.) habe ich schon eingestellt.

Ich habe nun vom Hersteller die Register Tabelle bekommen. Bin nun aber etwas überfordert wie ich das in die configuration.yaml eingeben muss.

Interessant für mich wäre eigentlich nur der Verbrauch damit ich diesen pro Tag in mein Energy Dashboard einfügen kann. Ziel ist es zu sehen wieviel Strom die Heizung gesamt verbraucht.

Ich habe die PDF hier hochgeladen.

Wenn ich es richtig verstehe nehme ich dazu die 6000 “Aktive Gesamtenergie”.

    sensors:
    # Gesamtenergie
    - name: Gesamtenergie 
      address: 6000
      data_type: float32
      precision: 2
      input_type: input
      slave: 1
      unit_of_measurement: kWh
      state_class: measurement
      device_class: kWh

Kann man in die yaml auch Adressen mit Buchstaben einbinden? Zum Beispiel die 500C für “Strom der A-Phase”. Evtl. würde ich noch die Wirkleistung, Spannung und den Strom mit einbauen.

Viele Grüße!

Ich hab es mal durch Gemini gejagt. Einzig die IP Adresse die du angibst, ist keine typische HeimNetzwerkDingens. Du muss sicher stellen, das dein HA diese Adresse erreichen kann, wenn du den Wave Share so konfiguriert hast.

modbus:
  - name: zaehlerwaermepumpe
    type: rtuovertcp
    host: 10.10.3.52
    port: 502
    delay: 0
    message_wait_milliseconds: 30
    timeout: 5
    
    sensors:
      - name: "Gesamtenergie"
        address: 5999 # Wichtig: Falls der Wert nicht stimmt, probiere 6000
        data_type: float32
        precision: 2
        input_type: input
        slave: 1
        unit_of_measurement: "kWh"
        device_class: energy          # Korrigiert von 'kWh' auf 'energy'
        state_class: total_increasing  # Korrigiert für das Energie-Dashboard

Was korrigiert werden muss:

  1. device_class: Der Wert kWh ist keine gültige Geräteklasse. Die richtige Klasse für Energie ist energy.

  2. state_class: Für Zählerstände, die sich kontinuierlich aufsummieren (wie die Gesamtenergie), nutzt man in Home Assistant total_increasing. Wenn du measurement nutzt, kann Home Assistant den Wert nicht sauber im Energie-Dashboard verwenden.

  3. Register-Adressierung (Offset): Modbus-Geräte in Home Assistant nutzen standardmäßig die 0-basierte Adressierung. Wenn in deinem Tecget-Handbuch steht, dass die Adresse 6000 (oder 36001) ist, musst du in Home Assistant oft 5999 eintragen (Handbuch-Adresse minus 1). Falls das Handbuch bereits 0-basiert ist, bleibt es bei 6000.

Klappt leider nicht. Ich habe den Waveshare nun rausgeworfen und würde lieber mit einem ESP32 und ESPHome arbeiten. Ich glaube es ist sinnvoll das nicht hier zu besprechen. Daher habe ich hier einen eigenen Beitrag gemacht.

Dank für Deine Hilfe Ede!