Zum Inhalt

WifiWhirl-Modul in Home Assistant integrieren (via MQTT)

Diese Anleitung führt dich durch die Schritte, um dein WifiWhirl-Modul nahtlos in deine Home Assistant-Instanz zu integrieren. Durch die Verbindung über das MQTT-Protokoll kannst du deinen Whirlpool zentral steuern, Sensorwerte visualisieren und in Automationen einbinden.

Funktionsweise und Vorteile

Die Integration erfolgt über MQTT (Message Queuing Telemetry Transport), ein leichtgewichtiges Nachrichtenprotokoll, das ideal für Smart-Home-Geräte ist. Dein WifiWhirl-Modul sendet Status-Updates (z.B. Temperatur, Pumpenstatus) an einen MQTT-Broker, und Home Assistant abonniert diese Nachrichten, um die entsprechenden Entitäten zu aktualisieren. Ebenso kann Home Assistant Befehle (z.B. Pumpe einschalten) über den Broker an das Modul senden.

Vorteile der Integration:

  • Zentrale Steuerung: Bediene deinen Whirlpool direkt über die Home Assistant Oberfläche oder App.
  • Visualisierung: Verfolge Temperaturverläufe und andere Sensorwerte.
  • Automationen: Erstelle leistungsstarke Automationen (z.B. Heizung bei Erreichen der Ziel-Temperatur abschalten, Benachrichtigungen bei Filterwechsel).
  • Einbindung in Szenen: Integriere den Whirlpool in übergreifende Smart-Home-Szenarien.

Voraussetzungen

Bevor du beginnst, stelle sicher, dass die folgenden Voraussetzungen erfüllt sind:

  1. Laufende Home Assistant Instanz:

  2. MQTT Broker in Home Assistant:

    • Ein MQTT Broker ist die zentrale Nachrichtenvermittlungsstelle. Der empfohlene Weg ist die Installation des "Mosquitto broker" Add-ons in Home Assistant.
      • Gehe in Home Assistant zu "Einstellungen" > "Add-ons" > "ADD-ON STORE".
      • Suche nach "Mosquitto broker" und installiere es.
      • Eine Anleitung und weitere Informationen findest du in der offiziellen Home Assistant MQTT Dokumentation.
    • Alternativ kann auch ein externer MQTT Broker verwendet werden, wenn du bereits einen in deinem Netzwerk betreibst.
  3. Home Assistant MQTT-Integration eingerichtet:

    • Nachdem der Broker läuft, muss die MQTT-Integration in Home Assistant konfiguriert werden, damit sie mit dem Broker kommuniziert.
      • Gehe zu "Einstellungen" > "Geräte & Dienste".
      • Wenn der Broker korrekt erkannt wurde (oft automatisch durch das Mosquitto Add-on), siehst du eine "MQTT" Integration. Klicke auf "Konfigurieren".
      • Wichtig: Aktiviere die Option "Suche aktivieren" und stelle sicher, dass das Discovery-Präfix dem Standard homeassistant entspricht, damit Home Assistant die Entitäten deines WifiWhirl-Moduls automatisch erkennen kann. Dies ist im Normalfall die Standardeinstellung.
  4. Laufendes WifiWhirl-Modul:

    • Dein WifiWhirl-Modul muss betriebsbereit und mit deinem WLAN verbunden sein.
    • MQTT muss im WifiWhirl-Modul aktiviert und konfiguriert sein. Die Einstellungen hierfür findest du in der Weboberfläche deines Moduls unter "MQTT-Konfiugration". Konfiguriere den MQTT-Host (meist die IP-Adresse des Homeassistant), Port (Standardmäßig 1883), Benutzernamen (dein Benutzername in Home Assistant), Passwort (dein Passwort in Home Assistant) und das Basis-Topic (standardmäßig wifiwhirl-XXXXXX).
  5. Optional: MQTT Explorer:

    • Für die Fehlersuche oder um die vom WifiWhirl-Modul gesendeten MQTT-Nachrichten zu überprüfen, ist ein Tool wie MQTT Explorer sehr hilfreich. Verbinde es mit deinem MQTT-Broker, um den Nachrichtenverkehr in Echtzeit zu sehen.

