Elgris Smart Meter

rgiese

New member
Hi! Ich habe einen Smart Meter von Elgris. Dieser ist in der Verteilung integriert und die Weboberfläche ist über eine feste IP leicht zugänglich. Wie kann ich nun diesen Smart Meter in den Home Assistant einbinden? Laut Hersteller ist er voll SMA kompatibel, doch ich bekomme ihn über die SMA Integration nicht eingebunden. Vielen Dank für eure Hilfe!!

1662914483371.png
 

blurrrr

Well-known member
Hey,

na dann erzähl doch erstmal, was Du bisher so versucht hast, wie der aktuelle Stand derzeit ist und wo es klemmt? 🙂
 

azrael783

Active member
Laut Homepage des Herstellers verfügt das Smart Meter über eine offene Modbus-TCP Schnittstelle, darüber kannst du es in Home-Assistant einbinden. Vorausgesetzt du findest die Doku zur Modbus Schnittstelle ;)
Die SMA Integration arbeitet nur mit SMA Geräten zusammen, die sind leider etwas eigen. Die Kompatibilität erreichen die mit Sicherheit ebenfalls über die Modbus Schnittstelle ;)
 

rgiese

New member
Hey,

na dann erzähl doch erstmal, was Du bisher so versucht hast, wie der aktuelle Stand derzeit ist und wo es klemmt? 🙂
Ich habe versucht über die Integration SMA diesen einzubinden. Alle Eingaben zeigten mir dann immer "Keine Authentifizierung möglich".
Ich habe auf meinem Iphone z. B. die App Energy Meter. Und dort wird er sofort als SMA kompatibles Gerät erkannt und alle Werte werden angezeigt. Ich steh momentan etwas auf dem Schlauch :sneaky:
 

alexamend

Active member
Sollte so in etwa funktionieren

YAML:
modbus:
  - type: tcp
    host: {ip_of_inverter}
    port: 502

