---
title: "Le bon retrofit commence par ne pas toucher à la commande"
locale: "fr"
url: "https://irz.fr/fr/articles/edge-link-read-before-write-fr"
markdown_url: "https://irz.fr/fr/articles/edge-link-read-before-write-fr.md"
category: "tech"
tags: ["industrie", "retrofit", "Arduino UNO Q", "PLC", "IIoT", "securite OT"]
published_at: "2026-08-20T10:16:00.000Z"
author: "Camille Morel"
translation: "https://irz.fr/en/articles/edge-link-read-before-write-en.md"
---

# Le bon retrofit commence par ne pas toucher à la commande

Edge Link montre comment ajouter télémétrie, UNS et IA locale à une machine ancienne. Son prototype est surtout montant : la partie commande distante reste précisément celle qu’il ne faut pas banaliser.

Une machine-outil de vingt ans peut être parfaitement capable de produire, alors même qu’elle reste incapable d’expliquer ce qu’elle fait à un dashboard moderne. C’est là que le retrofit devient séduisant : garder le PLC, ajouter un petit boîtier sur le rail DIN et extraire les mesures utiles sans remplacer une commande qui fonctionne encore.

**Edge Link**, construit par Mukesh Sankhla autour d’un Arduino UNO Q, montre exactement cette idée.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb) Mais son prototype révèle aussi la frontière qu’un article enthousiaste peut facilement faire disparaître : **lire une vieille machine et lui donner des ordres à distance sont deux projets différents**.

J’ai audité le tutoriel et le dépôt public au commit `2047540`, et la démo actuelle se tient bien comme passerelle de télémétrie et plateforme d’analyse locale, tandis que le code publié ne ferme pas encore une boucle de commande avec un PLC industriel réel.

## Ce qui tourne

Le boîtier tient sur un rail DIN et, à l’intérieur, l’UNO Q combine un microprocesseur Qualcomm capable d’exécuter Linux avec un microcontrôleur STM32U585 chargé des interactions plus proches du matériel.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)[8](https://docs.arduino.cc/hardware/uno-q/)

Cette séparation convient bien au rôle imaginé : le MCU peut s’occuper des entrées, sorties et communications déterministes, tandis que la partie Linux gère Python, la télémétrie, l’interface Web, le cloud et les modèles Edge Impulse.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)

Le prototype possède aussi des LED d’état et un bornier six voies. La nomenclature du tutoriel relie ce bornier à **Rx, Tx, deux masses, VIN 7–24 V et 5 V**.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb) Ce détail compte : l’appareil démontré expose une liaison série logique. Un raccordement RS-485, RS-232 ou CAN réel demanderait le transceiver et l’adaptation électrique correspondants ; le tutoriel les présente d’ailleurs comme des options de retrofit à ajouter selon la machine.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)

> Illustration: Edge Link installé comme petit boîtier sur rail DIN avec son bornier et ses LED d’état. Le boîtier est crédible mécaniquement pour une armoire industrielle. L’interface électrique de la démo reste cependant un bornier série simple ; les bus industriels réels demandent leur adaptation propre. Credit: [Mukesh Sankhla / Arduino](https://blog.arduino.cc/2026/08/19/edge-link-is-a-diy-solution-to-upgrade-old-industrial-equipment/).

La différence entre « peut supporter Modbus » et « ce montage est un convertisseur RS-485 industriel prêt à brancher » commence ici.

## Le faux PLC

Sankhla est très clair dans la conclusion de son tutoriel : **il n’avait pas accès à une vraie ligne de production ni à un PLC industriel**.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)

Il a donc écrit en Python un jumeau numérique inspiré d’un Siemens S7-300. Le simulateur reproduit cinq stations d’une ligne de fabrication d’ampoules LED, un cycle `OB1` d’environ 10 ms, des blocs mémoire, les entrées et sorties, les alarmes, les compteurs, les recettes, la puissance consommée et des défauts injectables.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

Le trajet réellement testé est simple :