Konfigurationsschritte

Wenn alle Voraussetzungen erfüllt sind, sollte Home Assistant dein WifiWhirl-Modul und dessen Entitäten automatisch erkennen, sobald das Modul eine MQTT-Konfigurationsnachricht sendet (dies geschieht beim Start des Moduls oder bei einer Änderung der MQTT-Einstellungen im Modul).

Du solltest dann unter "Einstellungen" > "Geräte & Dienste" > "MQTT" ein neues Gerät für dein WifiWhirl-Modul mit den zugehörigen Entitäten (Sensoren, Schalter, etc.) finden.

Vorlage für dein Home Assistant Dashboard

Mit der folgenden YAML-Konfiguration kannst du ein umfassendes Dashboard für dein WifiWhirl-Modul in Home Assistant erstellen. Es visualisiert wichtige Sensordaten und bietet schnellen Zugriff auf die Steuerungsfunktionen.

So verwendest du die Vorlage:

  1. Dashboard bearbeiten: Öffne das Home Assistant Dashboard, dem du die Whirlpool-Steuerung hinzufügen möchtest, und klicke oben rechts auf die drei Punkte, dann auf "Dashboard bearbeiten".
  2. Karte hinzufügen: Klicke unten rechts auf "+ KARTE HINZUFÜGEN".
  3. Manuell: Scrolle in der Auswahl ganz nach unten und wähle "Manuell".
  4. YAML einfügen: Lösche den vorhandenen Beispiel-Code und füge die untenstehende YAML-Konfiguration ein.
  5. Entitäts-IDs anpassen (wichtig!):
    • Die in der Vorlage verwendeten Entitäts-IDs (z.B. sensor.layzspa_wifi_controller_layzspa_temp_c) basieren auf einem Platzhalter-MQTT-Topic. Dein WifiWhirl-Modul könnte abweichende Entitäts-IDs verwenden!
    • Überprüfe die korrekten Namen deiner Entitäten in Home Assistant unter "Einstellungen" > "Geräte & Dienste" > Reiter "Entitäten". Suche dort nach Entitäten, die zu deinem WifiWhirl-MQTT-Gerät gehören (z.B. nach "layzspa" oder dem Namen, den du dem Modul gegeben hast).
    • Passe alle Entitäts-IDs in der YAML-Vorlage entsprechend an.
  6. Speichern: Klicke auf "SPEICHERN".

Benötigte Custom Cards (Installation via HACS):

Diese Dashboard-Vorlage verwendet spezielle Custom Cards, die du möglicherweise zuerst über den Home Assistant Community Store (HACS) installieren musst, falls noch nicht geschehen:

Installiere diese über HACS im Frontend-Bereich und stelle sicher, dass die Ressourcen korrekt in deiner Lovelace-Konfiguration geladen werden (geschieht meist automatisch durch HACS).

