Einbindung von Blauberg Lüftungsgerät in Homeassistant

Hallo an alle ins Forum,
dies ist mein erster Beitrag und ich hoffe alles richtig zu machen :wink:

Ich habe eine Wohnraumlüftung der Firma Vents die identisch mit den Blauberg Geräten ist und möchte diese per Modbus in HA einbinden. Im ioBroker hatte das einigermaßen geklappt.
Ich versuche es mit diesem Adapter: hub.docker.com/r/gracingpro/blauberg-homeassistant
Leider komme ich da mit der Anleitung nicht weiter.
Folgendes habe ich schon in der modbus.yaml eingerichtet und habe auch eine Verbindung zu der Anlage:

# Modbus Konfiguration Wohnraumlüftung
- name: 'Blauberg'
  type: tcp
  host: 192.168.178.7
  port: 502
  
  sensors:
    - name: "Luefterstufe"
      unit_of_measurement: °C
      #sensor.luefterstufe
      address: 2
      slave: 1
      device_class: temperature
      data_type: int16:

So beginnt meine configuration.yaml:

# Erzeuge seperate Ordner für diese Anwendungen
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
modbus: !include modbus.yaml

Muss ich dieses im root Verzeichnis machen?

mkdir blauberg-homeassistant
cd blauberg-homeassistant
touch config.ini

Vielleicht könnte mir ja jemand weiter helfen bin noch ziemlich frisch im HA.

Danke im Voraus
Bernd

:crayon:by HarryP: Codezeilen formatiert (bitte immer in </> einbinden)

Da lese ich mal mit, leider habe ich es auch nicht hinbekommen meine Zentrale Blauberg Komfort EC SB 350-E S21 in HA einzubinden.
Wäre über jede Hilfe dazu dankbar

Nachtrag: Habe es soweit hinbekommen das ich meine Zentrale Lüftungsanlage steuern kann.
Habe es mit dieser Anleitung hinbekommen.

https://github.com/jvitkauskas/homeassistant_blauberg_s21

:crayon:by HeikoBauer: Zusammenführung Doppelpost.

Guten Morgen Björn,

danke für die schnelle Antwort und schön das es bei Dir klappt.
Ist da diese config gemeint, oder die configuration.yaml?

/homeassistant/blauberg-homeassistant/config.ini

“Copy custom_components folder from this repository to /config of your Home Assistant instalation”

Habe heute viele Stunden gelesen und getestet. Irgendwie bekomme ich es nicht hin. Ich weiß nicht wie ich den Ordner aus Git in den File Editor bekomme.

Hallo, sorry hatte länger nicht mehr hier reingeschaut.
In letzter Zeit war meine Integration mit einen roten ! Ausrufezeichen, habe unn mehrmals versucht das Gerät neu einzubinden. Leider ohne erfolg.
Bekomme bei der Host Anmeldung schon nicht mehr weiter, weder die Adresse oder die Serial Nr. des Gerätes geht mit dem Port 502.

Bist du weitergekommen ? oder hast du eine andere Idee die S21 in HA zu integrieren ?

Hallo Mauser,

ich habe die Anlage direkt per Modbus angebunden.
Das läuft seitdem problemlos.
Ich steuere sie auf diese Art.
Dann habe ich noch ein Bild von dem Gerät, auf der lasse ich mir die Temperaturen anzeigen.
Je nach Zustand ändert sich der Text und die Farben.

Der Verbrauch wird von einem Shelly gemessen.

VG Bernd

Hallo Bernd,

Das sieht gut aus, könntest du mir dabei helfen es auch so einzurichten?
VG Björn

Hallo Björn, ich will es mal versuchen.

Ich habe auch nur wenig Ahnung von den Codes, habe mir alles lange zusammengesucht und sehr viel probiert.
Ist schon eine Weile her, mal schauen ob ich das noch zusammenbekomme.

Erstmal habe ich diesen Eintrag zum Modbus in der configuration.yaml erstellt.

# Integriert alle Modbus Anwendungen des Ordners "modbus"
modbus: !include_dir_merge_list modbus

Dann habe ich einen Ordner modbus erstellt. In dem liegt die Datei blauberg.yaml. Sie hat diesen Inhalt:

# Modbus Konfiguratione der Vents Wohnraumlüftung (Identisch mit Blauberg)

- name: 'Blauberg'
  type: tcp
  host: 192.168.178.7  # ip ggf. anpassen
  port: 502

  sensors:
  
