- Fix datasource: bucket=smartcity, token=my-super-token, org=digitribe - Fix dashboard queries: filter by topic tag instead of _measurement (all data in measurement 'mqtt_consumer', type in tag 'topic') - Fix field names: temperature_c→temperature_celsius, luminosity→brightness_lux - Update dashboard to v3 with 15 panels (airquality, traffic, parking, weather, noise, light) - Update TODO.md and session_resume Tested: PM2.5 ✅, Temperature ✅, Vehicle Count ✅ via Grafana API
71 lines
3.7 KiB
Markdown
71 lines
3.7 KiB
Markdown
# Session Resume - 2026-05-26
|
|
|
|
## Objectifs
|
|
Reprendre la session Smart City Digital Twin : fix OpenRemote + Grafana "no data"
|
|
|
|
## Actions effectuées
|
|
|
|
### 1. OpenRemote — Tentative de fix (abandonnée par l'utilisateur)
|
|
- **Problème identifié**: Flyway migration V20191202_01__Schema.sql échoue car les tables JPA
|
|
(REALM, USER_ENTITY) ne sont pas encore créées quand Flyway s'exécute
|
|
- **Solution partielle**: Créé les tables manuellement dans `public` + marqué les 19 migrations
|
|
Flyway comme appliquées dans `flyway_schema_history`
|
|
- **Résultat**: Flyway passé, Manager connecté à Keycloak, mais PG a été recréé
|
|
- **Décision utilisateur**: Abandonner OpenRemote pour l'instant, recloner le répertoire
|
|
|
|
### 2. OpenRemote Keycloak — Recréé manuellement
|
|
- L'ancien container Keycloak avait été supprimé par un `docker-compose up` échoué
|
|
- Recréé avec `docker run` sur le réseau `smartcity-shared`
|
|
- **⚠️ Note**: Les credentials dans le docker-compose ont été masqués par Docker Compose
|
|
(user:password → ***). Il faut utiliser les credentials réels pour les backups.
|
|
|
|
### 3. Grafana "no data" — CORRIGÉ ✅
|
|
|
|
#### Causes identifiées:
|
|
1. **Datasource wrong bucket**: `defaultBucket: iot_data` → corrigé en `smartcity`
|
|
2. **Datasource wrong token**: `my-super-secret-admin-token` → corrigé en `my-super-token`
|
|
3. **Dashboard requêtes wrong**: Les panels utilisaient `r["_measurement"] == "airquality"` etc.
|
|
mais Telegraf écrit tout dans la measurement `mqtt_consumer` avec un tag `topic` qui
|
|
contient le type de capteur (ex: `smartcity/airquality/1`)
|
|
|
|
#### Corrections appliquées:
|
|
- **Datasource** (`/etc/grafana/provisioning/datasources/datasources.yml` dans le container):
|
|
- `defaultBucket: smartcity`
|
|
- `token: my-super-token`
|
|
- `organization: digitribe`
|
|
- `version: Flux`
|
|
- **Dashboard** `smartcity-martinique-complete` (version 3):
|
|
- Remplacé `_measurement == "xxx"` par `topic =~ /smartcity\/xxx/` dans les 10 panels
|
|
- Remplacé `temperature_c` par `temperature_celsius`
|
|
- Remplacé `luminosity` par `brightness_lux`
|
|
- Supprimé les UID datasource (utilise la datasource par défaut)
|
|
|
|
#### Validation:
|
|
- Test requêtes via Grafana API: PM2.5 ✅, Temperature ✅, Vehicle Count ✅
|
|
|
|
### 4. Types de capteurs et fields confirmés dans InfluxDB:
|
|
- **airquality**: battery_level, co_mgm3, humidity_percent, no2_ugm3, o3_ugm3, pm10_ugm3, pm25_ugm3, temperature_celsius
|
|
- **parking**: available_spots, occupancy_percent, total_spots, turnover_per_hour
|
|
- **traffic**: average_speed_kmh, congestion_level, vehicle_count
|
|
- **weather**: battery_level, humidity_percent, pressure_hpa, rain_mm, temperature_celsius, uv_index, wind_speed_kmh
|
|
- **light**: battery_level, brightness_lux, power_consumption_w
|
|
- **noise**: battery_level, noise_level_db, peak_db
|
|
|
|
## Containers critiques
|
|
- `smart-city-grafana`: ✅ Up, datasource corrigé, dashboard v3
|
|
- `smart-city-influxdb`: ✅ Up healthy, bucket `smartcity` avec données
|
|
- `smart-city-telegraf`: ✅ Up, connecté à EMQX + Mosquitto
|
|
- `smart-city-simulator`: ✅ Up, 60 capteurs
|
|
- `openremote-postgresql`: Up healthy (timescaledb-ha:pg15)
|
|
- `openremote-keycloak`: Recréé manuellement
|
|
- `openremote-manager`: En crash loop (problème Flyway résolu mais PG recéré)
|
|
- `grafana_stack-grafana-1`: Autre instance Grafana (5 jours)
|
|
- `honcho-grafana-1`: Grafana Honcho (5 jours, healthy)
|
|
|
|
## Fichiers modifiés
|
|
- `grafana-datasources.yml` — datasource corrigé (référence, pas utilisé directement)
|
|
- `grafana-dashboard-smartcity.json` — dashboard dans le projet mis à jour
|
|
- `/etc/grafana/provisioning/datasources/datasources.yml` (dans container)
|
|
- `/etc/grafana/provisioning/dashboards/smart-city-dashboards.json` (dans container)
|
|
- `docker-compose.yml` (OpenRemote) — OR_SETUP_TYPE: "default" ajouté
|