Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Verwendung einer PLCnext-Steuerung als Smart-Home-Gerät über Home Assistant

Dieses kleine Demoprojekt zeigt, wie man eine PLCnext-Steuerung ganz einfach als Smart-Home-Gerät in der Open-Source-Hausautomatisierungssoftware Home Assistant über die REST-API und Modbus TCP verwenden kann. Mit dem PLCnext-Controller können Sie die Axioline-Komponenten in Ihrer Automatisierung verwenden, um einfach leistungsfähigere Ausgänge als die GPIO-Pins des Raspberry Pi, Temperatursensoren wie Pt100 und Bussysteme wie DALI hinzuzufügen. Alles, was Sie brauchen, ist eine funktionierende Home Assistant-Installation und eine PLCnext-Steuerung mit einem kleinen, aber lauffähigen PLCnext-Projekt.

Voraussetzungen

Bibliotheken:

Home Assistant-Dienste:

Funktionsbeschreibung

Um einen kurzen Überblick über die Möglichkeiten zu geben, einen PLCnext Controller als Smart-Home-Gerät zu verwenden, gibt es ein PLCnext-Projekt, das andere Geräte hart zurücksetzen kann, indem es ihre Versorgungsspannung mit Relais steuert. Die Resets werden durch Befehle ausgelöst, die an einen Telegram Bot gesendet werden, bevor eine E-Mail mit der Information gesendet wird, dass ein Neustart eingeleitet wurde. Dieses Beispiel wird mit zwei verschiedenen Möglichkeiten gezeigt, die PLCnext-Steuerung mit der Home Assistant-Umgebung zu verbinden.

Architektur

Verbindung über Modbus TCP

Beginnend mit der Modbus TCP-Verbindung wird dem PLCnext-Projekt ein Modbus-Server hinzugefügt, indem die Modbus TCPl-Bibliothek verwendet wird. Die Konfiguration ist die gleiche wie im Bibliotheksbeispiel. Die Wahl des richtigen Modbus-Registers hängt von der Art der Daten und ihrer beabsichtigten Verwendung ab. In diesem Fall werden die Variablen auf das Spulenregister gemappt.

Bitte beachten Sie, dass der Modbus-Server nicht mehr als eine Verbindung gleichzeitig unterstützt. Wird also eine Verbindung nicht korrekt beendet, was beim Testen der Verbindung leider manchmal vorkommt, gerät der Server in einen Fehlerzustand und muss manuell neu gestartet werden. Um dies zu vermeiden, wird empfohlen, im PLCnext-Projekt einen automatischen Neustart des Modbus-Servers zu programmieren.

Für den Modbus-Client gibt es im Home Assistant zwei Hauptmöglichkeiten, und es liegt an Ihnen, Ihren Favoriten auszuwählen. Die erste besteht darin, das Node-RED-Add-On und eine der dort verfügbaren Modbus-Bibliotheken zu verwenden. Die intuitivere ist, eine Entität im configuration.yaml zu konfigurieren Ihrer Home Assistant-Umgebung (weitere Informationen). Wie unten gezeigt, wird der Standard-Switch-Dienst verwendet, der eine gängige Methode zum Arbeiten mit booleschen Variablen ist, da er turn_on/turn_off-Funktionalitäten implementiert hat, um die Variablen zu setzen oder zurückzusetzen.

modbus: 
    type: tcp           # using Modbus TCP 
    host: YOUR_SERVER_IP    # fill the server ip address  
    port: 502 
    name: hub1          # could be changed  
switch: 
  - platform: modbus 
    coils: 
      - name: restartMB     # could be changed 
        hub: hub1 
        slave: 1 
        coil: 13            # the register position of the variable 

Wenn Sie sich für die Node-RED-Möglichkeit entscheiden, beachten Sie, dass diese bei Modbus TCP typischerweise unterschiedliche Verbindungen zum Lesen und Schreiben startet, sodass der Modbus-Server wie oben erwähnt in einen Fehlerzustand geht. Um dies zu vermeiden, können Sie in Ihrem PLCnext-Projekt Modbus UDP oder zwei Modbus-Server verwenden, einen zum Lesen und einen zum Schreiben.

Verbindung über REST-API

Die zweite Möglichkeit der Anbindung ist die PLCnext REST-Datenschnittstelle. Diese Schnittstelle bezieht sich auf das PLCnext-HMI, daher muss mindestens eine HMI-Seite in Ihrem PLCnext-Projekt vorhanden sein, auch wenn sie leer ist, um die REST-API verfügbar zu machen. Außerdem müssen die Variablen mit dem HMI-Flag signiert werden. Nähere Informationen finden Sie im PLCnext Info Center.

In diesem Fall wird das Node-RED-Add-On verwendet, um HTTP-Anforderungen auf der Home Assistant-Seite zu generieren. Die Installation des Add-Ons erfolgt, indem Sie dieser und dieser Anleitung folgen. Stellen Sie sicher, dass Sie beide Schritte ausgeführt haben, bevor Sie fortfahren.

Wenn die HMI-Benutzer-Authentifizierung im PLCnext-Projekt aktiviert ist, könnte die Authentifizierung in Node-RED so aussehen:

Der Flow führt die Authentifizierung aus und speichert das Zugriffstoken, um es in späteren Anforderungen zu verwenden. Den genauen Aufbau der HTTP-Requests entnehmen Sie bitte auch der Dokumentation im PLCnext Info Center.

