iaiops — robinetterie de données industrielle + dépannage intelligent
Un serveur MCP gouverné exposant 66 outils sur 8 protocoles industriels ainsi qu’une couche d’intelligence transversale. Chaque outil s’exécute à travers le harnais de gouvernance iaiops (audit / budget / niveau de risque / annulation). Lecture d’abord. Les 6 outils d’écriture sont verrouillés par Management of Change : risk=HIGH, dry_run=True par défaut, la CLI nécessite une double confirmation, la valeur avant modification est capturée pour annulation. N’écrivez jamais sur un système de contrôle de production sans autorisation. Prévisualisation validée par simulation ou mock — vérifiez sur un équipement réel. Commencez par protocols_supported pour voir ce qui est configuré et <protocol> doctor pour tester une liaison.
Quand orienter ici
La tâche mentionne : OPC-UA / opc.tcp, Modbus, Siemens S7 / S7-1200/1500, Mitsubishi / MELSEC, MTConnect / surveillance de machines CNC, MQTT / Sparkplug B / Unified Namespace, Allen-Bradley / ControlLogix / CompactLogix / EtherNet-IP, EtherCAT / CoE / SDO / PDO / SOEM, OEE / temps d’arrêt, inventaire d’actifs OT, diagnostic « pas de données / tag périmé », déluge d’alarmes / ISA-18.2.
Outils par protocole
OPC-UA (lecture seule) — endpoints opc.tcp
opcua_server_info— état, informations de build, tableau des espaces de nomsopcua_browse— parcourir l’arborescence de nœuds depuis un node id (profondeur limitée)opcua_read_node— valeur + type de donnée + horodatage source + code d’étatopcua_read_many— lecture par lots de node ids (limité)opcua_subscribe_sample— échantillonnage limité, puis retour (ne boucle jamais)opcua_read_alarms— remontée des alarmes/conditions actives (au mieux)opcua_read_history— Accès Historique (HDA) : historique brut sur une fenêtre [début,fin]health_summary— classer les node-ids par rapport aux seuils d’avertissement/alarmeanomaly_scan— échantillonner un nœud, signaler les valeurs statistiquement aberrantes
Modbus-TCP (lecture seule ici)
modbus_read_holding(FC03),modbus_read_input(FC04),modbus_read_coils(FC01),modbus_read_discrete(FC02) — avec indices de décodagemodbus_health_summary— classer les registres par rapport aux seuils
Siemens S7comm (pyS7 ; S7-300/400/1200/1500)
s7_cpu_info— identité CPU + marche/arrêts7_read_area— lire N éléments d’un type depuis une zone mémoire S7s7_read_db— lire N éléments depuis un bloc de donnéess7_read_many— lecture par lots de chaînes d’adresses pyS7 brutess7_write_db— [ÉCRITURE][ÉLEVÉ][MOC] écrire une valeur dans un DB (désactivé par défaut)
Mitsubishi MC (pymcprotocol 3E ; Q/L/iQ)
mc_cpu_status— type/code CPU MELSECmc_read_words/mc_read_bits— lecture par lots de devices mots/bits depuis un device têtemc_read_many— lecture aléatoire de mots + double-mots dispersés en une requêtemc_write_words— [ÉCRITURE][ÉLEVÉ][MOC] écrire des mots (désactivé par défaut)
MTConnect (lecture seule ; toutes machines-outils CNC)
mtconnect_probe— modèle de l’appareil (devices → components → data items)mtconnect_current— dernière valeur de chaque data item (instantané machine)mtconnect_sample— flux limité d’observations récentesmtconnect_assets— outils de coupe / montages / programmesmtconnect_oee_snapshot— disponibilité / exécution / mode / programme (entrées OEE)
MQTT / Sparkplug B / UNS (paho-mqtt ; décodage complet Tahu protobuf)
mqtt_read_topic— collecte limitée de messages MQTT brutssparkplug_decode_payload— décoder une charge utile Sparkplug B brute en métriquessparkplug_subscribe_sample— échantillonnage limité avec décodage complet + naissance/mort/seqsparkplug_node_list— nœuds périphériques/appareils + état en ligne + état HÔTE principaluns_browse— parcourir l’arborescence de sujets en direct (UNS) sous un filtre (limité)mqtt_publish— [ÉCRITURE][ÉLEVÉ][MOC] publier/commander sur un sujet (désactivé par défaut)
Allen-Bradley EtherNet/IP (pycomm3 ; ControlLogix/CompactLogix)
eip_controller_info— identité du contrôleur (prouve la liaison CIP)eip_list_tags— découvrir la liste des tags du contrôleur (noms/types/structures)eip_read_tag— lire un tag (ou élément de tableau) avec son typeeip_read_many— lecture par lots (paquets multiples automatiques)eip_write_tag— [ÉCRITURE][ÉLEVÉ][MOC] écrire une valeur de tag (désactivé par défaut)
EtherCAT (pysoem/SOEM ; Linux + root/CAP_NET_RAW + NIC dédiée + esclaves réels)
Installation supplémentaire optionnelle pip install iaiops[ethercat] ; aucun simulateur logiciel (matériel uniquement, macOS non supporté). Les outils se dégradent en une erreur pédagogique si pysoem/permission/NIC/bus manquant.
ethercat_master_state— état du maître/compteur de travail + nombre d’esclaves attendus vs trouvésethercat_slaves— scan du bus : énumérer les esclaves (id/vendor/product/rev/addr/AL-state)ethercat_slave_info— un esclave : configuration SM/FMMU + résumé du dictionnaire d’objetsethercat_read_sdo— téléchargement CoE SDO (lecture acyclique d’une entrée OD par boîte aux lettres)ethercat_read_pdo— un instantané cyclique de l’image de données d’entrée d’un esclaveethercat_write_sdo— [ÉCRITURE][ÉLEVÉ][MOC] téléchargement CoE SDO (désactivé par défaut)ethercat_set_state— [ÉCRITURE][ÉLEVÉ][MOC] transition d’état AL (peut DÉMARRER/ARRÊTER le mouvement ; désactivé par défaut)
Intelligence transversale
Diagnostics — parapluie skills : dépannage
diagnose_dataflow— localiser une panne « pas de données » à travers les sauts accessibles d’un endpointhistorian_health— détection de mauvais tag / ligne plate / lacune sur une sériealarm_bad_actors— analyse du déluge d’alarmes ISA-18.2 (taux vs <6/12/30, Pareto des contrevenants, alarmes bavardes, permanentes) sur une liste d’événementstag_health— classer les tags contrevenants par mauvaise qualité / ligne plate / plage / anomalie
Analyse
oee_compute— OEE = Disponibilité × Performance × Qualitédowntime_events— détecter les transitions marche→arrêt, catégoriser les arrêtsoee_multidim— OEE agrégée sur machine × pièce × équipeasset_inventory— identifier activement les endpoints (vendor/model/firmware/protocol) dans un registre d’actifs (découverte active, non passive SPAN/tap)monitor_changes— capturer uniquement les CHANGEMENTS de valeur d’un point sur une fenêtre limitée
Méta / feuille de route
protocols_supported— carte des capacités (protocoles, état, outils, paramètres de connexion)- Feuille de route : protocoles boîte aux lettres EtherCAT EoE/FoE/SoE ; EtherNet/IP PLC-5 / SLC (PCCC), Micro800 ; découverte passive d’actifs ; sécurité des certificats OPC-UA.
Configuration
iaiops init (assistant interactif, invites par protocole) écrit ~/.iaiops/config.yaml ; les identifiants vont dans le stockage chiffré (~/.iaiops/secrets.enc, mot de passe maître via IAIOPS_MASTER_PASSWORD). Exécutez iaiops doctor pour sonder chaque endpoint configuré. La référence complète par protocole, les paramètres de connexion, le guide de test par simulateur et les exemples JSON MCP se trouvent dans le README.
Sécurité
Lecture d’abord. Les 6 outils d’écriture (s7_write_db, mc_write_words, mqtt_publish, eip_write_tag, ethercat_write_sdo, ethercat_set_state) sont par défaut en dry_run=True, nécessitent une double confirmation en CLI, et enregistrent un descripteur d’annulation à partir de la valeur/état avant capturé. Les changements d’état EtherCAT peuvent DÉMARRER ou ARRÊTER le mouvement d’une machine. Ne pas pointer cela vers des systèmes de contrôle de production sans autorisation. Aucun outil ne renvoie de secrets.