sensor:
  - platform: modbus
    scan_interval: 60   #time in seconds for getting values
    registers:
    - name: SMA_Power_AC
      unit_of_measurement: W
      slave: 3
      register: 30775
      count: 2
      data_type: int
    - name: PV Daily Yield
      unit_of_measurement: kWh
      slave: 3
      register: 30517
      scale: 0.001
      precision: 3
      count: 4
      data_type: uint
    - name: PV Total Production
      unit_of_measurement: MWh
      slave: 3
      register: 30513
      scale: 0.000001
      precision: 3
      count: 4
    - name: Grid Voltage
      unit_of_measurement: V
      slave: 3
      register: 30783
      count: 2
      scale: 0.01
      precision: 2
      data_type: uint
    - name: Grid frequency
      unit_of_measurement: Hz
      slave: 3
      register: 30803
      count: 2
      scale: 0.01
      precision: 2
      data_type: uint
    - name: SMA_temp
      unit_of_measurement: °C
      slave: 3
      register: 30953
      count: 2
      scale: 0.1
      precision: 1
      data_type: int
    - name: SMA_status
      slave: 3
      register: 30201
      count: 2
    - name: SMA_grid
      slave: 3
      register: 30217
      count: 2
    - name: Insulation
      slave: 3
      register: 30225
      count: 2
      scale: 0.001
      unit_of_measurement: kOhms
    - name: SMA_Residual_current
      slave: 3
      register: 31247
      count: 2
      scale: 1
      unit_of_measurement: mA
    - name: Apparent Power
      unit_of_measurement: VA
      slave: 3
      register: 30813
      scale: 1
      precision: 0
      count: 2
      data_type: int
    - name: Reactive Power
      unit_of_measurement: VAr
      slave: 3
      register: 30805
      scale: 1
      precision: 0
      count: 2
      data_type: int
      
  - platform: template
    sensors:
      modbus_sma_pv_power:
        entity_id: sensor.sma_power_ac
        friendly_name: 'Power Output'
        value_template: >-
            {% if states('sensor.sma_power_ac')|float < 0 or states('sensor.sma_power_ac')|float > 10000 %}
              0
            {% else %}
              {{ states('sensor.sma_power_ac') }}
            {% endif %}
        unit_of_measurement: "W"
        icon_template: mdi:flash-circle
      modbus_sma_pv_apparent_power:
        entity_id: sensor.apparent_power
        friendly_name: 'Apparent Power'
        value_template: >-
            {% if states('sensor.apparent_power')|float < 0 or states('sensor.apparent_power')|float > 10000 %}
              0
            {% else %}
              {{ states('sensor.apparent_power') }}
            {% endif %}
        unit_of_measurement: "VA"
        icon_template: mdi:flash-circle
      modbus_sma_pv_reactive_power:
        entity_id: sensor.reactive_power
        friendly_name: 'Reactive Power'
        value_template: >-
            {% if states('sensor.reactive_power')|float < 0 or states('sensor.reactive_power')|float > 10000 %}
              0
            {% else %}
              {{ states('sensor.reactive_power') }}
            {% endif %}
        unit_of_measurement: "VAr"
        icon_template: mdi:flash-circle
      modbus_sma_pv_residual:
        entity_id: sensor.sma_residual_current
        friendly_name: 'Residual Current'
        value_template: >-
            {% if states('sensor.sma_residual_current')|float < 0 or states('sensor.sma_residual_current')|float > 10000 %}
              0
            {% else %}
              {{ states('sensor.sma_residual_current') }}
            {% endif %}
        unit_of_measurement: "mA"
        icon_template: mdi:flash-circle
      modbus_sma_temperature:
        entity_id: sensor.sma_temp
        friendly_name: 'Inverter Temp'
        value_template: >-
            {% if states('sensor.sma_temp')|float < 0 or states('sensor.sma_temp')|float > 100 %}
              0
            {% else %}
              {{ states('sensor.sma_temp') }}
            {% endif %}
        unit_of_measurement: "°C"
      modbus_grid_frequency:
        entity_id: sensor.grid_frequency
        friendly_name: 'Grid Frequency'
        value_template: >-
            {% if states('sensor.grid_frequency')|float < 30 or states('sensor.grid_frequency')|float > 100 %}
              Not Measured
            {% else %}
              {{ states('sensor.grid_frequency') }}
            {% endif %}
        unit_of_measurement: "Hz"
      modbus_grid_voltage:
        entity_id: sensor.grid_voltage
        friendly_name: 'Grid Voltage'
        value_template: >-
            {% if states('sensor.grid_voltage')|float < 180 or states('sensor.grid_voltage')|float > 300 %}
              Not Measured
            {% else %}
              {{ states('sensor.grid_voltage') }}
            {% endif %}
        unit_of_measurement: "V"
      modbus_inverter_status:
        entity_id: sensor.sma_status
        friendly_name: 'Inverter Status'
        value_template: >-
            {% if is_state('sensor.sma_status', '307' ) %}
              OK
            {% elif is_state('sensor.sma_status', '303' ) %}
              Off
            {% elif is_state('sensor.sma_status', '455' ) %}
              Warning
            {% elif is_state('sensor.sma_status', '35' ) %}
              Fault
            {% endif %}
      modbus_grid_contactor:
        entity_id: sensor.sma_grid
        friendly_name: 'Grid contactor'
        value_template: >-
            {% if is_state('sensor.sma_grid', '51' ) %}
              Closed
            {% else %}
              Open
            {% endif %}


In der Anzeige dann so in etwa
YAML:
cards:
  - entities:
      - entity: sensor.modbus_inverter_status
      - entity: sensor.modbus_grid_contactor
    show_header_toggle: false
    title: PV Inverter
    type: entities
  - card:
      entities:
        - entity: sensor.modbus_sma_pv_power
        - entity: sensor.modbus_sma_pv_apparent_power
        - entity: sensor.modbus_sma_pv_reactive_power
        - entity: sensor.pv_daily_yield
        - entity: sensor.pv_total_production
        - entity: sensor.modbus_sma_temperature
        - entity: sensor.modbus_grid_voltage
        - entity: sensor.modbus_grid_frequency
        - entity: sensor.insulation
        - entity: sensor.modbus_sma_pv_residual
      show_header_toggle: false
      type: entities
    conditions:
      - entity: sensor.sma_grid
        state: '51'
    type: conditional
type: vertical-stack
 

Jensen

New member
Hallo,
durch die Vorlage von alexamend war ich in der Lage, meinen SMA Wechselrichter auszulesen. Vielen Dank dafür.
Allerdings funktioniert das 'Übersetzen' der enum Werte noch nicht.
Wo liegt der Fehler?
YAML:
modbus:
  - type: tcp
    host: 192.168.50.50
    port: 502
    
