- 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
118 lines
3.6 KiB
YAML
118 lines
3.6 KiB
YAML
# Smart City Digital Twin Martinique — Main Docker Compose
|
|
# Usage: docker compose -p smart-city up -d
|
|
# This file defines the simulator and includes other services
|
|
|
|
version: '3.8'
|
|
|
|
networks:
|
|
smartcity-shared:
|
|
external: true
|
|
traefik-public:
|
|
external: true
|
|
openremote_default:
|
|
external: true
|
|
|
|
services:
|
|
# Smart City Simulator
|
|
simulator:
|
|
build: .
|
|
container_name: smart-city-simulator
|
|
tty: true
|
|
stdin_open: true
|
|
networks:
|
|
- smartcity-shared
|
|
- traefik-public
|
|
- openremote_default
|
|
environment:
|
|
# MQTT Brokers - ALL enabled
|
|
- ENABLE_EMQX=1
|
|
- ENABLE_MOSQUITTO=1
|
|
- ENABLE_BUNKER=1
|
|
- BUNKERM_HOST=bunkerm-bunkerm-1
|
|
- BUNKERM_PORT=1900
|
|
# Context Brokers (DESACTIVE - tout passe par les IoT Agents via MQTT)
|
|
- ENABLE_ORION=false
|
|
- ENABLE_STELLIO=false
|
|
- ENABLE_FROST=false
|
|
# Databases
|
|
- ENABLE_INFLUX=true
|
|
- INFLUX_URL=http://smart-city-influxdb:8086
|
|
# OpenRemote
|
|
- ENABLE_OPENREMOTE=1
|
|
- OR_URL=http://openremote_manager_1:8080
|
|
- OR_REALM=master
|
|
- OR_TOKEN_REALM=master
|
|
- OR_ADMIN_USER=admin
|
|
- OR_ADMIN_PASS=Digitribe972
|
|
- OR_CLIENT_SECRET=0oQjzTfiEELYmj5jFwT4iIuWUDtQDvVa
|
|
# Pulsar (Disabled for demo stability)
|
|
- ENABLE_PULSAR=false
|
|
# Redpanda (Disabled)
|
|
- ENABLE_REDPANDA=false
|
|
- REDPANDA_BROKERS=smart-city-redpanda:9092
|
|
# Simulation settings
|
|
- INTERVAL=5
|
|
- LOG_LEVEL=INFO
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=false"
|
|
|
|
# GeoJSON Proxy — serves OpenRemote IoT sensor assets as GeoJSON for map display
|
|
geojson-proxy:
|
|
build: ./geojson-proxy
|
|
container_name: smart-city-geojson-proxy
|
|
networks:
|
|
- smartcity-shared
|
|
- traefik-public
|
|
- openremote_default
|
|
environment:
|
|
- OR_URL=http://openremote_manager_1:8080
|
|
- OR_ADMIN_USER=admin
|
|
- OR_ADMIN_PASS=Digitribe972
|
|
- OR_REALM=master
|
|
- DB_HOST=openremote-postgresql-1
|
|
- DB_PORT=5432
|
|
- DB_NAME=openremote
|
|
- DB_USER=postgres
|
|
- DB_PASS=
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.geojson-proxy.rule=Host(`geojson-proxy.digitribe.fr`)"
|
|
- "traefik.http.routers.geojson-proxy.entrypoints=websecure"
|
|
- "traefik.http.routers.geojson-proxy.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.geojson-proxy.loadbalancer.server.port=8080"
|
|
restart: unless-stopped
|
|
|
|
# IoT Agent BunkerM - traduce les msgs MQTT bunker/bunker vers Orion-LD
|
|
iot-agent-bunkerm:
|
|
image: fiware/iotagent-json:latest
|
|
container_name: smart-city-iot-agent-bunkerm
|
|
networks:
|
|
- smartcity-shared
|
|
ports:
|
|
- "4043:4041"
|
|
environment:
|
|
- IOTA_CB_HOST=smart-city-orion-ld
|
|
- IOTA_CB_PORT=1026
|
|
- IOTA_CB_NGSI_VERSION=v2
|
|
- IOTA_REGISTRY_TYPE=memory
|
|
- IOTA_DEFAULT_APIKEY=smartcity-api-key
|
|
- IOTA_MQTT_USERNAME=bunker
|
|
- IOTA_MQTT_PASSWORD=bunker
|
|
- IOTA_MQTT_HOST=bunkerm_bunkerm_1
|
|
- IOTA_MQTT_PORT=1900
|
|
- IOTA_LOG_LEVEL=DEBUG
|
|
restart: unless-stopped
|
|
|
|
# InfluxDB (defined in docker-compose.influxdb.yml)
|
|
# Run with: docker compose -f docker-compose.yml -f docker-compose.influxdb.yml up -d
|
|
|
|
# Grafana (defined in docker-compose.grafana.yml)
|
|
# Run with: docker compose -f docker-compose.yml -f docker-compose.grafana.yml up -d
|
|
|
|
# Pulsar (defined in pulsar/docker-compose.yml)
|
|
# Run with: docker compose -f docker-compose.yml -f pulsar/docker-compose.yml up -d
|
|
|
|
# Redpanda (defined in redpanda/docker-compose.yml)
|
|
# Run with: docker compose -f docker-compose.yml -f redpanda/docker-compose.yml up -d
|