ソース情報
- リポジトリ
- 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 industrial-protocolsコマンドは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 | industrial-protocols |
| description | Programmer sous protocoles OPC-UA, Modbus-TCP et MQTT. |
| version | 1.1.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["opc-ua","modbus","mqtt","sparkplug-b","pycomm3","pymodbus","asyncua","industrial-automation"],"related_skills":["simplify-code","plan"]} |
L'informatique industrielle (OT) repose sur des protocoles de communication standardisés pour faire communiquer les automates, les capteurs, les IHM et les systèmes informatiques (SCADA, MES, Cloud).
Cette compétence guide l'agent EVA pour écrire des scripts d'intégration robustes en Python pour collecter et distribuer des données en temps réel en utilisant :
asyncua.pymodbus.paho-mqtt pour les architectures IIoT.À utiliser lorsque l'utilisateur demande :
OPC-UA est le standard moderne orienté objet. En production, les liaisons sont sécurisées par chiffrement et certificats d'authentification (PKI client/serveur).
None, Sign (signature de paquets uniquement), SignAndEncrypt (signature et chiffrement complet des données).Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaOaep).import asyncio
from asyncua import Client
from asyncua.crypto.security_policies import SecurityPolicyBasic256Sha256
async def read_secure_opc_ua():
url = "opc.tcp://192.168.1.100:4840"
client = Client(url=url)
# Configuration de la sécurité avec certificats PKI
# (Requis pour la politique SignAndEncrypt)
try:
await client.set_security(
SecurityPolicyBasic256Sha256,
certificate_path="pki/client_cert.pem",
private_key_path="pki/client_key.pem",
server_certificate_path="pki/server_cert.der"
)
async with client:
node_var = client.get_node("ns=3;s=Moteurs/Moteur1/Vitesse")
valeur = await node_var.get_value()
print("Vitesse actuelle lue de manière sécurisée : ", valeur)
except Exception as e:
print(f"Erreur de sécurité OPC UA : {e}")
if __name__ == "__main__":
asyncio.run(read_secure_opc_ua())
Modbus-TCP utilise des tables d'adresses physiques indexées (Holding Registers, Input Registers, Coils, Discrete Inputs) :
Modbus transmet les données par mots de 16 bits (Word). Les variables 32-bit (Real/Float, DInt) ou 64-bit nécessitent de fusionner plusieurs registres consécutifs et d'adapter le boutisme (Endianness).
from pymodbus.client import ModbusTcpClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
def read_modbus_float():
client = ModbusTcpClient('192.168.1.150', port=502, timeout=2.0)
client.connect()
# Lire 2 registres consécutifs (32 bits au total) à l'offset 100
result = client.read_holding_registers(address=100, count=2, slave=1)
if not result.isError():
# Décodeur de payload binaire
# Configuré pour Big Endian (mots et octets) - Standard Modicon classique
decoder = BinaryPayloadDecoder.fromRegisters(
result.registers,
byteorder=Endian.BIG,
wordorder=Endian.BIG
)
# Décoder en valeur Float 32-bit (Real)
vitesse = decoder.decode_32bit_float()
print(f"Vitesse décodée : {vitesse:.2f} Hz")
else:
print("Erreur de communication Modbus :", result)
client.close()
if __name__ == "__main__":
read_modbus_float()
Sparkplug B est une spécification IIoT définissant un format de payload binaire léger (Protobuf) pour MQTT et assurant le suivi de l'état de connexion des nœuds (NBIRTH, DBIRTH, NDATA, DDATA, NDEATH).
Chaque message contient un horodatage (timestamp), un numéro de séquence (seq) pour valider la continuité des trames, et un tableau d'éléments (metrics) contenant le type de données :
{
"timestamp": 1623956100000,
"seq": 42,
"metrics": [
{
"name": "Atelier1/Moteur1/Vitesse",
"timestamp": 1623956100000,
"type": "Float",
"value": 1450.5
},
{
"name": "Atelier1/Moteur1/Defaut",
"timestamp": 1623956100000,
"type": "Boolean",
"value": false
}
]
}
Pour publier ou souscrire à ces structures, les scripts d'acquisition utilisent des encodeurs/décodeurs Protobuf basés sur le dictionnaire de tags du site.
timeout=2.0 secondes) et encapsuler la connexion dans un bloc try/except.1.45e-38) à la place d'une valeur attendue (ex : 50.0).wordorder=Endian.LITTLE) ou des octets (byteorder=Endian.LITTLE) dans le décodeur de payload binaire.ConnectionRefusedError, exceptions pymodbus et asyncua) sont attrapées et gérées.client.close() ou utilisation de with / async with).Sign ou SignAndEncrypt.