type: vertical-stack
cards:
  - square: false
    columns: 2
    type: grid
    cards:
      - type: custom:mushroom-entity-card
        entity: sensor.layzspa_wifi_controller_layzspa_temp_c
        name: Displayanzeige
        icon: mdi:fit-to-screen
        icon_color: null
        layout: horizontal
        fill_container: true
        tap_action:
          action: none
        hold_action:
          action: none
        double_tap_action:
          action: none
      - type: custom:mushroom-template-card
        primary: Bereit in
        secondary: >-
          {%- if is_state('binary_sensor.layzspa_wifi_controller_layzspa_ready',
          'off') %} {{
          float(states('sensor.layzspa_wifi_controller_layzspa_time_to_ready'))
          | round // 1 }} Stunden  {{
          (float(states('sensor.layzspa_wifi_controller_layzspa_time_to_ready'))
          * 60) | round % 60 }} Minuten {% else %} Zeit für ein Bad {% endif %}
        icon: mdi:hot-tub
        layout: horizontal
        entity: binary_sensor.layzspa_ready
        icon_color: >-
          {%- if is_state('binary_sensor.layzspa_wifi_controller_layzspa_ready',
          'off') %} red {% else %} green {% endif %}
        tap_action:
          action: none
        hold_action:
          action: none
        double_tap_action:
          action: none
  - square: false
    columns: 3
    type: grid
    cards:
      - type: custom:mushroom-entity-card
        entity: switch.layzspa_wifi_controller_layzspa_pump
        secondary_info: none
        name: Pumpe
        fill_container: true
        layout: vertical
        tap_action:
          action: toggle
      - type: custom:mushroom-entity-card
        entity: switch.layzspa_wifi_controller_layzspa_heat_regulation
        secondary_info: none
        layout: vertical
        fill_container: true
        tap_action:
          action: toggle
        name: Heizung
      - type: custom:mushroom-entity-card
        entity: switch.layzspa_wifi_controller_layzspa_airbubbles
        secondary_info: none
        layout: vertical
        tap_action:
          action: toggle
        name: Airjet
        fill_container: true
  - square: false
    columns: 2
    type: grid
    cards:
      - type: custom:mushroom-template-card
        primary: Filter Reset
        secondary: >-
          Alter: {{ states('sensor.layzspa_wifi_controller_layzspa_filter_age')
          | round(1) }} Tage
        icon: >-
          {%- if states('sensor.layzspa_wifi_controller_layzspa_filter_age') |
          int > 7 %} mdi:sync {% else %} mdi:air-filter {% endif %}
        layout: horizontal
        entity: button.layzspa_wifi_controller_layzspa_reset_filter_timer
        hold_action:
          action: toggle
        tap_action:
          action: none
        fill_container: false
        icon_color: >-
          {%- if states('sensor.layzspa_wifi_controller_layzspa_filter_age') |
          int > 7 %} red {% else %} green {% endif %}
      - type: custom:mushroom-template-card
        primary: Multitab Reset
        secondary: >-
          Alter: {{
          states('sensor.layzspa_wifi_controller_layzspa_chlorine_age') | round
          (1) }} Tage
        icon: >-
          {%- if states('sensor.layzspa_wifi_controller_layzspa_chlorine_age') |
          int > 7 %} mdi:sync {% else %} mdi:test-tube {% endif %}
        entity: button.layzspa_wifi_controller_layzspa_reset_chlorine_timer
        layout: horizontal
        tap_action:
          action: none
        hold_action:
          action: toggle
        icon_color: >-
          {%- if states('sensor.layzspa_wifi_controller_layzspa_chlorine_age') |
          int > 7 %} red {% else %} green {% endif %}
  - square: true
    columns: 2
    type: grid
    cards:
      - type: thermostat
        entity: climate.layzspa_wifi_controller_layzspa_temperature_control
        name: Whirlpool
      - type: vertical-stack
        cards:
          - type: custom:mini-graph-card
            name: Whirlpool Temperatur
            entities:
              - entity: sensor.layzspa_wifi_controller_layzspa_temp_c
                name: Aktuell
                color: '#FF1493'
                hours_to_show: 12
              - entity: sensor.layzspa_wifi_controller_layzspa_target_temp_c
                name: Ziel
                color: '#00BFFF'
                hours_to_show: 12
          - type: custom:mushroom-entity-card
            entity: sensor.layzspa_wifi_controller_layzspa_ambient_temp_c
            layout: horizontal
            name: Außentemperatur
            fill_container: false
            icon_color: null
            tap_action:
              action: none
            hold_action:
              action: none
            double_tap_action:
              action: none
            icon: mdi:thermometer

Erläuterung der Dashboard-Elemente

  • Displayanzeige & Bereit in: Zeigt die aktuelle Temperatur am Display der Pumpe und die geschätzte Restzeit, bis die Ziel-Temperatur erreicht ist.
  • Pumpe, Heizung, Airjet: Direkte Schalter für die Hauptfunktionen.
  • Filter Reset & Multitab Reset: Zeigt das Alter des Filters/Multitabs an und ermöglicht das Zurücksetzen der Timer (durch langes Drücken/Hold Action).
  • Whirlpool Thermostat: Ermöglicht das Einstellen der Ziel-Temperatur.
  • Whirlpool Temperatur Graph: Visualisiert den Verlauf der aktuellen und der Ziel-Temperatur über die letzten 12 Stunden.
  • Außentemperatur: Zeigt die vom Modul erfasste (oder manuell gesetzte) Umgebungstemperatur.

