Smart Home · Wago SPS · Modbus TCP · Kärnten

Home Assistant + Wago SPS: Raffstoresteuerung via Modbus TCP

Wer sein Eigenheim mit einer professionellen Wago-SPS ausgestattet hat, steht oft vor einer Herausforderung: Die Anlage läuft zuverlässig, aber eine moderne Smart-Home-Oberfläche fehlt. Home Assistant bietet über Modbus TCP eine elegante Lösung – ohne bestehende Elektroinstallationen anzutasten.

Ing. Dipl.-Ing. Thomas Kohlweiss
Mai 2026
ca. 10 Min. Lesezeit
Praxis-Anleitung
Jalousien mit Sonnenschutz – Raffstoresteuerung via Home Assistant und Wago SPS, Kärnten

Foto: Nameless Photos / Unsplash

Voraussetzungen

Hardware

  • Wago SPS: z. B. Wago 750-880 (Ethernet-Koppler mit Modbus TCP)
  • Netzwerk: SPS und Home Assistant im selben LAN
  • Home Assistant: aktuell installiert (Raspberry Pi, Proxmox oder NAS)

Kenntnisse

  • Grundlegende Modbus-Kenntnisse (Register, Coils)
  • YAML-Konfiguration in Home Assistant
  • Zugang zur Wago-Programmierung (CODESYS / Wago e!COCKPIT)

Modbus TCP – kurz erklärt

Modbus TCP ist ein industrielles Kommunikationsprotokoll über Ethernet. Es kennt vier Objekttypen. Die Wago 750-880 arbeitet als Modbus TCP Slave, Home Assistant als Master.

Typ Beschreibung Zugriff
Coils 1-Bit Ausgänge (TRUE/FALSE) Lesen + Schreiben
Discrete Inputs 1-Bit Eingänge Nur Lesen
Holding Registers 16-Bit Wertregister Lesen + Schreiben
Input Registers 16-Bit Messwerte Nur Lesen
01

Wago SPS vorbereiten

Modbus TCP aktivieren

In Wago e!COCKPIT bzw. im Koppler-Webinterface muss Modbus TCP aktiviert sein. Die Standardeinstellungen:

Port: 502 Unit-ID / Slave-ID: 1

Speicheradressen festlegen

In der Wago-SPS werden Variablen über Speicheradressen angesprochen:

  • %MX0.x Bit-Merker (werden als Coils über Modbus lesbar/schreibbar)
  • %MD1, %MD2 ... Double-Word Merker (32-Bit, als Holding Registers verfügbar)

Wichtig: Float32 und Word-Swap

Wago-Floatwerte (REAL) werden als Float32 über zwei aufeinanderfolgende Holding Register übertragen – in Wago-eigener Bytereihenfolge: Word-Swap (höheres Word zuerst).

Adressberechnung

%MDn entspricht der Modbus-Registeradresse 12288 + n×2. Beispiel für 15 Raffstore-Positionen:

%MD1  → Adresse 12290  (Position Raffstore 1, REAL 0.0–100.0 %)
%MD2  → Adresse 12292  (Position Raffstore 2)
%MD3  → Adresse 12294  (Position Raffstore 3)
...
%MD15 → Adresse 12318  (Position Raffstore 15)

Für die genaue Coil-Adressberechnung steht unser kostenloser Online-Rechner bereit.

02

Home Assistant konfigurieren

Modbus-Verbindung in configuration.yaml

In configuration.yaml (oder einer eingebundenen Paketdatei) wird die Verbindung definiert:

# configuration.yaml
modbus:
  - name: wago_sps
    type: tcp
    host: 192.168.0.111
    port: 502
    timeout: 5
    delay: 0

Positions-Sensoren (Float32, Holding Registers)

Rückmeldung der Raffstore-Position aus der SPS – der Parameter swap: word ist bei Wago-Steuerungen zwingend erforderlich:

    sensors:
      - name: "Position OG Zimmer Süd"
        address: 12290
        slave: 1
        input_type: holding
        data_type: float32
        swap: word          # Pflicht bei Wago!
        scan_interval: 5
        unit_of_measurement: "%"

      - name: "Position OG Bad"
        address: 12298
        slave: 1
        input_type: holding
        data_type: float32
        swap: word
        scan_interval: 5
        unit_of_measurement: "%"

Hinweis zu device_class

Bei Prozentwerten kein device_class: distance verwenden – das erzeugt Warnmeldungen in den HA-Logs. Einfach weglassen.

Steuer-Switches (Coils, Hoch/Runter)

Fahrbefehle an die SPS werden als Modbus-Coils definiert:

    switches:
      - name: "Raffstore OG Süd Hoch"
        address: 12289
        slave: 1
        write_type: coil

      - name: "Raffstore OG Süd Runter"
        address: 12290
        slave: 1
        write_type: coil

Besonderheit: überlappende Adressen

Coils und Holding Registers können bei Wago dieselben Zahlenadressen tragen – das ist kein Fehler. Beide liegen in eigenen Adressräumen und überlappen sich nicht.

03

Scripts für die Motorsteuerung

Ein einfacher switch.turn_on / turn_off reicht nicht aus – die Motoren müssen nach der Fahrzeit wieder abgeschaltet werden. Das erledigen Scripts mit delay:

Komplett Runter + Lamellen verstellen

