- Documentation des découvertes et corrections appliquées - Problèmes restants identifiés (connexion MQTT, topics, déconnexion) - Prochaines étapes recommandées
3.6 KiB
État des lieux - Localisation des capteurs sur les maps OpenRemote
Problème initial
Les capteurs du simulateur n'apparaissent pas sur les maps OpenRemote (realm master et smart city martinique).
Découvertes
1. Deux sets d'assets en BDD
- Anciens assets (avec suffixe
(traffic),(airquality), etc.) : ontagentLinkMQTT +locationGeoJSON → ce sont les bons - Nouveaux assets (sans suffixe, créés par le simulateur via REST) : sans
agentLink, sanslocation
2. Format de la location
L'attribut location dans OpenRemote utilise le format GeoJSON Point :
{"type": "GeoJSONPoint", "value": {"type": "Point", "coordinates": [lat, lon]}}
3. Compteur SENSORS global
Le compteur utilisé pour générer les clés SENSORS est global (pas par type) :
- traffic: 0-9, airquality: 10-19, parking: 20-29, noise: 30-39, weather: 40-49, light: 50-59
4. API REST refuse les PUT sur assets avec agentLink
L'API REST d'OpenRemote refuse les mises à jour (HTTP 403) sur les assets qui ont un agentLink actif. C'est une protection pour éviter les conflits avec l'agent MQTT.
5. Connexion MQTT au broker Artemis
Le broker Artemis d'OpenRemote nécessite un "Service user" avec username/password pour l'authentification MQTT (rc=5 = Not Authorized sans credentials). La documentation mentionne ce mécanisme mais ne détaille pas comment créer le service user.
6. Topics MQTT pour l'API interne
La documentation indique que les topics pour publier des valeurs d'attributs sont :
{realm}/{clientId}/writeattributevalue/{attributeName}/{assetId}- Payload: JSON de la valeur{realm}/{clientId}/writeattribute/{attributeName}/{assetId}- Payload:{"value": <VALUE>, "timestamp": <TIMESTAMP>}
Le format smartcity/{type}/{id} utilisé par le simulateur est pour les agents MQTT externes, pas pour l'API MQTT interne.
Corrections appliquées au simulateur
- ASSET_MAP mis à jour avec les bons asset IDs (ceux avec agentLink + location)
- Location ajoutée dans le payload REST (GeoJSONPoint)
- Topics MQTT corrigés (index basé sur position du capteur, pas compteur global)
- REST désactivé pour les assets avec agentLink (403)
- Connexion MQTT anonyme au broker Artemis (rc=5 persistant)
Problèmes restants
Connexion MQTT au broker Artemis
Le broker refuse les connexions anonymes (rc=5). Il faut un "Service user" dont la création n'est pas documentée. Solutions possibles :
- Créer un service user via l'UI OpenRemote (Manager UI → Users)
- Modifier la configuration Artemis pour accepter les connexions anonymes
- Utiliser un broker MQTT externe (EMQX) et configurer un agent MQTT dans OpenRemote
Topics MQTT
Le simulateur publie sur smartcity/{type}/{index} mais l'API MQTT d'OpenRemote attend {realm}/{clientId}/writeattributevalue/{attributeName}/{assetId}. Il faut soit :
- Changer le format des topics dans le simulateur
- Configurer un agent MQTT dans OpenRemote qui écoute sur
smartcity/#
Déconnexion cyclique
Le broker Artemis déconnecte le client MQTT du simulateur de manière cyclique. Cause possible : keepalive trop court ou configuration du broker.
Prochaines étapes recommandées
- Créer un service user dans OpenRemote pour l'authentification MQTT
- Configurer un agent MQTT dans OpenRemote qui écoute sur
smartcity/#et mappe les topics vers les attributs des assets - Corriger le format des topics dans le simulateur pour utiliser le format de l'API MQTT d'OpenRemote
- Tester la connexion MQTT avec les bons credentials
- Vérifier la localisation sur les maps OpenRemote une fois que les agents MQTT reçoivent les données