| name | lua-industrial-iot |
| description | Scripter en Lua pour les passerelles IoT et Kepware. |
| version | 1.1.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","windows"] |
| metadata | {"tags":["lua","iot","gateway","kepware","embedded","scripting","edge","network-monitoring"],"related_skills":["industrial-programming-languages","ot-it-integration-languages"]} |
Scripting Lua pour l'IoT Industriel, les Routeurs Cellulaires et Kepware
Cette compétence régit le développement de scripts Lua légers et performants destinés à s'exécuter dans des environnements industriels aux ressources matérielles contraintes (passerelles IoT, routeurs, serveurs de communication Kepware).
1. Modèle d'Objets avec Métatables et Optimisation Mémoire
En Lua, la table ({}) est la structure de données unique. Pour concevoir du code structuré sans gaspiller de mémoire, on utilise les métatables pour implémenter des mécanismes de classes légères.
Sensor = {}
Sensor.__index = Sensor
function Sensor.new(tag, min_val, max_val)
local self = setmetatable({}, Sensor)
self.tag = tag
self.min = min_val
self.max = max_val
return self
end
function Sensor:scale_value(raw_val)
local scaled = self.min + (raw_val / 32767.0) * (self.max - self.min)
return scaled
end
Règle d'Or de Gestion de la RAM (Garbage Collector)
Pour éviter la latence induite par le ramasse-miettes (Garbage Collector - GC) dans les environnements embarqués (par ex. routeurs Teltonika avec 32 Mo de RAM) :
2. Scripting Avancé de Simulation de Données sous Kepware
Kepware intègre Lua pour modéliser des comportements dynamiques de variables sans connecter de véritable automate lors des phases de tests FAT.
if temp_four == nil then
temp_four = 20.0
consigne = 180.0
constante_temps = 0.05
end
local ecart = consigne - temp_four
local variation = ecart * constante_temps
local bruit = (math.random() - 0.5) * 1.0
temp_four = temp_four + variation + bruit
WriteTag("Canal_1.Equipement_1.Temperature_Four", temp_four)
3. Scripts d'Administration et Diagnostic Réseau (Teltonika / OpenWrt)
Les passerelles IoT ou routeurs cellulaires d'atelier (ex: Teltonika RUT240/RUT955) s'appuient sur Lua pour interagir avec le système de configuration unifié UCI et l'API système ubus.
Script de Surveillance WAN avec Alerte MQTT
Ce script s'exécute en tâche périodique (cron) pour vérifier la qualité de la liaison cellulaire et publier des diagnostics.
local http = require("socket.http")
local ltn12 = require("ltn12")
function get_signal_dbm()
local handle = io.popen("gsmctl -q")
local result = handle:read("*a")
handle:close()
local dbm = tonumber(result:match("([^%s]+)"))
return dbm or -113
end
local signal = get_signal_dbm()
local status = "OK"
if signal < -95 then
status = "FAIBLE"
elseif signal < -110 then
status = "DECONNECTE"
end
local payload = string.format('{"gateway_id":"RUT955_Atelier_1", "signal_dbm":%d, "wan_status":"%s"}', signal, status)
local response = {}
_, code = http.request{
url = ,
method = ,
headers = {
[] = ,
[] = (.(payload))
},
source = ltn12.source.(payload),
sink = ltn12.sink.(response)
}
code ~=
.()