Skip to content

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 Recommandation
Acquisition Lecture régulière des registres / trames terrain Adapter la fréquence aux besoins métier réels (5-60 s selon les cas).
Automatisation Exécution de scripts Lua embarqués Lua est recommandé pour sa légèreté et son isolation (sandboxing).
Contrôle à distance Lancement de commandes poussées depuis la console centrale Limiter les scripts concurrents pour préserver les ressources système.
Publication de données Envoi vers la plateforme via AMQP (RabbitMQ) Activer le cache pour assurer la continuité en cas de coupure réseau.

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/configs/example.yaml
iot:
  enabled: true                     # Active/ désactive complètement le plugin (défaut a true, optionnel)
  cache_path: "/tmp/alemca"         # Cache du module iot (défaut a /tmp/alemca, optionnel)

  lua:                              # Automatisation embarquée
    trigger: 5                      # Période d'exécution en s (0 = exécution unique)
    timeout: 0                      # 0 = aucune limite (défaut a 0, optionnel)
    kill_on_trigger: false          # true = kill de l'instance précédente si elle n’est pas terminée (défaut a false, optionnel)
    once: false                     # true = exécution unique (défaut a false, optionnel)

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

  commands:                         # Scripts distants poussés via l'UI (optionnel)
    max_concurrent: 1               # Nombre max de scripts distants pouvant être lancés en parallèle (optionnel)
    folder_path: "/etc/alemca/commands" # Définition du dossier command (optionnel)

  alemca:                           # Lien AMQP vers la plateforme centrale
    client_root: ""                 # Choix du cannal de communication (optionnel)
    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: # Définition des destinations lors de l'utilisation de alemca.write() ou alemca.sendbatch()
      - name: "example_destination" # Spécification du nom de la queue, les champs en dessous sont optionnel et permettent d'affiner le paramétrage en fonction des besoins
        exchange: "example_exchange" # Spécification de l'exchange utilisé pour envoyer des messages (défaut a <name>, optionnel)
        routing_key: "example_routing_key" # Spécification de la routing key utilisé pour envoyer des messages (défaut a <name>, optionnel)
        queue_not_durable: false # Si une queue est durable, lors de nos maintenances (Mardi 00h - 06h), permet d'éviter de recréer la queue (défaut a false, optionnel)
        exchange_type: "direct" # Type d'exchange (défaut a direct, optionnel)

  modules: # Déclaration des modules utilisé par les scripts lua, par exemple ici nous déclarons le module modbus et ping. Voir la documentation lié au 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)

:::tip Quelle section utiliser ? La section lua permet de configurer un seul script. Pour les nouveaux déploiements, préférez lua_scripts qui permet de gérer plusieurs scripts avec des configurations indépendantes. :::

  • path : Chemin du script Lua exécuté localement.
  • trigger : Intervalle (en secondes) entre deux exécutions. Valeurs typiques : 5-60 s selon la criticité des données.
  • timeout : Durée maximale d'exécution. Attention : 0 = illimité, ce qui peut bloquer les ressources en cas de script défaillant.
  • kill_on_trigger : Si true, interrompt le script précédent lorsqu'un nouveau est déclenché. Utile pour les scripts longs qui ne doivent pas s'accumuler.
  • once : Si true, le script n'est exécuté qu'une seule fois au démarrage.

lua_scripts

Section recommandée pour les nouveaux déploiements. Permet de configurer plusieurs scripts Lua avec des paramètres indépendants.

  • name : Identifiant unique du script (utilisé dans les logs et pour le suivi).
  • path : Chemin du script Lua exécuté localement.
  • trigger : Intervalle (en secondes) entre deux exécutions. Valeurs typiques : 5-60 s selon la criticité des données.
  • timeout : Durée maximale d'exécution. Attention : 0 = illimité, ce qui peut bloquer les ressources en cas de script défaillant.
  • kill_on_trigger : Si true, interrompt le script précédent lorsqu'un nouveau est déclenché. Utile pour les scripts longs qui ne doivent pas s'accumuler.
  • once : Si true, le script n'est exécuté qu'une seule fois au démarrage.

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

Configuration de la connexion vers la plateforme centrale Alemca.

  • max_cache_size : Nombre maximum de messages conservés localement en cas de perte réseau. Recommandation : 1024+ pour les environnements à connectivité instable.
  • stay_connected : Si true, maintient une connexion permanente vers la plateforme. Réduit la latence mais consomme un file descriptor en continu. Recommandé pour les remontées fréquentes (< 10 s).
  • destinations : Liste des points de publication vers la plateforme. Chaque destination définit où et comment les données sont routées (exchange, routing_key, etc.).

modules

Cette section configure les modules d'acquisition et de communication accessibles depuis les scripts Lua.

Librairies disponibles par défaut (aucune configuration requise) :

Librairie Description
json Manipulation de données JSON
yaml Manipulation de données YAML
lfs Gestion des fichiers locaux (LuaFileSystem)
base64 Transformation en base64 (encodage/décodage)
md5 Transformation en md5 (encodage/décodage)

Modules chargés par défaut (aucune configuration requise) :

Module Description
alemca Communication avec la plateforme Alemca
config Accès à la configuration de l'agent
filesync Synchronisation de fichiers
netscan Scan réseau

Modules nécessitant une configuration YAML :

Catégorie Modules
Communication industrielle modbus (+ SunSpec), mqtt, serial, opcxmlda
Réseau http, ping, socket, ftp
Matériel gpio, at (commandes AT)
Données influxdb, md5
Système addon

Consultez la documentation des modules pour les détails de configuration de chaque module.