diff --git a/TODO.md b/TODO.md index b9dbaed7..41d37363 100644 --- a/TODO.md +++ b/TODO.md @@ -1,30 +1,30 @@ # Smart City Digital Twin — TODO List -> Dernière mise à jour : 2026-05-17 11:15 +> Dernière mise à jour : 2026-05-17 19:30 -## ✅ Complété +## ✅ Complété (4/11) | ID | Tâche | |----|-------| | p1-bunkerm | BunkerM: DNS corrigé (underscores → hyphens) | | p2-geoserver | GeoServer: workspace Digitribe + Data Store PostGIS dédié | | p2-postgis | PostGIS dédié: conteneur postgis-smartcity UP (PostGIS 3.4) | +| p2-mapstore | MapStore: GeoServer WMS ajouté au CORS, couche sensors créée | +| p5-docs | Documentation + commits Gitea | -## 🔴 Bloqué +## 🔴 Bloqué (3/11) | ID | Tâche | Raison | |----|-------|--------| | p1-or | OpenRemote agents MQTT | API 403, UI headless ne rend pas | | p4-ditto | Ditto.digitribe.fr | MongoDB localhost hardcodé | | p1-prometheus | Prometheus + Grafana | Réseau interne inaccessible | -## ⏳ En attente +## ⏳ En attente (2/11) | ID | Tâche | |----|-------| -| p2-mapstore | MapStore: interconnecter avec GeoServer via PostGIS | | p3-analyse | Analyse: GeoMesa + KeplerGL | | p1-ngsi | NGSI-LD: validation pipeline (basse priorité) | -| p5-docs | Documentation + commits Gitea | -## 🔄 En cours +## 🔄 En cours (2/11) | ID | Tâche | |----|-------| | p0-chirpstack | ChirpStack: login API gRPC-REST | @@ -33,3 +33,4 @@ - **GeoServer**: admin / Digitribe972 - **PostGIS dédié**: smartcity / SmartCity972 (port 5433) - **ChirpStack**: admin / admin1234 +- **Gitea**: eric / token configuré dans git remote diff --git a/docs/geospatial.md b/docs/geospatial.md new file mode 100644 index 00000000..7cd6defb --- /dev/null +++ b/docs/geospatial.md @@ -0,0 +1,73 @@ +# Smart City Digital Twin — Documentation Infrastructure + +> Dernière mise à jour : 2026-05-17 20:00 + +## Architecture Géospatiale + +### Services déployés + +| Service | URL | Statut | Credentials | +|---------|-----|--------|-------------| +| GeoServer | https://geoserver.digitribe.fr | ✅ UP | admin / Digitribe972 | +| PostGIS dédié | postgis-smartcity:5432 | ✅ UP | smartcity / SmartCity972 | +| MapStore | https://mapstore.digitribe.fr | ✅ UP | - | + +### GeoServer + +#### Workspace: `Digitribe` +- **Data Store**: `postgis-smartcity` → PostgreSQL/PostGIS dédié +- **Couche**: `sensors` — 55 capteurs IoT importés depuis OpenRemote +- **WMS/WFS**: Activés via le plugin GeoMesa (à installer) + +#### Données importées +55 capteurs IoT depuis OpenRemote (table `openremote.asset`, type `IOTSensor`) : +- Types : traffic, airquality, parking, noise, weather, light +- Coordonnées GPS : lat/lon (EPSG:4326) +- Table PostGIS : `public.sensors` (id, name, type, location, attributes) + +### PostGIS dédié +- **Conteneur**: postgis-smartcity +- **Image**: postgis/postgis:15-3.4 +- **Port host**: 5433 +- **Base**: smartcity +- **Schéma**: public +- **Table sensors**: 55 lignes, index GIST sur location + +### MapStore +- **URL**: https://mapstore.digitribe.fr +- **CORS**: GeoServer ajouté +- **Couche GeoServer**: sensors accessible via WMS + +## Services Bloqués + +### OpenRemote Agents MQTT +- **Problème**: API REST retourne 403 malgré tous les tokens Keycloak +- **Cause**: OpenRemote a son propre système d'authorization indépendant +- **Solution**: Se connecter manuellement via un navigateur réel + +### Ditto Digital Twin +- **Problème**: MongoDB localhost hardcodé dans le JAR Ditto 3.8.12 +- **Cause**: Les variables d'environnement MONGO_HOST ne sont pas reconnues +- **Solution**: Modifier le JAR ou utiliser un hostname localhost → MongoDB + +### Prometheus + Grafana +- **Problème**: Réseau interne inaccessible depuis le conteneur Prometheus +- **Solution**: Reconfigurer le réseau ou utiliser les endpoints exposés + +### GeoMesa + KeplerGL +- **GeoMesa**: Installation complexe (Maven, binaires pré-construits nécessaires) +- **KeplerGL**: Image Docker incomplète, build npm trop long +- **Solution**: Prévoir une session dédiée pour l'installation + +## Fichiers de configuration + +- `docker-compose.postgis.yml` — PostGIS dédié +- `docker-compose.kepler.yml` — KeplerGL (non fonctionnel) +- `docker-compose.ditto.yml` — Ditto (MongoDB à corriger) +- `traefik-config/dynamic/routes.yml` — GeoServer ajouté au CORS MapStore + +## Prochaines étapes +1. GeoMesa : télécharger les binaires pré-construits (geomesa-gt-postgis) +2. KeplerGL : build Docker multi-stage ou image officielle +3. OpenRemote : connexion manuelle via navigateur réel +4. Ditto : corriger la config MongoDB