# Input Registers (16-Bit-Register) - Modbus-Funktionen: 4 (input_type: input)
  
    - name: "Aktuelle Temperatur des ausgewählten Sensors zur Temperaturregelung"
      unit_of_measurement: "°C"
      address: 0    # Startadresse des ersten Input Registers
      slave: 1      # Modbus-Slave-ID
      device_class: temperature
      data_type: int16
      input_type: input
      
    - name: "Frischluft am Einlass"
      unique_id: Frischluft am Einlass
      unit_of_measurement: "°C"
      address: 1
      slave: 1
      device_class: temperature
      data_type: int16
      input_type: input
      scale: 0.1  # Skalierung des Rohwerts
      precision: 1  # Angabe der Anzahl der Dezimalstellen

    - name: "Zuluft zur Wohnung"
      unique_id: Zuluft zur Wohnung
      unit_of_measurement: "°C"
      address: 2
      slave: 1
      device_class: temperature
      data_type: int16
      input_type: input
      scale: 0.1  # Skalierung des Rohwerts
      precision: 1  # Angabe der Anzahl der Dezimalstellen
      
    - name: "Abluft aus Wohnung"
      unique_id: Abluft aus Wohnung
      unit_of_measurement: "°C"
      address: 3
      slave: 1
      device_class: temperature
      data_type: int16
      input_type: input
      scale: 0.1  # Skalierung des Rohwerts
      precision: 1  # Angabe der Anzahl der Dezimalstellen

    - name: "Abluft nach aussen"
      unique_id: Abluft nach aussen
      unit_of_measurement: "°C"
      address: 4
      slave: 1
      device_class: temperature
      data_type: int16
      input_type: input
      scale: 0.1  # Skalierung des Rohwerts
      precision: 1  # Angabe der Anzahl der Dezimalstellen

    - name: "Luftfeuchte aus Wohnung"
      unique_id: Luftfeuchte aus Wohnung
      unit_of_measurement: "%"
      address: 10
      slave: 1
      device_class: humidity
      data_type: int16
      input_type: input
      scale: 1  # Skalierung des Rohwerts
      precision: 1  # Angabe der Anzahl der Dezimalstellen

      
# Holding Registers (16-Bit-Register) - Modbus-Funktionen: 3, 6, 16 (input_type: holding )

    - name: "Luefterstufe lesen und schreiben"
      unique_id: luefterstufe_lesen_und_schreiben
      address: 2
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding 
      

    - name: "Lüftungsstärke des Zuluftventilators bei Standby"
      address: 5
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding      

    - name: "Lüftungsstärke des Abluftventilators bei Standby"
      address: 6
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding       

    - name: "Lüftungsstärke des Zuluftventilators bei der ersten Lüftungsstufe"
      address: 7
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding
     
    - name: "Lüftungsstärke des Abluftventilators bei der ersten Lüftungsstufe"
      address: 8
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding      

    - name: "Lüftungsstärke des Zuluftventilators bei der zweiten Lüftungsstufe"
      address: 9
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding      

    - name: "Lüftungsstärke des Abluftventilators bei der zweiten Lüftungsstufe"
      address: 10
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding      


    - name: "Lüftungsstärke des Zuluftventilators bei Boost"
      address: 19
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding      

    - name: "Lüftungsstärke des Abluftventilators bei Boost"
      address: 20
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding


    - name: "Betriebsart der Lüftungsanlage: 0 - nur Lüftung 1 - Heizung, 2 - Kühlung, 3 - 0 Auto"
      address: 43
      slave: 1
      device_class: wind_speed
      data_type: int16
      input_type: holding

    - name: "Raumtemperatursollwert im Normalbetrieb"
      address: 44
      slave: 1
      device_class: current
      data_type: int16 
      input_type: holding

    - name: "Feuchtesollwert"
      address: 45
      slave: 1
      device_class: current
      data_type: int16 
      input_type: holding
      
    - name: "CO2-Sollwert"
      unit_of_measurement: "ppm"
      address: 46
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding

    - name: "PM2.5-Sollwert"
      unit_of_measurement: "μg/m3"
      address: 47
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding
      
    - name: "VOC-Sollwert"
      unit_of_measurement: "Byte"
      address: 48
      slave: 1
      device_class: current
      data_type: int16      
      input_type: holding
      
    - name: "HR_TIMER_MODE"
      address: 49
      slave: 1
      device_class: current
      data_type: int16   
      input_type: holding
      
    - name: "Status Bypass"
      unique_id: status_bypass
      address: 74
      slave: 1
      device_class: current
      data_type: int16
      input_type: holding  

