PLCnext-Controller nahtlos an Home Assistant anbinden für Smart-Home-Steuerung
Dieses Demo-Projekt zeigt, wie einfach ein PLCnext-Controller als Smart-Home-Gerät in der Open-Source-Home-Automation-Software Home Assistant über REST-API und Modbus TCP genutzt werden kann. Mit dem PLCnext-Controller können Sie Axioline-Komponenten in Ihre Automatisierung einbinden, um leistungsstärkere Ausgänge als die GPIO-Pins des Raspberry Pi, Temperatursensoren wie Pt100 und Bussysteme wie DALI hinzuzufügen. Benötigt werden eine funktionierende Home-Assistant-Installation und ein PLCnext-Controller mit einem kleinen, lauffähigen PLCnext-Projekt.
Voraussetzungen
- Home Assistant Core 2021.1.5
- Balena
- PLCnext Engineer 2020.6
- AXC F 2152FW 2020.0 LTS
- Raspberry Pi 2 Image (Start kann bis zu einer Stunde dauern)
Bibliotheken:
- Modbus_TCP (Build 8) für PLCnext Engineer
Home Assistant Services:
- Telegram
- SMTP
Funktionsbeschreibung
Um einen Überblick über die Möglichkeiten der Nutzung eines PLCnext-Controllers als Smart-Home-Gerät zu geben, existiert ein PLCnext-Projekt, das andere Geräte durch Steuerung ihrer Versorgungsspannung per Relais hart zurücksetzen kann. Die Resets werden durch Befehle ausgelöst, die an einen Telegram-Bot gesendet werden, bevor eine E-Mail mit der Information versendet wird, dass ein Neustart initiiert wurde. Dieses Beispiel zeigt zwei verschiedene Wege, den PLCnext-Controller an die Home-Assistant-Umgebung anzubinden.
Architektur

Anbindung über Modbus TCP
Beginnend mit der Modbus-TCP-Verbindung wird dem PLCnext-Projekt ein Modbus-Server mithilfe der Modbus-TCP-Bibliothek hinzugefügt. Die Konfiguration entspricht dem Bibliotheksbeispiel. Die Wahl des richtigen Modbus-Registers hängt von der Art der Daten und deren Verwendungszweck ab. In diesem Fall werden die Variablen auf das Coil-Register abgebildet.
Wichtig: Der Modbus-Server unterstützt nicht mehr als eine Verbindung gleichzeitig. Wenn eine Verbindung nicht korrekt beendet wird – was beim Testen leider manchmal passiert –, gerät der Server in einen Fehlerzustand und muss manuell neu gestartet werden. Um dies zu vermeiden, wird empfohlen, einen automatischen Neustart des Modbus-Servers im PLCnext-Projekt zu programmieren.
Für den Modbus-Client gibt es in Home Assistant zwei Hauptmöglichkeiten: den Node-RED-Add-on mit einer der dort verfügbaren Modbus-Bibliotheken oder die Konfiguration einer Entität in der configuration.yaml der Home-Assistant-Umgebung (weitere Informationen). Wie unten gezeigt wird der Standard-Switch-Service verwendet, eine gängige Methode für boolesche Variablen, da er turn_on/turn_off-Funktionalitäten zum Setzen oder Zurücksetzen der Variablen implementiert.
modbus:
type: tcp
host: YOUR_SERVER_IP
port: 502
name: hub1
switch:
- platform: modbus
coils:
- name: restartMB
hub: hub1
slave: 1
coil: 13
Wird Node-RED gewählt, beachten Sie, dass es typischerweise separate Verbindungen für Lesen und Schreiben mit Modbus TCP öffnet, sodass der Modbus-Server in den genannten Fehlerzustand gerät. Um dies zu vermeiden, können Sie Modbus UDP oder zwei Modbus-Server im PLCnext-Projekt verwenden – einen für Lesen, einen für Schreiben.
Anbindung über REST API
Die zweite Möglichkeit ist die PLCnext-REST-Datenschnittstelle. Diese ist mit dem PLCnext HMI verknüpft, daher muss im PLCnext-Projekt mindestens eine HMI-Seite vorhanden sein (auch wenn sie leer ist), damit die REST-API verfügbar wird. Zudem müssen die Variablen mit dem HMI-Flag gekennzeichnet sein. Detaillierte Informationen finden Sie im PLCnext Info Center.
Hier wird der Node-RED-Add-on verwendet, um auf der Home-Assistant-Seite HTTP-Anfragen zu generieren. Die Installation erfolgt gemäß dieser und dieser Anleitung. Stellen Sie sicher, dass beide Schritte ausgeführt wurden.
Falls die HMI-Benutzerauthentifizierung im PLCnext-Projekt aktiviert ist, könnte die Authentifizierung in Node-RED so aussehen:

