Files
smart-city-digital-twin-mar…/session_resume_2026-05-26.md
Eric FELIXINE 5bbd5a6e5d fix: Grafana dashboard 'no data' — datasource + Flux queries
- 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
2026-05-25 16:39:50 -04:00

3.7 KiB

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é