소스 정보
- 저장소
- JohnNuwan/EVA_CORE
- 최근 소스 활동
- 2026년 7월 18일 08:30
- 감지된 SKILL.md 언어
- 프랑스어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill lua-industrial-iot명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
SOC 직업 분류 기준
SKILL.md 표시 중
| 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"]} |
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).
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.
-- Définition d'une classe de capteur
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)
-- Conversion d'une valeur brute 0-32767 (PLC) vers la plage réelle
local scaled = self.min + (raw_val / 32767.0) * (self.max - self.min)
return scaled
end
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) :
-- Ajustement de l'agressivité du GC
collectgarbage("setpause", 100) -- Reprise immédiate du GC
collectgarbage("setstepmul", 200) -- Vitesse d'exécution double
Kepware intègre Lua pour modéliser des comportements dynamiques de variables sans connecter de véritable automate lors des phases de tests FAT.
-- Script Kepware exécuté cycliquement pour simuler la température d'un four
-- Les variables d'état persistantes doivent être déclarées au niveau global
if temp_four == nil then
temp_four = 20.0 -- Température initiale
consigne = 180.0 -- Consigne thermique
constante_temps = 0.05 -- Inertie thermique
end
-- Algorithme de transfert thermique simple (premier ordre)
local ecart = consigne - temp_four
local variation = ecart * constante_temps
-- Ajout d'une fluctuation aléatoire simulant du bruit de mesure (ex: +/- 0.5 °C)
local bruit = (math.random() - 0.5) * 1.0
temp_four = temp_four + variation + bruit
-- Assignation de la valeur simulée au Tag Kepware
-- Remarque : La fonction d'écriture dépend du runtime de Kepware (ex: WriteTag)
WriteTag("Canal_1.Equipement_1.Temperature_Four", temp_four)
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.
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")
-- Fonction pour lire le niveau de signal réseau via la commande CLI du modem
function get_signal_dbm()
local handle = io.popen("gsmctl -q") -- Commande spécifique Teltonika
local result = handle:read("*a")
handle:close()
local dbm = tonumber(result:match("([^%s]+)"))
return dbm or -113 -- Valeur minimale par défaut en cas d'échec
end
local signal = get_signal_dbm()
local status = "OK"
if signal < -95 then
status = "FAIBLE"
elseif signal < -110 then
status = "DECONNECTE"
end
-- Envoi d'une alerte JSON au serveur central
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 ~=
.()