Der Flow führt die Authentifizierung durch und speichert das Zugriffstoken für spätere Anfragen. Die genaue Struktur der HTTP-Anfragen entnehmen Sie bitte der Dokumentation im PLCnext Info Center.
Um auf die Daten der Home-Assistant-Umgebung in Node-RED zuzugreifen, stehen mehrere Nodes zur Verfügung, die mit dem Node-RED-Add-on mitgeliefert werden. Der kurze Flow am unteren Rand der folgenden Abbildung erstellt eine neue Entität in Home Assistant und prüft im oberen Flow Änderungen an dieser Entität. Wird die Entität auf true gesetzt, wird auch eine Variable im PLCnext-Controller auf true gesetzt und löst einen Reset aus. Da die Reset-Variable im PLCnext-Projekt nach dem Reset automatisch auf false zurückgesetzt wird, wird die Entität in Home Assistant nach einer Verzögerung von 5 Sekunden ebenfalls auf false gesetzt.

Telegram Bot
Für die Kommunikation mit Home Assistant wird die Telegram Bot API verwendet. Dazu muss ein neuer Bot registriert werden (Anleitung).
telegram_bot:
- platform: polling
api_key: YOUR_API_TOKEN
allowed_chat_ids:
- YOUR_CHAT_ID_1
- YOUR_CHAT_ID_2
Die einfachste Methode, die eigene Chat-ID zu finden: Dem Bot eine Nachricht schreiben und dann folgenden HTTP-Request aufrufen:
https://api.telegram.org/botYOUR_API_TOKEN/getUpdates
Ein nützliches Beispiel: Der Bot informiert jeden Morgen über die Wetterbedingungen. In diesem Projekt erhält er eine weitere Aufgabe: Einen PLC per Befehl in Telegram hart zurückzusetzen (Button in den Modbus-Registern drücken). Der Befehl /MBrestartPLC startet ein Automatisierungsskript in Home Assistant, das schließlich den Modbus-Coil-Register-Wert ändert; /RESTrestartPLC bewirkt dasselbe über die REST-API.
SMTP
In Home Assistant kann das Simple Mail Transfer Protocol (SMTP) genutzt werden, um E-Mails mit einer Auswahl der in der Heimautomatisierung verfügbaren Daten zu versenden. Der Service wird durch Hinzufügen folgenden Codes zur configuration.yaml implementiert:
notify:
- name: SMTP_MESSENGER
platform: smtp
server: SMTP_SERVER
port: 587
timeout: 15
sender: YOUR_EMAIL_ADRESS
encryption: starttls
username: YOUR_USERNAME
password: YOUR_PASSWORD
recipient:
- EMAIL_ADRESS_OF_THE_RECIPIENT
sender_name: My Home Assistant
Weitere Informationen zum SMTP-Service in Home Assistant finden Sie hier.
Automatisierungen
Sind alle Services und Bibliotheken implementiert und vorbereitet, werden sie über Automatisierungen kombiniert, die in der automations.yaml der Home-Assistant-Umgebung programmiert sind. Die Struktur ist einfach: Der Alias ist der Name der Automatisierung, der Trigger die Bedingung (z. B. ein bestimmter Telegram-Befehl), die Action die Aufgabe (z. B. Variable setzen und E-Mail senden).
| Modbus TCP | REST API |
|---|---|
- id: '1' |
- id: '2' |
Fazit
Dieses Demo-Projekt beweist, dass die Integration eines PLCnext-Controllers in eine Heimautomatisierung recht einfach ist. Die Verfügbarkeit aller PLC-Daten in Home Assistant ebnet den Weg für Anwendungen, die weit mächtiger sind als dieses Beispiel – denken Sie an komplexere PLC-Programme, die in Abhängigkeit von Wetterdaten oder anderen in Home Assistant verfügbaren Informationen gesteuert und überwacht werden können.
Industrietechnik
- Device Management: Skalierung von Smart Meter Deployments über Millionen Geräte
- Wie Smart Home Technologie den Alltag transformiert
- Modbus-Geräteintegration mit Open-Source-IIoT-Edge-Gateway beschleunigen
- 433 MHz Smart-Home-Controller mit Sensorflare und Raspberry Pi selbst bauen
- Smart Home Skills Gap überbrücken: Warum Großbritannien hinter Europa zurückbleibt
- Warum Via-in-Pad die PCB-Leistung verbessert: Hauptvorteile
- Günstige Desktop-CNC-Maschinen für präzises Metallschneiden zu Hause
- Sicheren Remote-gRPC-Zugriff mit grpcurl auf PLCnext-Geräten
- PLCnext Control-Geräte mit SNMP optimieren: Praktischer Leitfaden
- APT-Paketmanager auf PLCnext Linux installieren: Schritt-für-Schritt-Anleitung