Damit frage ich auch Entitäten ab, die ich aktuell nicht nutze.
Schau mal ob Du dann die Werte in den Entitäten schonmal sehen kannst.

Dann habe ich eine Stapelkarte mit diesem Code erstellt.
Die Entität des Shelly muss natürlich auch an mehreren Stellen angepasst werden

type: vertical-stack
cards:
  - type: custom:mushroom-template-card
    primary: Wohnraumlüftung EIN / AUS
    secondary: |-
      {% if is_state('switch.shellyplusplugs_b0b21c1925e8_switch_0', 'off') %}
        aktuell ausgeschaltet
      {% else %}
        aktuell eingeschaltet
      {% endif %}
    icon: |-
      {% if is_state('switch.shellyplusplugs_b0b21c1925e8_switch_0', 'off') %}
        mdi:fan-off
      {% else %}
        mdi:fan-auto
      {% endif %}

    entity: switch.shellyplusplugs_b0b21c1925e8_switch_0
    badge_color: ""  
    icon_color: |-
      {% if is_state('switch.shellyplusplugs_b0b21c1925e8_switch_0', 'on') %}
        green 
      {% else %}
       red
      {% endif %}
    multiline_secondary: true
    fill_container: false
    layout: horizontal
    tap_action:
      action: toggle
    badge_icon: ""
  - type: custom:mushroom-template-card
    primary: Öffnen Bypass Wohnraumlüftung (bei Feuchte)
    secondary: |-
      {% if is_state('sensor.status_bypass', '2') %}
        aktuell geschlossen (mit Rückgewinnung)
      {% else %}
        aktuell geöffnet (ohne Rückgewinnung)
      {% endif %}
    icon: |-
      {% if is_state('sensor.status_bypass', '2') %}
        mdi:valve-closed
      {% else %}
        mdi:valve-open
      {% endif %}
    entity: input_button.luftung_bypass_offnen
    badge_color: green
    icon_color: |-
      {% if is_state('sensor.status_bypass', '2') %}
        green
      {% else %}
       red
      {% endif %}
    multiline_secondary: true
    fill_container: false
    layout: horizontal
    tap_action:
      action: toggle
    visibility:
      - condition: state
        entity: sensor.status_bypass
        state: "2"
  - type: custom:mushroom-template-card
    primary: Schließen Bypass Wohnraumlüftung (Standard)
    secondary: |-
      {% if is_state('sensor.status_bypass', '2') %}
        aktuell geschlossen (mit Rückgewinnung)
      {% else %}
        aktuell geöffnet (ohne Rückgewinnung)
      {% endif %}
    icon: |-
      {% if is_state('sensor.status_bypass', '2') %}
        mdi:valve-closed
      {% else %}
        mdi:valve-open
      {% endif %}
    entity: input_button.luftung_bypass_schliessen
    badge_color: green
    icon_color: |-
      {% if is_state('sensor.status_bypass', '2') %}
        green
      {% else %}
       red
      {% endif %}
    multiline_secondary: true
    fill_container: false
    layout: horizontal
    tap_action:
      action: toggle
    visibility:
      - condition: state
        entity: sensor.status_bypass
        state: "1"
  - type: entities
    entities:
      - entity: input_button.luftung_stufe_0
      - entity: input_button.luftung_stufe_1
      - entity: input_button.luftung_stufe_2
      - entity: input_button.luftung_stufe_3
      - entity: sensor.luefterstufe_lesen_und_schreiben
      - entity: sensor.shellyplusplugs_b0b21c1925e8_switch_0_power
    state_color: true
    show_header_toggle: false
    theme: Mushroom Square Shadow

Nicht wundern das sich dieFarben und die Texte in Abhängigkeit des Zustandes ändern oder teilweise ausgeblendet werden.

Viel Erfolg bei der Umsetzung
VG Bernd

Danke dir, werde ich testen, gebe dir gerne ein Rückmeldung
VG Björn

Hallo Bernd,
danke damit bekomme ich die entitäten und Werte angezeigt. Muss mal sehen wie ich damit dann um umsetzen kann, z.B. die Lüfterstufe zu ändern.

Guten Rutsch erstmal

Björn

:crayon:by HarryP:Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Hallo Bernd,
hast du evtl. Noch einen Tipp wie die Schalter Einstellungen machst um die Lüfterstuffen zu schalten 1 - 4 stehe da gerade auf den Schlauch :grinning:

