Bonjour,
Introduction
Au cours de mon cursus MLOps j’ai pu découvrir FastAPI, un cadriciel web permettant de créer des APIs pour des services divers et variés.
Chez Hilscher France je jouais avec un automate SCHNEIDER ELECTRIC M340 et des équipements Hilscher dédiés au Edge Computing, comme ici, et je m’étais alors dit que c’était une idée d’utiliser FastAPI pour s’interfacer avec l’automate en Modbus TCP.
En effet, Modbus est un protocole non sécurisé, comme la plupart des protocoles industriels, et exposer celui-ci tel quel sur le web est sans doute imprudent.
Alors que FastAPI dispose de la fonctionnalité pour sécuriser l’accès et gérer l’authentification.
J’avais donc créé un petit projet pour mon « Proof of Concept » que vous pouvez trouver dans mon nid de serpents… 😉
L’avantage de mon « toy protocol » Modbus est d’être très répandu et disponible en open source sous de multiples implémentations.
FastAPI-OMB
Ce projet permet donc simplement de lire (FC3) et d’écrire (FC16) les registres internes de mon automate et FastAPI crée automatiquement une documentation qui permet également de tester l’API.

J’ai juste implémenté « HTTP Basic » comme sécurité, alors n’allez pas l’utiliser tel quel pour votre centrale nucléaire…
Les fonctions dans la rubrique « Digest » remontent des données « digérées » alors que les fonctions de la rubrique « Raw » permettent un accès brut aux registres.
La documentation fournit aussi les commandes curl que vous pouvez utiliser par exemple depuis un script Bash pour une utilisation avec cron.
Bien sûr, vous pouvez utiliser toute bibliothèque comme Requests pour exercer votre contrôle.
Tout ayant une fin, je ne dispose plus de l’automate…
Modbus-SenseHAT
Par contre, j’ai toujours un Raspberry Pi et un module SenseHAT sous la main, qui date un peu mais, faute de grives…
J’avais écrit un bout de code pour cet article qui est devenu après mise à jour le projet suivant :
https://gitlab.com/ada-for-automation/python/sensehat/modbus-sensehat
Si vous ne disposez pas du matériel, Raspberry Pi + SenseHAT, qu’à cela ne tienne, vous pouvez utiliser le simulateur sur n’importe quelle distribution honnête comme Debian.
Ainsi, vous n’avez aucune excuse pour ne pas essayer le projet suivant !
FastAPI-Modbus-SenseHAT
Le projet est ici :
https://gitlab.com/ada-for-automation/python/sensehat/fastapi-modbus-sensehat
Et vous l’aurez compris, c’est une déclinaison du projet FastAPI-OMB évoqué ci-dessus qui permet de piloter le projet Modbus-SenseHAT.
Les deux projets communiquent via Modbus TCP et il est donc possible d’avoir les deux sur la même machine, sur deux machines distinctes, voire dans le cloud.
Pour aller plus loin…
J’espère que cet article vous donnera envie d’expérimenter avec FastAPI et vos automates.
Rien ne s’oppose à ce que l’on puisse faire la même chose pour des automates SIEMENS S7 avec l’excellente bibliothèque Snap7 que j’ai déjà eu l’occasion de mettre en oeuvre comme là.
Il y a bien sûr d’autres moyens de sécuriser votre communication avec les automates comme utiliser un VPN, MQTT qui peut être sécurisé avec SSL, OPC-UA crypté…
Cependant, FastAPI est bien connu dans le monde Python et facile à mettre en oeuvre, ce qui permet d’envisager toute sorte d’application.
Il faut vraiment que j’essaie ceci…
Cordialement,
Stéphane