Eric FELIXINE
9f40e187d8
ci: verify Gitea Actions runner — docker-runner-01 registered and working
2026-06-01 23:57:39 -04:00
Eric FELIXINE
f8e34562d5
feat(smart-app): CI/CD pipeline + deploy scripts
...
Build & Deploy Smart App Web / lint (push) Failing after 1s
Build & Deploy Smart App Web / build-web (push) Has been skipped
Build & Deploy Smart App Web / docker-build (push) Has been skipped
Build & Deploy Smart App Web / deploy (push) Has been skipped
- .gitea/workflows/build-and-deploy.yml:
- Lint + TypeScript check on PR
- Expo web build on push to master
- Deploy via SSH to server (copy to /var/www/smartapp)
- Docker build alternative
- Artifact upload for builds
- deploy.sh: manual deploy script (web|docker|api|all)
- app.json: Expo config with bundle IDs
- assets/: generated icons (icon, splash, adaptive, favicon)
- Added expo-pwa, html-webpack-plugin, workbox-webpack-plugin deps
2026-06-01 23:03:11 -04:00
Eric FELIXINE
fd583a8b16
feat(smart-app): add Docker web build + Traefik integration
2026-06-01 22:49:31 -04:00
Eric FELIXINE
43ae2ebcac
feat(smart-app): complete all remaining components, screens, hooks, services, stores, i18n
...
- i18n/index.ts: i18next setup with FR/EN/ES/DE translations
- constants.ts: app config, sensor types, alert severity, storage keys, refresh intervals
- store/index.ts: barrel export for all stores
- iotStore.ts: full IoT store (6 sensors, 3 zones, 2 alerts) with actions
- notificationStore.ts: notification store (5 mock notifications) with actions
- uiStore.ts: theme/language store + translation maps for 4 languages
- useSensors.ts: sensor filtering by type/zone, alert sensors selector
- useAlerts.ts: active alerts, critical alerts, acknowledge
- useNotifications.ts: notification CRUD operations
- useLocation.ts: GPS location with expo-location, default Fort-de-France
- SensorCard.tsx: full sensor card with status dot, compact mode
- StatsCard.tsx: stats card with icon, value, trend
- AlertCard.tsx: alert card with severity bar, acknowledge button
- ZoneCard.tsx: zone card with color bar, sensor/alert counts
- LineChart.tsx: bar-based line chart with Y-axis labels
- BarChart.tsx: bar chart with value labels
- GaugeChart.tsx: semi-circular gauge with color thresholds
- MapView.tsx: map placeholder with overlay markers
- MarkerPopup.tsx: popup with title, value, status, detail button
- DashboardScreen.tsx: analytics dashboard with gauges + charts
- SensorDetailScreen.tsx: sensor detail with gauge + history chart
- NotificationPrefsScreen.tsx: notification preference toggles (4)
- LayerDetailScreen.tsx: layer detail placeholder
- iot.service.ts: CRUD operations for sensors, zones, alerts
- gis.service.ts: geocoding, POI search, routing
2026-06-01 22:31:36 -04:00
Eric FELIXINE
a5124b0f0d
chore: update TODO.md with smart app MVP and ditto fixes
2026-06-01 18:03:40 -04:00
Eric FELIXINE
e30ae8ed09
feat(smart-app): implement complete mobile app MVP
...
- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
2026-06-01 18:00:35 -04:00
Eric FELIXINE
08ca495bde
feat: backend FastAPI Smart App City — auth JWT, IoT, GIS, notifications, reporting
2026-06-01 14:47:05 -04:00
Eric FELIXINE
31334b5ce5
chore: session resume final 2026-06-01 — lakehouse traefik routes, network fixes
2026-06-01 14:10:52 -04:00
Eric FELIXINE
ef6e5fbae0
feat: routes Traefik pour lakehouse (trino, kafka-ui, flink, gravitino, minio)
2026-06-01 14:09:55 -04:00
Eric FELIXINE
ae35506db6
chore: backup session 2026-06-01 final — snapshot, resume, TODO, all fixes documented
2026-06-01 12:24:34 -04:00
Eric FELIXINE
8c38a23b4b
chore: session resume 2026-06-01 final — JupyterHub spawn fix, all creds documented
2026-06-01 12:07:10 -04:00
Eric FELIXINE
cca9e4aedc
fix: JupyterHub spawn - switch to LocalProcessSpawner, fix password hash, eric user
...
- SimpleLocalProcessSpawner doesn't pass JUPYTERHUB_SERVICE_URL in JH 5.3.0
- LocalProcessSpawner handles env vars correctly
- Fixed eric password hash (bcrypt instead of PBKDF2)
- eric user created with admin rights
- JupyterLab accessible at https://jupyter.digitribe.fr
- Credentials: eric / Digitribe972
2026-06-01 11:45:52 -04:00
Eric FELIXINE
85199fc3f0
chore: session backup 2026-06-01 continue — Kafka/Trino/JupyterHub fixes, TODO update
2026-06-01 10:39:11 -04:00
Eric FELIXINE
cb45b89f1f
fix: JupyterHub Dockerfile - add eric user, sudo, fix DB path (4 slashes)
2026-06-01 10:26:47 -04:00
Eric FELIXINE
9e933fea66
chore: session backup 2026-06-01 final — TODO restructuré, état complet
2026-05-30 08:49:31 -04:00
Eric FELIXINE
acdf250470
chore: backup session 2026-06-01b — JupyterHub fix, Hermes Dashboard, OR mbtiles, Trino node.properties
...
Summary of changes:
- JupyterHub: fix DB path (absolute), Dockerfile cleanup, SimpleLocalProcessSpawner
- JupyterHub: user eric created as admin
- Hermes Dashboard WebUI + TUI chat service (systemd, localhost:9119, auto-boot)
- OR mbtiles: generated Martinique PNG tiles (5690 tiles, 10.9MB) — needs PBF for OR
- OR mbtiles: restored original PBF with corrected metadata (world bounds, Martinique center)
- OR mapsettings: verified center=[-61,14.5], bounds=Martinique, minZoom=0
- Trino: added node.properties (node.environment=production) — needs restart
- TODO.md: updated with current state
- session_resume_consolide.md: created (per-session summary)
2026-05-30 08:14:47 -04:00
Eric FELIXINE
008f1679ce
fix: JupyterHub DB path + user eric + OR mbtiles bounds + Hermes Dashboard
...
- Fix JupyterHub: sqlite db_url absolute path (was double-nested /srv/jupyterhub/srv/jupyterhub)
- Create user eric as admin in JupyterHub (id=2, authorized)
- Fix OpenRemote mbtiles: bounds metadata = world (-180,-85,180,85) for free zoom
- OR map API confirmed working: center=[-61,14.5], minZoom=0, bounds=Martinique
- Add Hermes Dashboard WebUI + TUI chat service (localhost:9119, auto-start at boot)
- Add generate_martinique_mbtiles.py script (future tile generation)
Known issues:
- JupyterHub spawn timeout (singleuser server slow to start, increased to 120s)
- OR mbtiles still contains Netherlands vector tiles (need Martinique tiles)
- Kafka, Trino still in restart loop (separate fix needed)
2026-05-29 07:01:00 -04:00
Eric FELIXINE
a234e808f2
chore: add VRE stack configs (JupyterHub + Zeppelin) + lakehouse components
...
- Add VRE directory with JupyterHub + Zeppelin docker-compose configs
- Add Gravitino, Flink, Kafka, MinIO, Trino lakehouse stack
- Add Superset, Metabase, StarRocks analytics tools
- Session reprise après crash 2026-06-01
Infrastructure: 86 conteneurs total
Known issues: Kafka (no ZK conn), Trino (node.env null), JupyterHub (DB path)
2026-05-29 02:21:08 -04:00
Eric FELIXINE
486c1d2675
feat: Add OpenRemote stack config (docker-compose + traefik)
...
- Docker-compose based on GitHub repo openremote/openremote
- Images: timescale/timescaledb-ha:pg15, openremote/keycloak:latest, openremote/manager:1.24.0
- All 3 services healthy and running
- URL: https://openremote.digitribe.fr/manager/
2026-05-28 23:22:25 -04:00
Eric FELIXINE
184f3ca8dd
chore: session backup 2026-05-27 — OpenRemote deployed with KC 23.0.7, MindsDB config updated
2026-05-27 13:14:58 -04:00
Eric FELIXINE
feb80694ab
chore: update TODO — fix session date references
2026-05-26 22:55:46 -04:00
Eric FELIXINE
a19ee4080f
chore: remove erroneous 2026-05-29 snapshot (correct date is 2026-05-26)
2026-05-26 22:54:57 -04:00
Eric FELIXINE
46bb937714
chore: session backup 2026-05-26 — reprise après crash, snapshot + resume + TODO update
2026-05-26 22:54:37 -04:00
Eric FELIXINE
e0d023d372
docs: add architecture inventory 2026-05-27
2026-05-26 21:04:35 -04:00
Eric FELIXINE
19cb678791
chore: session backup 2026-05-27 — ODK deployed, project created, TODO updated
2026-05-26 20:54:50 -04:00
Eric FELIXINE
978280f866
fix: ODK Traefik config — add odk.yml route, ODK now accessible at https://odk.digitribe.fr
2026-05-26 20:26:17 -04:00
Eric FELIXINE
89a821a364
chore: update TODO.md — ODK progress, ChirpStack pw reset, Smart App City arch
2026-05-26 19:06:07 -04:00
Eric FELIXINE
94f74f2dfc
feat: add smart-app-city sub-project architecture
...
- Architecture globale (React Native + NestJS + FastAPI)
- Beckn Protocol (OTN-DPI) integration docs
- AI layer: RAG pipeline + AI Agents (LocalAI + Qdrant)
- i18n: FR/EN/ES/DE support
- Docker Compose for backend services
- Project structure with frontend, backend, ai, beckn directories
2026-05-26 18:47:02 -04:00
Eric FELIXINE
f1e1b98519
chore: session backup 2026-05-28 — TODO update + snapshot
2026-05-26 17:20:04 -04:00
Eric FELIXINE
e4c558c296
Dashboard v7: valeurs temps réel dans panneau stat + dropdown capteur
...
- Panneau Stat en haut: 7 métriques temps réel (temp, humidité, NO2, O3, CO, batterie, PM2.5)
- Dropdown avec includeAll + allValue '.*'
- Regex dans toutes les queries Flux
- historique: 7j pour NO2 et PM2.5
- Refresh: 5s
2026-05-26 14:20:00 -04:00
Eric FELIXINE
65e2d42f63
Dashboard v5: variable capteur + tooltip details + coordonnees Sainte-Anne
...
- Ajout variable pour filtrage par topic InfluxDB
- Tous les panels filtres par capteur selectionne
- Tooltip markersGeomap en mode details
- Coordonnees Sainte-Anne corrigees (deplacement ~300m sur terre)
- 1001 topics disponibles dans InfluxDB
2026-05-26 14:05:33 -04:00
Eric FELIXINE
a7716102fd
Fix GeoMap dashboard v3 - temperature_celsius + Geomap layer config
...
Fixes:
- Temperature field: temperature_c (wrong) -> temperature_celsius (correct)
- Geomap panel: added explicit location config with lat/lon field mapping
- Added PM2.5 timeseries panel
- Dashboard UID: geomap-test-v1
2026-05-26 13:52:25 -04:00
Eric FELIXINE
7643d88ffb
Add GeoMap dashboard + ChirpStack REST API config
...
- Grafana GeoMap dashboard (PostGIS + InfluxDB) for real-time sensor visualization
- Dashboard accessible at: https://grafana.digitribe.fr/d/geosmart-city-2026/smart-city-geomap-temps-reel
- PostGIS datasource added (user: grafana, network: smartcity-shared)
- InfluxDB-SmartCity-Correct datasource configured
- ChirpStack REST API: added --cors-origins flag
2026-05-26 13:14:01 -04:00
Eric FELIXINE
7df2f6798f
feat: deploy Superset and Metabase behind Traefik
...
- Superset: docker-compose.superset.yml (app + postgres + redis)
URL: https://superset.digitribe.fr
Port: 8088 (internal), Traefik routes Host(superset.digitribe.fr)
- Metabase: docker-compose.metabase.yml (app + postgres)
URL: https://metabase.digitribe.fr
Port: 3000 (internal), Traefik routes Host(metabase.digitribe.fr)
- Traefik configs: 31-superset.yml, 32-metabase.yml
- Both services use smartcity-shared and traefik-public networks
- Both use letsencrypt TLS certificates
Verified:
- Superset: UP healthy, accessible via https://superset.digitribe.fr
- Metabase: UP healthy, accessible via https://metabase.digitribe.fr
2026-05-25 22:59:25 -04:00
Eric FELIXINE
943836f8fb
feat: activate BunkerM MQTT broker + fix Telegraf
...
- BunkerM: recreated with port 1883 (external) -> 1900 (internal)
- BunkerM: disabled dynsec plugin, using password_file auth (bunker/bunker)
- Simulator: ENABLE_BUNKER=1, BUNKERM_PORT=1900
- Telegraf: reactivated BunkerM consumer on port 1900
- Telegraf: recreated container (3 MQTT consumers connected)
- Grafana: dashboard v4 with corrected Flux queries
- Grafana: datasource fixed (bucket=smartcity, token=my-super-token)
Verified:
- Simulator publishes to EMQX ✅ , Mosquitto ✅ , BunkerM ✅
- Telegraf receives from all 3 brokers ✅
- InfluxDB has data from all brokers ✅
- Grafana dashboard displays data ✅
2026-05-25 20:03:55 -04:00
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
Eric FELIXINE
6d1d9c8620
fix: telegraf containers names + openremote pg image + session snapshot 2026-05-25
...
- telegraf.conf: fix Mosquitto/BunkerM container names (hyphens not underscores)
- tegraf.conf: comment out BunkerM consumer (auth fails, simulator not sending)
- openremote/docker-compose.yml: switch PG image to timescaledb-ha:pg15 (fixes timescaledb_toolkit crash)
- Add session_resume + architecture snapshot 2026-05-25
- Update TODO.md with current status
2026-05-25 14:13:39 -04:00
Eric FELIXINE
eb97f2a7dd
Fix: Traefik dynamic config, Ditto things startup crash, and OpenRemote sensor coordinates
2026-05-20 18:18:21 -04:00
Eric FELIXINE
45f3ab8a3d
docs: session resume 2026-05-20 - stabilization and platforms deployment
2026-05-20 13:19:29 -04:00
Eric FELIXINE
98f0bcb021
Session 2026-05-20: Contexus MQTT devices, OpenRemote agent, 60 capteurs configures
2026-05-20 00:58:48 -04:00
Eric FELIXINE
a4e05f557c
Session 2026-05-20: Contexus deploye, OpenRemote assets corriges, Traefik config fix
2026-05-19 21:48:38 -04:00
Eric FELIXINE
5ddbf7de93
Add map screenshot with assets
2026-05-19 20:54:26 -04:00
Eric FELIXINE
805986e3f6
Add Playwright screenshots 2026-05-19: Manager login + map page
2026-05-19 19:01:40 -04:00
Eric FELIXINE
d4605ee072
Add session resume 2026-05-19
2026-05-19 16:36:08 -04:00
Eric FELIXINE
2377bc07fd
Session 2026-05-19: OpenRemote map display investigation, cleanup, fresh install
...
- Investigated map display issues (agentLink, GeoJSON coords, realm config)
- Cleaned up all dashboards and containers
- Fresh Manager installation (PostgreSQL in recovery)
- Updated TODO.md with current status
- GeoJSON proxy: fixed coordinate order (lon/lat)
- Session resume saved
2026-05-19 16:22:26 -04:00
Eric FELIXINE
d1e6bdb685
docs: add skills inventory to TODO.md (epicollect5, odk, kobo, superset, metabase, contexus)
2026-05-19 15:48:46 -04:00
Eric FELIXINE
47746b584c
fix: OpenRemote PUT 403/409, MQTTv5 callback, geojson-proxy API REST
...
- simulator.py: Fix MQTTv5 callback crash (5th arg *args)
- simulator.py: Fix _or_put() - GET version+realm before PUT, inject version in payload
- simulator.py: Fix token TTL (min 30s cache)
- simulator.py: Round-robin OR updates (~5 assets/iteration instead of 60)
- geojson-proxy: Rewrite using REST API instead of psycopg2 (PG auth issue)
- geojson-proxy: Add sensorType + attributes in properties for map styling
- docker-compose.yml: Add openremote_default network + DB vars for proxy
- docker-compose.yml: Add OR_REALM=master for geojson-proxy
Resolves: OpenRemote 403 (wrong realm in payload), 409 (missing version),
MQTTv5 callback crash, geojson-proxy DB connection failure
2026-05-18 10:04:12 -04:00
Eric FELIXINE
7937e2bb43
Session resume 2026-05-17: sauvegarde finale
2026-05-17 20:05:42 -04:00
Eric FELIXINE
55fabea16a
Documentation géospatiale: GeoServer, PostGIS, MapStore
2026-05-17 19:55:40 -04:00
Eric FELIXINE
7477410813
Session 2026-05-17: GeoServer, PostGIS dédié, MapStore, ChirpStack
...
- GeoServer: workspace Digitribe + Data Store PostGIS dédié
- PostGIS dédié: conteneur postgis-smartcity (PostGIS 3.4)
- Couche sensors: 55 capteurs IoT importés depuis OpenRemote
- MapStore: GeoServer WMS ajouté au CORS
- ChirpStack: credentials réinitialisés (admin/admin1234)
- BunkerM: DNS corrigé (underscores → hyphens)
- Ditto: config MongoDB et auth devops
- Documentation: session_resume + TODO.md
2026-05-17 19:18:24 -04:00