Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

forge-mvc-iot

Module opt-in pour Forge MVC — réception et exposition de données IoT (capteurs, périphériques connectés) via MQTT. Le module reçoit la télémétrie depuis un broker MQTT, la stocke en base (SQL visible) et l'expose via une API HTTP JSON en lecture seule.

Statut

Beta (Development Status :: 4 - Beta). Le module est fonctionnel de bout en bout pour un usage local et pédagogique. Les briques suivantes sont implémentées :

  • subscriber MQTT (paho-mqtt) avec contrat de message validé ;
  • stockage des événements dans la table iot_events (migration SQL embarquée) ;
  • API HTTP JSON en lecture seule, protection Bearer optionnelle ;
  • commandes CLI forge iot:doctor, iot:init, iot:listen, iot:simulate ;
  • TLS MQTT optionnel.

Limites assumées : pas de JWT/OAuth/RBAC sur l'API (Bearer global uniquement), pas de politique de rétention sur iot_events, rate-limit non distribué. Voir la section « Limites ».

Décisions verrouillées

  • Forge Core reste indépendant. forge-mvc ne dépend jamais de forge-mvc-iot. La présence ou l'absence du module IoT ne change rien au fonctionnement du framework.
  • forge-mvc-iot dépend de Forge Core. Le module réutilise routeur, contrôleurs, accès base de données, conventions applicatives.
  • MQTT est le protocole d'entrée, pas une API front. Mosquitto est le broker recommandé en environnement local (BTS CIEL, ateliers pédagogiques) ; un broker MQTT cloud reste possible.
  • Forge Design IoT consomme l'API HTTP JSON exposée par Forge (via ce module), jamais directement le broker MQTT.

Voir Architecture Forge IoT pour la doctrine complète et les règles de séparation.

Installation

pip install forge-mvc-iot

Depuis le monorepo, en mode développement :

pip install -e packages/forge-mvc-iot

La dépendance paho-mqtt est installée automatiquement.

Configuration

Le module lit sa configuration depuis l'environnement (load_iot_config()), avec des valeurs par défaut adaptées à un broker local :

Variable Défaut Rôle
FORGE_IOT_MQTT_HOST localhost hôte du broker MQTT
FORGE_IOT_MQTT_PORT 1883 port du broker
FORGE_IOT_MQTT_TOPIC forge/+/+/telemetry topic d'abonnement
FORGE_IOT_MQTT_CLIENT_ID forge-iot identifiant client MQTT
FORGE_IOT_MQTT_USERNAME (aucun) authentification broker (optionnelle)
FORGE_IOT_MQTT_PASSWORD (aucun) authentification broker (optionnelle)
FORGE_IOT_MQTT_TLS_ENABLED false active TLS vers le broker
FORGE_IOT_MQTT_TLS_CA_FILE (aucun) CA pour la vérification TLS
FORGE_IOT_API_TOKEN (aucun) si défini, exige Authorization: Bearer <token> sur l'API

Commandes CLI

  • forge iot:doctor — diagnostic statique par défaut (config, package, présence de la migration). Options explicites : --db (teste iot_events en base) et --mqtt (connexion brève au broker).
  • forge iot:init — copie la migration SQL embarquée vers mvc/migrations/ du projet. Aucune exécution SQL, idempotente ; puis lancer forge migration:apply.
  • forge iot:listen — relie le flux local broker → MqttSubscriber → IotEventRepository.insert() → iot_events.
  • forge iot:simulate — publie des mesures factices conformes au contrat MQTT sur forge/{site}/{device_id}/telemetry, sans capteur physique (pédagogique).

Flux complet de démonstration :

forge iot:doctor --mqtt  →  forge iot:simulate  →  forge iot:listen
  →  iot_events  →  GET /api/iot/events

API HTTP

Branchement explicite dans mvc/routes/__init__.py (jamais automatique) :

from forge_mvc_iot import register_iot_routes

register_iot_routes(router)

Routes exposées (GET, lecture seule, JSON) :

Route Rôle
GET /api/iot/events derniers événements (paramètre limit)
GET /api/iot/events/{site}/{device_id} événements d'un device
GET /api/iot/devices/{site}/{device_id}/count nombre d'événements

Sécurité : si FORGE_IOT_API_TOKEN est défini, les trois routes exigent Authorization: Bearer <token> (comparaison en temps constant via secrets.compare_digest). Sinon l'API est ouverte — acceptable en atelier local, à proscrire en production publique.

Limites

  • Authentification API globale (Bearer unique) : pas de scope par site, par device, ni de rotation de clé.
  • Pas de politique de rétention / purge / agrégation sur iot_events.
  • Rate-limit non distribué.
  • API en lecture seule : aucune écriture/commande device via HTTP.

Licence

LicenseRef-Forge-Proprietary — voir le dépôt Forge pour les conditions complètes.

Release files for forge-mvc-iot 1.0.0rc5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for forge-mvc-iot 1.0.0rc5
File Size Uploaded
forge_mvc_iot-1.0.0rc5.tar.gz 42.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for forge-mvc-iot 1.0.0rc5
File Interpreter ABI Platform
forge_mvc_iot-1.0.0rc5-py3-none-any.whl Python 3 none any Details

Total release size: 90.6 kB

Release files / forge_mvc_iot-1.0.0rc5.tar.gz

Download URL forge_mvc_iot-1.0.0rc5.tar.gz
Size 42.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ee7e5ed7b5ec05d813f1a451a1b141756f7e704f81e67fa2954093cb3c26a6b6
BLAKE2b-256 checksum
How to use checksums
a3fea546d28424e35c301e803d9ecdee65afe9783a160404d84d40d2414a550d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / forge_mvc_iot-1.0.0rc5-py3-none-any.whl

Download URL forge_mvc_iot-1.0.0rc5-py3-none-any.whl
Size 48.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
373b582583ee3bd5965683e2639ef650cb0dc3495df1c68e90a766bc3e2d5987
BLAKE2b-256 checksum
How to use checksums
bc01277532b8023b3cf2447c2ec586693de06680bf52888811e36f1bc3f4baf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page