Beispiel-Automationen (YAML)

Hier sind einige Beispiele, wie du dein WifiWhirl-Modul in Home Assistant Automationen verwenden kannst. Füge diese unter "Einstellungen" > "Automatisierungen & Szenen" hinzu (über "Automatisierung erstellen" > "Leere Automatisierung erstellen" und dann YAML-Modus).

1. Heizung ausschalten, wenn Ziel-Temperatur erreicht und Pumpe läuft:

alias: Whirlpool Heizung aus bei Ziel-Temperatur
description: Schaltet die Whirlpool-Heizung aus, wenn die Ziel-Temperatur erreicht ist.
trigger:
  - platform: template
    value_template: >-
      {{ states('sensor.layzspa_wifi_controller_layzspa_temp_c') | float(0) >=
         states('sensor.layzspa_wifi_controller_layzspa_target_temp_c') | float(0) }}
condition:
  - condition: state
    entity_id: switch.layzspa_wifi_controller_layzspa_pump
    state: 'on'
  - condition: state
    entity_id: switch.layzspa_wifi_controller_layzspa_heat_regulation # Oder die Entität für den Heizstatus
    state: 'on'
action:
  - service: switch.turn_off
    target:
      entity_id: switch.layzspa_wifi_controller_layzspa_heat_regulation # Oder die Entität für den Heizstatus
mode: single

2. Benachrichtigung senden, wenn Filter gewechselt werden muss (nach 7 Tagen):

alias: Whirlpool Filterwechsel-Erinnerung
description: Sendet eine Benachrichtigung, wenn der Filter älter als 7 Tage ist.
trigger:
  - platform: numeric_state
    entity_id: sensor.layzspa_wifi_controller_layzspa_filter_age
    above: 7
condition: []
action:
  - service: notify.DEIN_BENACHRICHTIGUNGSDIENST # Ersetze dies!
    data:
      title: "Whirlpool Wartung"
      message: "Der Whirlpool-Filter ist seit {{ states('sensor.layzspa_wifi_controller_layzspa_filter_age') | round(1) }} Tagen im Einsatz und sollte gewechselt werden."
mode: single

Wichtig: Ersetze DEIN_BENACHRICHTIGUNGSDIENST mit dem Namen deines tatsächlich konfigurierten Benachrichtigungsdienstes in Home Assistant (z.B. notify.mobile_app_mein_telefon). Passe die Entitäts-IDs ggf. an deine Konfiguration an.

Fehlersuche (Troubleshooting)

  • Entitäten erscheinen nicht in Home Assistant:
    • Überprüfe die MQTT-Broker-Konfiguration in Home Assistant und im WifiWhirl-Modul (Host, Port, Benutzer, Passwort, Basis-Topic).
    • Stelle sicher, dass MQTT Discovery in der Home Assistant MQTT-Integration aktiviert ist.
    • Starte das WifiWhirl-Modul neu, damit es seine Konfigurationsnachrichten erneut an den Broker sendet.
    • Verwende MQTT Explorer, um zu sehen, ob das Modul Nachrichten an den Broker sendet und ob diese unter dem korrekten Discovery-Topic (z.B. homeassistant/sensor/...) erscheinen.
  • Verbindung zum MQTT Broker fehlgeschlagen (im WifiWhirl-Modul):
    • Überprüfe die Erreichbarkeit des Brokers vom Modul aus (Ping, korrekte IP/Hostname).
    • Stelle sicher, dass der im Modul konfigurierte MQTT-Benutzer auf dem Broker existiert und die nötigen Rechte hat.
    • Überprüfe die Firewall-Einstellungen, falls der Broker auf einem anderen Gerät als Home Assistant läuft.

Bei weiteren Fragen oder Problemen, schaue bitte auch in die FAQ oder erstelle ein Issue im WifiWhirl GitHub Repository.