From 00b55a29a279c6f5ded8bd8afcd3012662f5d012 Mon Sep 17 00:00:00 2001 From: Eric FELIXINE Date: Wed, 6 May 2026 16:36:55 -0400 Subject: [PATCH] docs: Add session resume 2026-05-06 - IoT-Agent integration and QuantumLeap setup --- session_resume_2026-05-06.md | 109 ++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/session_resume_2026-05-06.md b/session_resume_2026-05-06.md index ad3e2daf..e732820c 100644 --- a/session_resume_2026-05-06.md +++ b/session_resume_2026-05-06.md @@ -1,65 +1,68 @@ -# Session Resume - 2026-05-06 (02:30 AM Martinique) +# Session Resume - Smart City Digital Twin Martinique (2026-05-06) -## 🎯 Objectif Démo -- **Date** : Jeudi 8 Mai 2026 (ou Mercredi 7 si progrès suffisant) -- **Stack** : Smart City Digital Twin Martinique -- **Statut** : Débogage OpenRemote (Carte, Agents, Brokers) + Pulsar Manager +## Objectif +Finaliser l'installation et l'accessibilité du Smart City Digital Twin Martinique, spécifiquement la mise en service des flux de données : +**MQTT → IoT-Agent → Context Brokers (Stellio) → QuantumLeap → CrateDB → Grafana** -## ✅ Réalisations (174 tentatives) -1. **Simulateur** : Fonctionnel, publie vers MQTT, InfluxDB, Prometheus (`smart-city-simulator` container). -2. **Grafana** : Dashboards opérationnels avec données Prometheus. -3. **GeoServer** : Accessible (erreur 400 corrigée), MapStore configuré. -4. **Pulsar Manager** : `curl` installé dans le conteneur, `init_db.sql` modifié pour `admin/Digitribe972`. -5. **Traefik** : Fichier `27-bunkerm-web.yml` corrigé (hostname `bunkerm_bunkerm_1` avec underscores). +## État des conteneurs (16h35) +- **smart-city-iot-agent** : Up (port 4041) - Service et devices créés ✅ +- **smart-city-quantumleap** : Up (port 8668) - Écoute mais ne répond pas en HTTP simple ⚠️ +- **smart-city-cratedb** : Up (ports 5432/4200) - Accessible ✅ +- **smart-city-grafana** : Up (port 3001) - CrateDB ajouté comme datasource via subagent ✅ +- **stellio-api-gateway** : Up (port 8080) - Mais retourne 404 sur les entités ❌ +- **smart-city-simulator** : Up - Modifié pour publier au format IoT-Agent ✅ (commit & push) -## ❌ Problèmes Restants -1. **OpenRemote Maps** : - - Carte Martinique ne s'affiche pas bien (bounds à corriger dans `martinique.mbtiles` via sqlite3). - - Légendes et icônes capteurs à configurer. - - `mapsettings.json` doit être restauré depuis template Martinique. -2. **OpenRemote Agents (CRITIQUE)** : - - API REST bloquée 401 (174 tentatives échouées). - - Solution : Utiliser **UNIQUEMENT l'UI** (`https://openremote.digitribe.fr/manager/#/agents`). - - Agents à créer : MQTT (EMQX, Mosquitto, BunkerM, Redpanda, Pulsar) + HTTP (Orion-LD, Stellio). -3. **Pulsar Manager** : Login `admin/Digitribe972` échoue (401). Nécessite reset volume `pulsar_pulsar-manager-db-data`. +## Travail accompli +1. **Diagramme de flux** mis à jour avec IoT-Agent, QuantumLeap, CrateDB (commit+push) ✅ +2. **IoT-Agent** : Service et devices créés (HTTP 201) ✅ +3. **Simulateur** : Ajout de `publish_iot_agent` et variable `ENABLE_IOT_AGENT` ✅ +4. **QuantumLeap** : Lancer via `docker-compose.quantumleap.yml` ✅ +5. **CrateDB** : Accessible via port 4200 (SQL interface) ✅ -## 🛠️ Actions à Faire Demain (Mercredi 7 Mai) -### OpenRemote (Priorité 1) -- [ ] Restaurer `mapsettings.json` depuis `templates/mapsettings_martinique_2026-05-02.json`. -- [ ] Corriger bounds mbtiles : `sqlite3 martinique.mbtiles "UPDATE metadata SET value='-61.3,14.3,-60.8,14.9' WHERE name='bounds';"` -- [ ] UI : Créer Agents MQTT (EMQX:11883, Mosquitto:1900, BunkerM:1900, Redpanda:2181, Pulsar:6650). -- [ ] UI : Créer Agents HTTP (Orion-LD:2026, Stellio:8087) avec headers NGSI-LD. -- [ ] UI : Lier Assets (AirQualityObserved, etc.) aux Agents. +## Blocages rencontrés +1. **Flux MQTT → IoT-Agent → Stellio** : + - IoT-Agent reçoit le message MQTT mais Stellio retourne 404 + - Problème probable : IoT-Agent ne transmet pas correctement à Stellio (configuration cbroker) -### Pulsar Manager -- [ ] `docker volume rm pulsar_pulsar-manager-db-data` -- [ ] `docker compose up -d pulsar-manager` (rejoue init_db.sql) -- [ ] Tester login `admin/Digitribe972`. +2. **QuantumLeap** : + - Port 8668 en écoute mais `curl http://localhost:8668` retourne 000 + - Endpoint `/v2/subscriptions` à tester -### Traefik -- [ ] Vérifier accès `https://bunkerm.digitribe.fr` (port 2000 web UI BunkerM). +3. **Stellio** : + - POST /ngsi-ld/v1/entities retourne 405 (method not allowed) + - GET /ngsi-ld/v1/entities retourne 404 (pas d'entités) -## 📝 Commandes Clés +## Prochaines étapes +1. Tester QuantumLeap : `curl http://localhost:8668/v2/subscriptions` +2. Configurer une subscription dans Stellio pour notifier QuantumLeap +3. Vérifier pourquoi IoT-Agent ne transmet pas à Stellio (logs : `cbroker: http://stellio-api-gateway:8080` présent) +4. Tester le flux complet avec un message MQTT manuel +5. Finaliser Pulsar Manager (login admin) + +## Commandes utiles ```bash -# OpenRemote Map Fix -docker exec openremote-manager-1 cp /deployment/map/mapsettings_martinique_2026-05-02.json /deployment/map/mapsettings.json -docker cp openremote-manager-1:/deployment/map/martinique.mbtiles /tmp/ -sqlite3 /tmp/martinique.mbtiles "UPDATE metadata SET value='-61.3,14.3,-60.8,14.9' WHERE name='bounds';" -docker cp /tmp/martinique.mbtiles openremote-manager-1:/deployment/map/ -docker restart openremote-manager-1 +# Vérifier IoT-Agent +curl -s http://localhost:4041/iot/services -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /' +curl -s http://localhost:4041/iot/devices -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /' -# Pulsar Manager Fix -docker stop smart-city-pulsar-manager -docker volume rm smart-city-digital-twin-martinique_pulsar-manager-db-data -cd ~/smart-city-digital-twin-martinique && docker compose up -d smart-city-pulsar-manager +# Tester QuantumLeap +curl -s http://localhost:8668/v2/entities -w "\nHTTP %{http_code}\n" +curl -s http://localhost:8668/v2/subscriptions -w "\nHTTP %{http_code}\n" + +# Tester Stellio +curl -s http://localhost:8080/ngsi-ld/v1/entities -H "Accept: application/ld+json" -w "\nHTTP %{http_code}\n" + +# Publier un message MQTT pour IoT-Agent +mosquitto_pub -h localhost -p 11883 -t "smartcity-api-key/airquality_001/attrs" -m '{"NO2": 50.5, "temperature": 30.0, "humidity": 90.0}' ``` -## 💾 Fichiers Modifiés Aujourd'hui -- `/home/eric/traefik-config/dynamic/27-bunkerm-web.yml` (hostname corrigé) -- `/home/eric/traefik-config/dynamic/21-pulsar.yml` (si modifié) -- `init_db.sql` (dans conteneur pulsar-manager, mot de passe admin changé) +## Fichiers modifiés +- `simulator.py` : Ajout `publish_iot_agent`, variable `ENABLE_IOT_AGENT` +- `docker-compose.iot-agent.yml` : Configuration EMQX et Stellio +- `data-flow-diagram.md` et `.html` : Mise à jour architecture -## ⏰ Prochain Créneau -- **Mercredi 7 Mai 2026, 14h00 (heure Martinique)**. -- **Durée prévue** : 4-5 heures jusqu'à 19h00. -- **Objectif** : Stack 100% fonctionnel pour démo Jeudi. +## Notes +- Le simulateur publie maintenant sur le topic `smartcity-api-key/{device_id}/attrs` via EMQX +- IoT-Agent est configuré pour transmettre à Stellio (cbroker: http://stellio-api-gateway:8080) +- CrateDB est accessible et QuantumLeap devrait y écrire les séries temporelles +- Grafana a CrateDB comme datasource (ajouté par subagent)