**PLC simulé sur PC → série/UART → Edge Link → HMI, stockage cloud et modèles locaux.**[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

Le repo contient cette chaîne complète. Le serveur Edge Link parse des messages comme `PLC_COUNTERS`, `PLC_TEST` ou `PLC_ALARM`, conserve un historique, alimente son interface et publie les informations structurées vers Firestore.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

C’est déjà un vrai travail d’intégration. Ce n’est simplement pas encore une preuve de compatibilité avec un S7-300 physique, un automate Rockwell de 2004 ou une presse dont personne n’a ouvert le manuel depuis le départ du technicien qui connaissait son protocole.

## Lire d’abord

Le point le plus intéressant apparaît en suivant le code, pas la promesse marketing.

Dans la démo publiée, le flux provenant du « PLC » est **montant** : Edge Link reçoit les informations série et les traite. Le champ nommé `send_serial_command` dans son interface Web peut prêter à confusion, car le handler correspondant ne renvoie rien vers l’UART du PLC ; il injecte la chaîne dans le parseur local, notamment pour tester les vecteurs d’inférence.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

Les boutons `LINE START`, `LINE STOP`, `LINE RESET` et arrêt d’urgence existent bien dans le projet, toutefois ils appartiennent au serveur Web du **simulateur**, où ils modifient directement l’état du PLC Python.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d) Le dépôt ne montre donc pas encore de canal Edge Link → automate réel.

Le contrôle physique effectivement démontré par la partie MCU reste lui aussi volontairement modeste, puisque les appels RouterBridge pilotent essentiellement les LED d’état du boîtier.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

> Illustration: Schéma comparant la chaîne Edge Link démontrée et les éléments restant à concevoir pour un vrai retrofit industriel. À gauche, ce que le dépôt démontre aujourd’hui. À droite, ce qui doit encore être conçu et validé avant de transformer cette preuve de concept en interface de production. Credit: [Illustration IRZ](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d).

Pour un premier retrofit, cette asymétrie est plutôt une qualité. Une passerelle en lecture seule peut créer de la valeur sans acquérir immédiatement le pouvoir de modifier le procédé.

## Donner un nom

Sortir des nombres n’est d’ailleurs que la moitié du travail, car une vieille machine peut exposer `DB12.DBD4`, l’adresse Modbus 40127 ou une variable propriétaire dont la signification n’existe plus que dans un classeur et dans la mémoire d’un mainteneur.

L’OPC Foundation décrit exactement ce problème dans son cas d’usage brownfield : les machines existantes portent souvent un modèle implicite, une forme de connaissance tribale qui risque de disparaître lorsque les équipes changent.[4](https://reference.opcfoundation.org/specs/OPC-30400-1/5.3)

Edge Link choisit un **Unified Namespace**, ou UNS, pour structurer les informations remontées.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb) Dans le dépôt, les données sont organisées par usine, ligne, historiques, tests qualité, alarmes et inférences ML.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)

L’intérêt dépasse largement le dashboard. Le vrai retrofit consiste à traduire « registre 17 » en quelque chose qui conserve une unité, un équipement, une signification et un contexte. Sinon on a seulement déplacé l’opacité du PLC vers le cloud, ce qui est une manière très contemporaine de ne rien résoudre.

## L’IA locale

Edge Link exécute six modèles Edge Impulse : cinq pour les stations et un pour l’ensemble de la ligne.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d) Les variables simulées couvrent vibration, températures, courant, pression, force, mesures optiques ou facteur de puissance selon la station.

L’inférence tourne localement sur l’UNO Q, ce qui laisse au cloud l’historique et les visualisations sans imposer un aller-retour réseau à chaque détection d’état anormal.[1](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)

C’est une bonne séparation pour du **monitoring**. Le tutoriel va plus loin et imagine qu’une décision locale pourrait arrêter une autre machine lorsqu’un problème est détecté ; Arduino évoque même les arrêts de sécurité comme usage possible.[2](https://blog.arduino.cc/2026/08/19/edge-link-is-a-diy-solution-to-upgrade-old-industrial-equipment/)

C’est précisément le moment où il faut changer de niveau d’exigence.

Un modèle qui affiche « vibration anormale » et un modèle autorisé à couper une machine n’ont pas le même impact : faux positif, bug, perte de capteur ou compromission deviennent alors des événements capables d’agir sur le procédé. Une réponse locale très rapide ne transforme pas automatiquement une inférence ML en mécanisme de sécurité certifié.

## La porte réseau

Le retrofit ajoute aussi quelque chose que la vieille machine n’avait peut-être jamais eu : un chemin vers des réseaux plus larges.

Pour CISA, il faut réduire au minimum l’exposition réseau des systèmes de contrôle, les placer derrière des pare-feu et les isoler des réseaux métier ; lorsqu’un accès distant devient nécessaire, il constitue lui aussi une frontière de sécurité à concevoir explicitement.[5](https://www.cisa.gov/sites/default/files/recommended_practices/RP_Managing_Remote_Access_S508NC.pdf)[6](https://www.cisa.gov/news-events/ics-advisories/icsa-21-189-01)

Ce conseil devient encore plus important si la nouvelle passerelle possède un chemin **d’écriture** vers le PLC : en lecture seule, la machine devient une source de télémétrie ; en bidirectionnel, la passerelle acquiert une véritable autorité de commande.

Le choix devrait donc être explicite, jusque dans les détails ordinaires qu’un prototype contourne facilement : quelles variables sont lisibles ou modifiables, depuis quelle zone réseau, avec quelle authentification, et que se passe-t-il quand Edge Link tombe, redémarre ou reçoit une valeur incohérente ?

Le vieux PLC n’est pas devenu moins fiable ; on vient simplement de lui ajouter une nouvelle frontière, laquelle doit être traitée avec le même sérieux que la machine qu’elle rejoint.

## Le mode test

Le dépôt montre bien qu’Edge Link sait continuer sans Internet : les événements destinés à Firestore sont mis en file dans un fichier local et renvoyés lorsque la connexion revient.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d) Cette fonction de store-and-forward est intéressante sur un atelier où le cloud ne devrait jamais conditionner le fonctionnement de la machine.

Mais le guide demande aussi de créer la base Firestore en **test mode**.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d) C’est rapide pour une démonstration, certainement pas une configuration à conserver sur une installation réelle.

