소스 정보
- 저장소
- 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명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? 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.