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