Une application complète (backend FastAPI + interface web moderne) pour piloter un tableau physique des régions françaises connecté à un automate Modbus/Arduino. En cliquant sur une région depuis le navigateur, la LED correspondante s'allume ou s'éteint via le protocole Modbus TCP.
- Backend Python (FastAPI) : expose des API REST
/api/regions
pour lire et écrire l'état des LED. - Intégration Modbus : repose sur
pymodbus
et réutilise la logique de connexion fournie (ModbusTcpClient
). - Interface graphique : carte PNG haute résolution avec marqueurs dynamiques, rafraîchissement automatique, retours visuels (statut, toasts, badges) et navigation clavier.
- Python 3.10 ou supérieur recommandé
- Accès réseau au contrôleur Modbus/Arduino (TCP)
- Optionnel : environnement virtuel (
python -m venv .venv
)
-
Cloner/créer un environnement Python :
cd backend python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt
-
Configurer les variables Modbus :
cp .env.example .env
Ajustez l'adresse IP (
MAP_MODBUS_HOST
), le port et le décalage (MAP_COIL_OFFSET
) si besoin. -
Lancer le serveur :
cd backend/ uvicorn app.main:app --host 0.0.0.0 --port 8000
L'interface est disponible sur http://localhost:8000.
- L'interface est servie directement par FastAPI (
/
), aucun build supplémentaire n'est nécessaire. - La carte PNG est recouverte de marqueurs positionnés en pourcentage, chaque région est accessible via clic ou clavier (
Entrée
/Espace
). - Le statut est synchronisé en continu via polling (intervalle
MAP_POLL_INTERVAL_MS
) et reflété dans la liste de contrôle et la légende flottante.
- Le fichier
backend/app/data/regions.json
liste les régions et la bobine Modbus associée (coil
). - Les coordonnées des marqueurs sont centralisées dans
backend/app/static/js/app.js
(REGION_PIN_POSITIONS
) et exprimées en pourcentage de la carte. - Adaptez librement la liste ou les positions, puis redémarrez le serveur pour recharger la configuration.
Depuis le dossier backend
(avec l'environnement Python activé) :
pytest
Les tests utilisent un faux contrôleur Modbus afin de vérifier les routes sans contacter le matériel.
- Pour un usage intensif, envisagez de conserver une connexion Modbus persistante ou de superviser les latences.