ソース情報
- リポジトリ
- 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 ignition-scadaコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?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 | ignition-scada |
| description | Programmer en Jython et configurer Ignition SCADA. |
| version | 1.1.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"EVA":{"tags":["ignition","scada","jython","python-27","perspective","industrial-automation","tags-generation"],"related_skills":["simplify-code","plan","plc-connectivity"]}} |
La plateforme industrielle Ignition par Inductive Automation repose sur un moteur de script utilisant Jython (Python s'exécutant sur la JVM Java). La syntaxe supportée par défaut est celle de Python 2.7.
Cette compétence fournit à l'agent EVA les directives, conventions d'écriture et recettes de code indispensables pour :
À utiliser lorsque l'utilisateur demande de :
system.tag.readBlocking or system.tag.writeBlocking.system.db.runNamedQuery ou requêtes préparées.Ignition exécutant Jython 2.7, l'agent doit proscrire les syntaxes exclusives à Python 3 :
"Valeur : %s" % val ou "Valeur : {}".format(val).numpy ou pandas standards) ne fonctionneront pas sous Jython. Privilégier les classes Java de la JVM importées directement :
from java.util import ArrayList
list_java = ArrayList()
list_java.add("EVA")
Lors de l'écriture sur des tags de commande de type impulsion (ex: boutons Start, Stop, Reset d'un moteur), il convient de set le tag à True puis à False de façon asynchrone pour ne jamais bloquer le thread de rendu de l'interface client (IHM).
import time
startPath = "%s/Commands/Start" % devicePath
system.tag.writeBlocking([startPath], [True])
def release_pulse():
time.sleep(0.5) # Temporisation physique de l'impulsion (500 ms)
system.tag.writeBlocking([startPath], [False])
system.util.invokeAsynchronous(release_pulse)
Les anciennes fonctions system.tag.read et system.tag.write sont obsolètes. Depuis Ignition 8, il est obligatoire d'utiliser les fonctions bloquantes ou asynchrones prenant des listes pour des raisons de performance.
Règle de performance absolue : Ne jamais appeler readBlocking ou writeBlocking à l'intérieur d'une boucle for ou while. Toujours regrouper les chemins dans une liste unique et appeler la fonction une seule fois.
Lecture groupée optimisée :
# Regroupement des chemins dans une liste unique
paths = ["[default]AS660/EPH/660C1_EPH_AgitCtrl/Status", "[default]AS664/EM/664C6_E_B_INLET/Command"]
results = system.tag.readBlocking(paths)
# Lecture des valeurs avec vérification de qualité
if results[0].quality.isGood():
status_val = results[0].value
else:
status_val = None
Écriture groupée optimisée :
paths = ["[default]AS660/EPH/660C1_EPH_AgitCtrl/Status", "[default]AS664/EM/664C6_E_B_INLET/Command"]
values = [2, 1]
# Renvoie une liste de statuts de qualité d'écriture
write_status = system.tag.writeBlocking(paths, values)
for idx, stat in enumerate(write_status):
if not stat.isGood():
system.util.getLogger("EVA_Ignition").warn("Erreur d'écriture sur le tag : " + paths[idx])
Ne jamais concaténer de chaînes pour composer des requêtes SQL. Toujours configurer et appeler des Named Queries précompilées et paramétrées sur la Gateway.
# Appel d'une requête nommée paramétrée
params = {"motorId": 12, "activeStatus": True}
dataset = system.db.runNamedQuery("MonProjetEVA", "Moteurs/GetActiveLogs", params)
# Parcours propre du dataset Ignition
for row in range(dataset.getRowCount()):
msg = dataset.getValueAt(row, "message")
t_stamp = dataset.getValueAt(row, "t_stamp")
Pour éviter de figer l'interface utilisateur lors de tâches lentes (requête SQL complexe, requête HTTP externe), utiliser system.util.invokeAsynchronous pour déléguer le travail à un thread d'arrière-plan, puis mettre à jour l'IHM de manière sécurisée via system.util.invokeLater :
def task_heavy():
# Opération lente d'arrière-plan
import time
time.sleep(2)
res = "Succès"
# Fonction de retour vers le thread graphique principal (IHM)
def update_gui():
# Mise à jour sécurisée du composant
event.source.parent.getComponent('LabelResult').text = res
system.util.invokeLater(update_gui)
# Lancer la tâche asynchrone sans figer l'IHM
system.util.invokeAsynchronous(task_heavy)
Cette compétence intègre un script Python generate_ignition_config.py pour convertir directement le rapport consolidé de l'audit technique d'automatisme en :
tags.json) définissant l'arborescence des dossiers par Station d'Automatisme (AS), divisée en sous-dossiers EPH (Phases) et EM (Équipements) contenant des instances de UDTs standardisés.ignition_sync.py) appliquant les lectures et écritures groupées pour lier les phases aux équipements.Pour appeler le générateur de configuration, exécutez le script d'assistance via l'outil d'exécution de code (execute_code) avec le snippet suivant :
import subprocess
import os
# Définition des chemins
audit_report = "output/audit/2026-06-18_15/audit_report.md" # Remplacer par le chemin réel du rapport généré
out_tags = "output/audit/2026-06-18_15/ignition_tags.json"
out_script = "output/audit/2026-06-18_15/ignition_sync.py"
cmd = [
".venv/Scripts/python.exe",
"skills/industrial/automation/ignition-scada/scripts/generate_ignition_config.py",
"--audit-report", audit_report,
"--out-tags", out_tags,
"--out-script", out_script
]
print("Génération de la configuration Ignition en cours...")
result = subprocess.run(cmd, capture_output=True, text=True)
print(result.stdout)
if result.stderr:
print("Erreurs :", result.stderr)
readBlocking/writeBlocking)._types_/EPH_Template et _types_/EM_Template).