Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Utilisation d'un contrôleur PLCnext comme appareil domestique intelligent via Home Assistant

Ce petit projet de démonstration montre comment utiliser facilement un contrôleur PLCnext en tant qu'appareil domestique intelligent dans le logiciel domotique open source Home Assistant via l'API REST et Modbus TCP. Avec le contrôleur PLCnext, vous pouvez utiliser les composants Axioline dans votre automatisation pour ajouter facilement des sorties plus puissantes que les broches GPIO du Raspberry Pi, des capteurs de température comme Pt100 et des systèmes de bus comme DALI. Tout ce dont vous avez besoin est une installation Home Assistant fonctionnelle et un contrôleur PLCnext avec un projet PLCnext petit mais exécutable.

Prérequis

Bibliothèques :

Services d'aide à domicile :

Description de la fonctionnalité

Pour donner un bref aperçu des possibilités d'utilisation d'un PLCnext Controller en tant qu'appareil domestique intelligent, il existe un projet PLCnext qui peut réinitialiser d'autres appareils en contrôlant leur tension d'alimentation avec des relais. Les réinitialisations sont déclenchées par des commandes qui sont envoyées à un Telegram Bot, avant qu'un e-mail ne soit envoyé avec l'information qu'un redémarrage a été lancé. Cet exemple sera présenté avec deux manières différentes de connecter le contrôleur PLCnext à l'environnement Home Assistant.

Architecture

Connexion via Modbus TCP

A partir de la connexion Modbus TCP, un serveur Modbus est ajouté au projet PLCnext en utilisant la bibliothèque Modbus TCP. La configuration est la même que dans l'exemple de bibliothèque. Le choix du bon registre Modbus dépend du type de données et de la manière dont elles sont destinées à être utilisées. Dans ce cas, les variables sont mappées au registre de la bobine.

Veuillez faire attention au fait que le serveur Modbus ne prend pas en charge plus d'une connexion à la fois. Ainsi, si une connexion ne se termine pas correctement, ce qui arrive malheureusement parfois lors du test de la connexion, le serveur entrera dans un état d'erreur et devra être redémarré manuellement. Pour éviter cela, il est recommandé de programmer un redémarrage automatique du serveur Modbus dans le projet PLCnext.

