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
- 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.
- 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.
- 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.