Files
smart-city-digital-twin-mar…/emqx-rule-configuration.md

1.9 KiB

EMQX Rule Engine Configuration

Objectif: Forward MQTT messages from all brokers to Fiware brokers

Architecture cible

  • Simulator → MQTT → EMQX, Mosquitto, BunkerM
  • EMQX Rule Engine → HTTP POST → Orion-LD, Stellio, FROST-Server
  • Mosquitto Bridge → EMQX (qui fait le forwarding)
  • BunkerM Bridge → EMQX (qui fait le forwarding)

Configuration EMQX (via Dashboard: http://localhost:18081)

1. Créer une Règle (Rule) pour forwarder vers Orion-LD

  • SQL: SELECT * FROM "city/sensors/#"
  • Action: HTTP Server (Webhook)
    • URL: http://localhost:2026/ngsi-ld/v1/entities
    • Headers:
      • Content-Type: application/ld+json
      • NGSILD-Tenant: smartcity
    • Body: Transformez le payload MQTT en NGSI-LD

2. Créer une Règle pour forwarder vers Stellio

  • SQL: SELECT * FROM "city/sensors/#"
  • Action: HTTP Server
    • URL: http://localhost:8080/ngsi-ld/v1/entities
    • Headers: Similar to Orion-LD

3. Créer une Règle pour forwarder vers FROST-Server

  • SQL: SELECT * FROM "city/sensors/#"
  • Action: HTTP Server
    • URL: http://localhost:8086/FROST-Server/v1.1/...
    • Body: Format SensorThings API

Alternative: Utiliser Mosquitto Bridge

Dans /mosquitto/config/mosquitto.conf:

# Bridge vers EMQX (déjà configuré)
connection emqx_bridge
address emqx_emqx_1:1883
topic city/sensors/# out 2

# Forward vers HTTP (nécessite un plugin ou script externe)
# Mosquitto ne supporte pas nativement MQTT-to-HTTP

Solution recommandée

  1. Configurer EMQX Rule Engine via Dashboard (http://localhost:18081)
  2. Mosquitto et BunkerM : Bridge vers EMQX (qui fait le forwarding)
  3. Vérifier que Orion-LD, Stellio, FROST reçoivent les données

Test manuel

# Publier un message sur EMQX
mosquitto_pub -h localhost -p 11883 -t "city/sensors/test" -m '{"id":"test"}'

# Vérifier Orion-LD
curl http://localhost:2026/ngsi-ld/v1/entities/test