La documentation Firebase avertit explicitement que des règles ouvertes utilisées pendant le développement peuvent laisser quiconque atteignant le projet lire, modifier ou supprimer son contenu. Elle demande de ne jamais déployer une règle `allow read, write: if true` en production.[7](https://firebase.google.com/docs/firestore/security/insecure-rules)

Cela ne rend pas Edge Link « non sécurisé ». Il faut plutôt lire le repo pour ce qu’il est aujourd’hui : un prototype fonctionnel dont les hypothèses de déploiement restent encore loin de celles d’un produit OT durci et certifié.

## Pas encore libre

Le code du simulateur et de l’application Edge Link est publiquement accessible dans `MukeshSankhla/PLC_SIM`.[3](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d) Au commit audité, GitHub ne détecte toutefois **aucune licence** et le dépôt ne contient pas de fichier `LICENSE`.

On peut lire et étudier le code, mais il serait prématuré d’en parler comme d’un projet librement réutilisable sous une licence clairement définie tant que l’auteur n’en a pas ajouté une.

C’est une petite différence pour un prototype personnel ; elle devient importante dès qu’une équipe veut maintenir, modifier et redistribuer ce logiciel pendant les dix prochaines années autour d’une machine censée durer vingt ans de plus.

## Moderniser moins

La possibilité de **moderniser une seule frontière** est finalement plus convaincante que la promesse de transformer d’un coup une ancienne machine en équipement « intelligent ».

Laisser le PLC faire ce qu’il sait faire, copier les mesures utiles, leur donner des noms stables, les mettre en tampon localement et exécuter l’analyse près de la machine permet déjà de moderniser beaucoup de choses sans toucher à la commande ; seul ce qui mérite réellement de sortir de l’atelier remonte ensuite vers le réseau supérieur.

Un canal de commande pourra ensuite être discuté séparément, seulement s’il apporte assez de valeur pour justifier sa nouvelle surface de risque.

Le projet de Sankhla montre déjà très bien cette première moitié et son prototype est probablement plus sain tant que la seconde reste visible comme un chantier d’ingénierie, au lieu de disparaître derrière un joli bouton « START » sur un dashboard.

## References

1. [Mukesh Sankhla, Edge Link — Hackster.io](https://www.hackster.io/Mukesh_Sankhla/edge-link-26e6fb)
2. [Arduino, Edge Link is a DIY solution to upgrade old industrial equipment](https://blog.arduino.cc/2026/08/19/edge-link-is-a-diy-solution-to-upgrade-old-industrial-equipment/)
3. [Mukesh Sankhla, PLC_SIM / Edge Link repository, commit 2047540](https://github.com/MukeshSankhla/PLC_SIM/tree/2047540d5ed819ba127b210ce6ccb88816d78a7d)
4. [OPC Foundation, Retrofit OPC UA to existing machines](https://reference.opcfoundation.org/specs/OPC-30400-1/5.3)
5. [CISA, Configuring and Managing Remote Access for Industrial Control Systems](https://www.cisa.gov/sites/default/files/recommended_practices/RP_Managing_Remote_Access_S508NC.pdf)
6. [CISA, Rockwell Automation MicroLogix 1100 advisory — network exposure mitigations](https://www.cisa.gov/news-events/ics-advisories/icsa-21-189-01)
7. [Firebase, Fix insecure Firestore rules](https://firebase.google.com/docs/firestore/security/insecure-rules)
8. [Arduino UNO Q product documentation](https://docs.arduino.cc/hardware/uno-q/)