Um Zugriff auf die Daten Ihrer Home Assistant-Umgebung in Node-RED zu erhalten, gibt es mehrere Nodes, die mit dem Node-RED-Add-On geliefert werden. Der kurze Flow unten in der folgenden Abbildung erstellt eine neue Entität in Home Assistant, und im Flow darüber wird diese Entität auf Änderungen überprüft. Wird die Entity auf true gesetzt, wird auch eine Variable in der PLCnext-Steuerung auf true gesetzt und löst einen Reset aus. Da die Neustart-Variable im PLCnext-Projekt nach dem Zurücksetzen automatisch auf „false“ gesetzt wird, wird die Entität im Home Assistant nach einer Verzögerung von 5 Sekunden ebenfalls auf „false“ gesetzt.

Telegramm Bot

Zur Kommunikation mit Home Assistant wird die Telegram Bot API verwendet. Dazu muss ein neuer Bot gemäß dieser Anleitung registriert werden.

telegram_bot:
  - platform: polling
    api_key: YOUR_API_TOKEN
    allowed_chat_ids:
      - YOUR_CHAT_ID_1
      - YOUR_CHAT_ID_2 

Der einfachste Weg, Ihre Chat-ID zu finden, besteht darin, Ihrem Bot eine Nachricht zu schreiben und dann eine HTTP-Anfrage zu starten:

https://api.telegram.org/botYOUR_API_TOKEN/getUpdates

Ein nützliches Beispiel für den Telegram Bot könnte sein, dass er Sie jeden Morgen über die heutigen Wetterbedingungen informiert, sodass Sie einen Hinweis darauf haben, was Sie an diesem Tag anziehen sollten. In diesem Projekt bekommt er eine weitere Aufgabe, eine SPS durch einen Befehl in Telegram hart zurückzusetzen (Taste in den Modbus-Registern drücken). Der Befehl „/MBrestartPLC“ wird an den Bot gesendet und startet ein Automatisierungsskript im Home Assistant, das schließlich den Wert des Modbus-Coil-Registers ändert, und „/RESTrestartPLC“ tut dasselbe unter Verwendung der REST-API.

SMTP

In Home Assistant kann das Simple Mail Transfer Protocol (SMTP) verwendet werden, um E-Mails mit einer Auswahl der in Ihrer Hausautomation verfügbaren Daten zu versenden. Der Dienst kann durch Hinzufügen des folgenden Codes zu configuration.yaml implementiert werden :

notify:
  - name: SMTP_MESSENGER # could be changed
    platform: smtp
    server: SMTP_SERVER # e.g. smtp.gmail.com
    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 # could be changed 

Klicken Sie hier, um weitere Informationen zum SMTP-Dienst in Home Assistant zu erhalten.

Automatisierungen

Wenn alle Dienste und Bibliotheken implementiert und vorbereitet sind, müssen sie kombiniert werden. Dies wird durch die in automations.yaml programmierten Automatisierungen erledigt der Home Assistant-Umgebung. Die Struktur einer Automatisierung ist sehr einfach, wie in der folgenden Tabelle dargestellt. Der Alias ​​ist nur der Name für die Automatisierung im Home Assistant. Der Auslöser ist die Bedingung, die wahr sein muss, um die Automatisierung auszuführen, wie in diesem Fall ein bestimmter Telegrammbefehl, und die Aktion ist die Aufgabe, wie in diesem Fall das Setzen einer Variablen auf wahr und das Senden einer E-Mail.

Modbus TCP REST-API
- id: '1' alias: 'Trigger a reset of a controller via modbus' trigger: platform: event event_type: telegram_command event_data: command: '/MBrestartPLC' action: - service: switch.turn_on entity_id: switch.restartMB - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via modbus!' - id: '2' alias: 'Trigger a reset of a controller via rest api' trigger: platform: event event_type: telegram_command event_data: command: '/RESTrestartPLC' action: - service: switch.turn_on entity_id: switch.restartREST - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via rest!'

Schlussfolgerung

Dieses kleine Demoprojekt beweist, dass es ganz einfach ist, eine PLCnext-Steuerung in eine Hausautomation zu integrieren. Die Verfügbarkeit aller SPS-Daten im Home Assistant ebnet den Weg für Anwendungen, die viel leistungsfähiger sind als dieses Beispiel. Denken Sie an komplexere SPS-Programme, die in Abhängigkeit vom Wetter oder anderen in Home Assistant verfügbaren Daten gesteuert und überwacht werden können.


Industrietechnik

  1. Geräteverwaltung:Mit Millionen intelligenter Zähler Schritt halten
  2. Anwendungen der Heimautomatisierung
  3. Verwendung eines Open-Source-IIoT-Gateways zur Beschleunigung der Modbus-Geräteintegration
  4. 433 MHz Smart Home Controller mit Sensorflare und einem RaspberryPi
  5. Die Kompetenzlücke im Smart Home
  6. Vorteile der Verwendung von VIA in Pads
  7. Verwenden einer erschwinglichen CNC-Maschine zum Metallschneiden zu Hause
  8. Remote-gRPC mit grpcurl
  9. Verwalten eines PLCnext Control-Geräts über SNMP
  10. apt(-get) Paketmanager auf PLCnext installieren