script:
  raffstore_og_sued_zu:
    alias: "OG Süd – Komplett Runter"
    sequence:
      - service: switch.turn_on
        target:
          entity_id: switch.raffstore_og_sued_runter
      - delay:
          milliseconds: 1200   # Anlauf-Impuls
      - delay:
          seconds: 30          # Volle Fahrzeit
      - service: switch.turn_off
        target:
          entity_id: switch.raffstore_og_sued_runter

  raffstore_og_sued_lamellen:
    alias: "OG Süd – Lamellen verstellen"
    sequence:
      - service: switch.turn_on
        target:
          entity_id: switch.raffstore_og_sued_runter
      - delay:
          milliseconds: 150    # Kurzer Impuls für Lamellen
      - service: switch.turn_off
        target:
          entity_id: switch.raffstore_og_sued_runter

Stop-Funktion mit input_boolean

Um einen intelligenten Stopp-Taster zu realisieren, wird der Fahrstatus mit einem input_boolean verfolgt. Das Script prüft dann: Fährt der Raffstore gerade → kurzer Stopp-Impuls (0,1 s). Steht er → normale Fahrt starten.

input_boolean:
  raffstore_og_sued_faehrt:
    name: "OG Süd – fährt gerade"
    initial: false
04

Packages für Übersichtlichkeit

Bei 15 oder mehr Raffstores wird die Konfiguration schnell unübersichtlich. Home Assistant unterstützt Packages – damit kann jeder Raffstore in eine eigene YAML-Datei ausgelagert werden.

Verzeichnisstruktur

packages/
├── raffstore_gesamt.yaml          # Modbus-Verbindung + alle Sensoren
├── raffstore_og_sued.yaml         # OG Zimmer Süd: input_boolean + scripts
├── raffstore_og_bad.yaml          # OG Bad
├── raffstore_ug_wohnzimmer.yaml   # UG Wohnzimmer
└── ...

Packages in configuration.yaml einbinden

homeassistant:
  packages: !include_dir_named packages/

Datenfluss im Überblick

Steuerung (Befehl)

Lovelace-Button
Script
switch.turn_on → Modbus Coil
Wago SPS empfängt Befehl
Motor fährt
delay (Fahrzeit)
switch.turn_off → Motor stoppt

Rückmeldung (Position)

Wago SPS berechnet Position
0–100 % als REAL (Float32)
Schreibt in Holding Register %MD1..15
HA liest alle 5 Sekunden
swap: word dekodiert Float32
Sensor-Entität mit Positionswert

Häufige Probleme und Lösungen

Falscher Positionswert (z. B. −0.0 oder riesige Zahl)

Ursache: swap: word fehlt oder ist falsch gesetzt

Lösung: In der Sensor-Definition swap: word ergänzen

Sensor zeigt immer 0

Ursache: Falsche Slave-ID oder Register-Adresse

Lösung: Mit modpoll oder einem Online-Tester Adresse / Slave-ID direkt an der SPS verifizieren

Warnmeldungen im HA-Log (distance + %)

Ursache: device_class: distance ist mit % inkompatibel

Lösung: device_class weglassen oder explizit auf None setzen

Coil bleibt dauerhaft aktiv – Motor läuft endlos

Ursache: switch.turn_off im Script wird nicht ausgeführt (Fehler oder HA-Neustart)

Lösung: Watchdog in der SPS: Ausgang nach max. 60 s automatisch abschalten

Erweiterungen: Automationen

Sobald die Grundintegration funktioniert, lassen sich komfortabel Automationen ergänzen:

Sonnenschutz

Raffstore automatisch schließen, wenn Sonne über X° und Außentemperatur > 25 °C.

Windschutz

Alle Raffstores öffnen bei Windgeschwindigkeit > 50 km/h – Sensor z. B. via Wetterstation.

Zeitprogramm

Morgens automatisch öffnen, abends schließen – angepasst an Sonnenauf- und -untergang.

Präsenzsteuerung

Beschattung nur aktivieren, wenn niemand auf dem Balkon oder der Terrasse ist.

Fazit

Die Kombination Wago SPS + Home Assistant via Modbus TCP ist eine leistungsstarke und zuverlässige Lösung für die Gebäudeautomation. Die Wago-Anlage läuft als industrielle Steuerung weiterhin unabhängig, Home Assistant ergänzt eine moderne Benutzeroberfläche, Sprachsteuerung und Automationslogik.

Die wichtigsten Punkte zum Merken:

  • swap: word bei allen Float32-Werten von Wago-Steuerungen
  • Coils und Holding Registers haben eigene Adressräume – keine Verwechslung
  • Scripts mit delay für die Motorsteuerung statt einfacher Schalter
  • Packages für übersichtliche Konfiguration bei vielen Aktoren
  • Watchdog in der SPS als Sicherheitsnetz gegen hängende Ausgänge

Dieser Beitrag entstand auf Basis einer realen Raffstore-Installation mit Wago 750-880 und Home Assistant.

Wago + Home Assistant in Kärnten umsetzen?

Bei Fragen zur Umsetzung stehe ich als IT-Dienstleister in Kärnten gerne zur Verfügung – vor Ort oder per Fernwartung.

Hilfe & Support

Nicht gefunden, wonach Sie suchen?

Falls die Angebote auf dieser Seite Ihre Frage nicht beantwortet haben, kontaktieren Sie uns direkt – wir helfen persönlich weiter.

Direkt erreichbar

Rückruf-Service

Wir rufen Sie zurück – teilen Sie uns Ihre Telefonnummer und die gewünschte Anrufzeit mit.

Rückruf anfordern

Erreichbar

Mo – Do:  08:00 – 18:00

Fr:         08:00 – 15:00