sensor:
  - platform: modbus
    scan_interval: 60   #time in seconds for getting values
    registers:
    - name: SMA Status            # Status des Geräts: 35-Fehler, 303-Aus, 307-OK, 455-Warnung
      unique_id: SMA.Status
      slave: 3
      address: 30201
      data_type: uint32
      count: 2

  - platform: template
    sensors:
      modbus_inverter_status:
        entity_id: sensor.sma_status
        friendly_name: 'SMA Inverter Status'
        value_template: >-
            {% if is_state('sensor.sma_status', '307' ) %}
              OK
            {% elif is_state('sensor.sma_status', '303' ) %}
              Off
            {% elif is_state('sensor.sma_status', '455' ) %}
              Warning
            {% elif is_state('sensor.sma_status', '35' ) %}
              Fault
            {% endif %}

Gruß Jens
 

alexamend

Active member
Auf den ersten Blick würde ich sagen das deine einrücker nicht ganz stimmen

YAML:
value_template: >-
  {% if is_state('sensor.sma_status', '307' ) %} 
  OK
  {% elif is_state('sensor.sma_status', '303' ) %}
  Off
  {% elif is_state('sensor.sma_status', '455' ) %}
  Warning
  {% elif is_state('sensor.sma_status', '35' ) %}
  Fault
  {% endif %}
 

Jensen

New member
Wo finde ich eine Beschreibung zur yaml Syntax? Ich bin da völlig neu in der Materie.
Bis jetzt hatte ich nur mit Programmiersprachen zu tun, wo Einrückung kein Thema ist.

Den ersten Block mußte ich ändern, damit die Modbus Abfrage funktioniert. Wie steht nun der zweite Block in Beziehung zum ersten?

YAML:
modbus:
  - name: SMA
    type: tcp
    host: 192.168.50.50
    port: 502
    sensors:
      - name: SMA Status            # Status des Geräts: 35-Fehler, 303-Aus, 307-OK, 455-Warnung
        unique_id: SMA.Status
        slave: 3
        address: 30201
        data_type: uint32
        count: 2
 
  - platform: template
    sensors:
      modbus_inverter_status:
        entity_id: sensor.sma_status
        friendly_name: 'SMA Inverter Status'
        value_template: >-
            {% if is_state('sensor.sma_status', '307' ) %}
            OK
            {% elif is_state('sensor.sma_status', '303' ) %}
            Off
            {% elif is_state('sensor.sma_status', '455' ) %}
            Warning
            {% elif is_state('sensor.sma_status', '35' ) %}
            Fault
            {% endif %}
 
Zuletzt bearbeitet:

Nival

-
Moderator
Einrückung passt in diesem Fall schon, mehrzeiliges value_template ist da nicht so sensibel.

@Jensen hast Du den letzten Teil mal in den Entwicklerwerkzeugen => Template geprüft, ob das dort wie erwartet funktioniert?
 

Jensen

New member
Also jetzt habe ich zumindest mal eine lauffähige Variante gefunden.
Allerdings war das eine sehr schwere Geburt. Try and Error, jedesmal neu starten, Verwirrung durch noch bestehende Entities, also ich glaube, ich muß noch viel lernen.
Nun stellt sich mir die Frage, ist das der richtige Weg, meine über 300 Modbus Datenpunkte anzulegen?
Wer hat mit sowas Erfahrung? Ist da nicht was eingebaut, um diese Eingabe zu erleichtern?
Im Moment denke ich eher über eine Excel-Tabelle und ein Script nach, was mir den yaml code erzeugt.


YAML:
modbus:
  - name: SMA
    type: tcp
    host: 192.168.50.50
    port: 502
    sensors:
      - name: SMA Status            # Status des Geräts: 35-Fehler, 303-Aus, 307-OK, 455-Warnung
        unique_id: SMA.status
        slave: 3
        address: 30201
        data_type: uint32
        count: 2

template:
  sensor:
    - name: SMA Status Inverter
      unique_id: SMA.status_inverter
      state: >-
        {% if is_state('sensor.sma_status', '307' ) %}
        OK
        {% elif is_state('sensor.sma_status', '303' ) %}
        Off
        {% elif is_state('sensor.sma_status', '455' ) %}
        Warning
        {% elif is_state('sensor.sma_status', '35' ) %}
        Fault
        {% endif %}

sma1.PNG

Sollte ich vielleicht einen neuen Modbus Thread anlegen?
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
968
Beiträge
14.035
Mitglieder
499
Neuestes Mitglied
John58
Oben