Hallo Björn,

das hatte ich doch im 2. Teil meines Posts erklärt.
Vielleicht war es nicht verständlich.

Du erstellst eine Stapel Karte und fügst meinen Code aus meinem vorherigen Post ein.
Das sollte direkt im Code Editor gehen.
Den musst Du natürlich ggf. an deine Entität anpassen, dort wo bei mir der Shelly sitzt.
Der dient dazu den Stromverbrauch der Anlage anzuzeigen und die Anlage bei Bedarf auch mal neu zu booten.

Wenn du da nicht weiterkommst, melde dich bitte noch mal.
Viele Grüße von Bernd

Hi Bernd,

ich stehe wohl auf den schlauch …
die Karte habe ich angelegt, zum Ein/Ausschalten auch die Entitäten angepasst.

Ich meinte eher mit dem Input_Buttom, die habe ich als template angelegt, es schaltet aber damit nichts, da fehlt mir bestimmt der code für en Button.
Also was passieren soll wenn der Button gedruckt wurde.

type: entities
    entities:
      - entity: input_button.luftung_stufe_0
      - entity: input_button.luftung_stufe_1
      - entity: input_button.luftung_stufe_2
      - entity: input_button.luftung_stufe_3
      - entity: sensor.luefterstufe_lesen_und_schreiben

danke dir schon mal.

Viele Grüße Björn

Hallo Björn,

ich habe unter Einstellungen - Geräte und Dienste - Helfer diese Entitäten angelegt:

Die sehen dann so aus:

Schau mal ob die aktiviert sind und sicher musst du dann noch einen Neustart machen.

VG Bernd

Guten Morgen Björn,
sorry ich habe da noch was übersehen.
Ich habe natürlich zu den input_buttons noch eine umfassende Automation angelegt, damit die überhaupt eine Funktion haben.

Das ist der aufwändige yaml Code dazu der die Befehle per Modbus weitergibt.
Die Lüftungsstufe 0 steht für den Standbymodus der Anlage.
In der Anzeige (sensor.luefterstufe_lesen_und_schreiben) taucht dann aber leider immer die 255 auf.
Das habe ich nicht besser hinbekommen.
Ich hoffe damit kommst Du weiter.

alias: Lüftungsstufen
description: ""
mode: single
triggers:
  - entity_id:
      - input_button.luftung_bypass_offnen
    id: Lüftung Bypass öffnen
    trigger: state
  - entity_id:
      - input_button.luftung_bypass_schliessen
    id: Lüftung Bypass schließen
    trigger: state
  - entity_id:
      - input_button.luftung_stufe_0
    id: Lüftung Stufe 0
    trigger: state
  - entity_id:
      - input_button.luftung_stufe_1
    id: Lüftung Stufe 1
    trigger: state
  - entity_id:
      - input_button.luftung_stufe_2
    id: Lüftung Stufe 2
    trigger: state
  - entity_id:
      - input_button.luftung_stufe_3
    id: Lüftung Stufe 3
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Lüftung Bypass öffnen
        sequence:
          - metadata: {}
            data:
              address: 74
              slave: 1
              hub: Blauberg
              value: 1
            action: modbus.write_register
      - conditions:
          - condition: trigger
            id:
              - Lüftung Bypass schließen
        sequence:
          - metadata: {}
            data:
              address: 74
              slave: 1
              hub: Blauberg
              value: 2
            action: modbus.write_register
      - conditions:
          - condition: trigger
            id:
              - Lüftung Stufe 0
        sequence:
          - metadata: {}
            data:
              address: 2
              slave: 1
              hub: Blauberg
              value: 255
            action: modbus.write_register
      - conditions:
          - condition: trigger
            id:
              - Lüftung Stufe 1
        sequence:
          - metadata: {}
            data:
              address: 2
              slave: 1
              hub: Blauberg
              value: 1
            action: modbus.write_register
      - conditions:
          - condition: trigger
            id:
              - Lüftung Stufe 2
        sequence:
          - metadata: {}
            data:
              address: 2
              slave: 1
              hub: Blauberg
              value: 2
            action: modbus.write_register
      - conditions:
          - condition: trigger
            id:
              - Lüftung Stufe 3
        sequence:
          - metadata: {}
            data:
              address: 2
              slave: 1
              hub: Blauberg
              value: 3
            action: modbus.write_register

1 „Gefällt mir“