Pour le client Modbus, il existe deux possibilités principales dans Home Assistant et c'est à vous de choisir votre favori. La première consiste à utiliser le module complémentaire Node-RED et l'une des bibliothèques Modbus qui y sont disponibles. Le plus intuitif est de configurer une entité dans le configuration.yaml de votre environnement Home Assistant (plus d'informations). Comme indiqué ci-dessous, le service de commutation standard est utilisé, ce qui est une manière courante de travailler avec des variables booléennes, car il a implémenté des fonctionnalités turn_on/turn_off pour définir ou réinitialiser les variables.

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 

Si vous choisissez la possibilité Node-RED, sachez qu'il démarre généralement différentes connexions pour la lecture et l'écriture avec Modbus TCP, de sorte que le serveur Modbus passe dans un état d'erreur comme mentionné ci-dessus. Pour éviter cela, vous pouvez utiliser Modbus UDP ou deux serveurs Modbus dans votre projet PLCnext, un pour la lecture et un pour l'écriture.

Connexion via l'API REST

La deuxième possibilité de connexion est l'interface de données PLCnext REST. Cette interface est liée à l'IHM PLCnext, il est donc nécessaire d'avoir au moins une page IHM dans votre projet PLCnext, même si elle est vide, afin de rendre disponible l'API REST. De plus, les variables doivent être signées avec le drapeau HMI. Pour plus d'informations, veuillez consulter le centre d'informations PLCnext.

Dans ce cas, le module complémentaire Node-RED est utilisé pour générer des requêtes HTTP du côté de Home Assistant. L'installation de l'add-on se fait en suivant this et this instructions. Assurez-vous d'avoir effectué les deux étapes avant de continuer.

Si l'authentification de l'utilisateur IHM dans le projet PLCnext est activée, l'authentification dans Node-RED pourrait ressembler à ceci :

Le flux exécute l'authentification et stocke le jeton d'accès pour l'utiliser dans les demandes ultérieures. Pour la structure exacte des requêtes HTTP, veuillez également consulter la documentation dans le PLCnext Info Center.

Pour accéder aux données de votre environnement Home Assistant dans Node-RED, plusieurs nœuds sont fournis avec le module complémentaire Node-RED. Le flux court au bas de la figure suivante crée une nouvelle entité dans Home Assistant et dans le flux au-dessus, cette entité est vérifiée pour les modifications. Si l'entité est définie sur vrai, une variable dans le contrôleur PLCnext est également définie sur vrai et déclenche une réinitialisation. Étant donné que la variable de redémarrage dans le projet PLCnext est automatiquement définie sur faux après la réinitialisation, l'entité dans Home Assistant est également définie sur faux après un délai de 5 secondes.

Bot télégramme

Pour communiquer avec Home Assistant, l'API Telegram Bot est utilisée. Pour l'utiliser, un nouveau bot doit être enregistré en suivant cette instruction.

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

Le moyen le plus simple de trouver votre identifiant de chat est d'écrire un message à votre bot, puis de lancer la requête http :

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

Un exemple utile pour le Telegram Bot pourrait être qu'il vous informe chaque matin des conditions météorologiques d'aujourd'hui, afin que vous ayez une indication de ce que vous devriez porter ce jour-là. Dans ce projet, il obtient une autre tâche, réinitialiser un automate (appuyez sur le bouton dans les registres Modbus) par une commande dans Telegram. La commande "/MBrestartPLC" est envoyée au bot et démarre un script d'automatisation dans Home Assistant, qui modifie finalement la valeur du registre de bobine Modbus et "/RESTrestartPLC" fait de même en utilisant l'API REST.

SMTP

Dans Home Assistant, le protocole SMTP (Simple Mail Transfer Protocol) peut être utilisé pour envoyer des e-mails avec une sélection des données disponibles dans votre domotique. Le service peut être implémenté en ajoutant le code suivant au configuration.yaml :

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 

Cliquez ici pour obtenir plus d'informations sur le service SMTP dans Home Assistant.

Automatisations

Si tous les services et bibliothèques sont implémentés et préparés, ils doivent être combinés. Ceci est fait par les automatismes qui sont programmés dans le automations.yaml de l'environnement Home Assistant. La structure d'un automatisme est très simple comme le montre le tableau ci-dessous. L'alias n'est que le nom de l'automatisation dans Home Assistant. Le déclencheur est la condition qui doit être vraie pour exécuter l'automatisation, comme une certaine commande de télégramme utilisée dans ce cas, et l'action est la tâche, comme dans ce cas, définir une variable sur vrai et envoyer un e-mail.

Modbus TCP API REST
- 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!'

Conclusion

Ce petit projet de démonstration prouve qu'il est assez simple d'intégrer un contrôleur PLCnext dans une domotique. La disponibilité de toutes les données de l'automate dans Home Assistant ouvre la voie à des applications beaucoup plus puissantes que cet exemple. Pensez à des programmes PLC plus complexes qui peuvent être contrôlés et surveillés en fonction de la météo ou d'autres données disponibles dans Home Assistant.


Technologie industrielle

  1. Gestion des appareils :suivre le rythme des millions de compteurs intelligents
  2. Applications de la domotique
  3. Contrôleur Smart Home 433MHz avec Sensorflare et RaspberryPi
  4. L'écart de compétences dans la maison intelligente
  5. Avantages de l'utilisation de VIA dans les pads
  6. Utilisation d'une machine CNC abordable pour la découpe de métal à la maison
  7. gRPC distant à l'aide de grpcurl
  8. Gestion d'un équipement PLCnext Control via SNMP
  9. Installation du gestionnaire de packages apt(-get) sur PLCnext