# 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"

  # 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
