Aller au contenu

Configuration plugin IoT

Présentation

Le plugin IoT est le pont entre l’agent Alemca et les équipements physiques : capteurs, actionneurs, automates, passerelles, etc.
Il gère :

Fonction Description Opinion
Acquisition Lecture régulière des registres / trames terrain Faites-le tourner à la même cadence que vos exigences métier ; déclencher « toutes les secondes » n’a jamais sauvé un projet.
Automatisation Exécution de scripts Lua embarqués Lua est la bonne option : léger, facile à sandboxer. Fuyez les scripts shell dans ce contexte.
Contrôle à distance Lancement de commandes poussées depuis la console centrale Limitez le nombre de scripts concurrents ; l’embarqué n’aime pas le fork bomb.
Publication de données Envoi vers la plateforme via AMQP (RabbitMQ) Activez la mise en cache ; les réseaux industriels tombent plus souvent qu’on ne l’admet.

Cas d’usage emblématiques

  1. Télémétrie continue : collecter température, pression et états d’E/S toutes les 30 s, remonter en quasi-temps réel au SCADA.
  2. Commande conditionnelle : déclencher une sortie relais via Lua si la température > 50 °C et qu’un opérateur a validé la procédure dans l’UI.
  3. Maintenance préventive : injecter à distance un script Lua qui mesure les temps de cycle, alerte si dérive > 5 %.

Détails de configuration

/etc/alemca/config.yaml
iot:
  enabled: true                     # Active/ désactive complètement le plugin

  lua:                              # Automatisation embarquée
    path: "/etc/alemca/agent.lua"   # Script principal
    trigger: 5                      # Période d'exécution en s (0 = exécution unique)
    timeout: 0                      # 0 = aucune limite
    kill_on_trigger: false          # true = kill de l'instance précédente si elle n’est pas terminée
    once: false                     # true = exécution unique

  lua_scripts:                      # Scripts Lua embarqués
    - name: "script1"               # Nom du script
      trigger: 5                    # Période d'exécution en s (0 = exécution unique)
      timeout: 0                    # 0 = aucune limite
      kill_on_trigger: false        # true = kill de l'instance précédente si elle n’est pas terminée
      once: false                   # true = exécution unique

  commands:                         # Scripts distants poussés via l'UI
    max_concurrent: 1               # Nombre max de scripts distants pouvant être lancés en parallèle
    folder_path: "/etc/alemca/commands"

  alemca:                           # Lien AMQP vers la plateforme centrale
    max_cache_size: 1024            # Nombre max de messages en attente si perte réseau
    stay_connected: false           # true = socket AMQP permanent (consomme un file descriptor)
    destinations:
      - name: "example_destination"
        exchange: "example_exchange"
        routing_key: "example_routing_key"
        queue_not_durable: false
        exchange_type: "direct"

  modules:
    modbus:
      - name: "modbus1"
        transmissionmode: "TCP"
        controller: "tcp://127.0.0.1:502"
        slaveid: 1
    ping:
      - name: "ping1"
        timeout: 10
        count: 5

Explication des sections

  • enabled : Active le plugin IoT.

lua (legacy)

  • path : Chemin du script Lua exécuté localement.
  • trigger : Intervalle (en secondes) entre deux exécutions.
  • timeout : Durée maximale d’exécution (0 = illimité).
  • kill_on_trigger : Si true, interrompt le script précédent lorsqu’un nouveau est déclenché.

lua_scripts

  • name : Nom du script Lua.
  • path : Chemin du script Lua exécuté localement.
  • trigger : Intervalle (en secondes) entre deux exécutions.
  • timeout : Durée maximale d’exécution (0 = illimité).
  • kill_on_trigger : Si true, interrompt le script précédent lorsqu’un nouveau est déclenché.

commands

  • max_concurrent : Nombre maximum de scripts Lua distants pouvant être exécutés en parallèle.
  • folder_path : Dossier où sont stockées les commandes à exécuter.

alemca

  • max_cache_size : Taille maximale du cache local avant envoi.
  • stay_connected : Si activé, la connexion reste ouverte en permanence.
  • destinations : Paramètres de connexion AMQP (nom, exchange, routing key, type d’échange, etc.).

modules

Cette partie configure les modules disponible depuis le Lua. Ces configurations sont spécifiques à chaque module et sont décrites dans la documentation de chaque module. Voir ici pour la liste des modules disponibles.