feat(lorawan): démarrage ChirpStack et The Things Stack

- ChirpStack opérationnel (port 8080/8090, gateway bridge UDP 1700)
- The Things Stack opérationnel (port 1885/1884, gateway UDP 1701)
- Fichages de configuration créés
- Docker-compose corrigés (réseaux smartcity-shared)
- Désactivation agentLink sur 35 assets du simulateur
- Correction _or_put: suppression If-Match header (403)
- realm smartcity identifié pour les assets du simulateur
This commit is contained in:
Eric FELIXINE
2026-05-12 17:34:53 -04:00
parent a05e13c30c
commit 5fde1a2c8d
9 changed files with 129 additions and 40 deletions

View File

@@ -798,31 +798,17 @@ def _get_or_token() -> str:
return ""
def _or_put(asset_id: str, payload: dict) -> bool:
"""PUT update sur un asset OpenRemote (avec version)."""
"""PUT update sur un asset OpenRemote (sans If-Match pour éviter 403)."""
token = _get_or_token()
if not token:
return False
try:
# Récupérer la version actuelle de l'asset
get_url = f"{OR_URL}/api/{OR_REALM}/asset/{asset_id}"
get_req = urllib.request.Request(get_url, headers={"Authorization": f"Bearer {token}"})
version = 1
try:
with urllib.request.urlopen(get_req, timeout=5) as resp:
asset_data = json.loads(resp.read().decode())
version = asset_data.get("version", 1)
except:
pass # Si GET échoue, utiliser version=1
# Ajouter la version au payload
payload["version"] = version
body = json.dumps(payload).encode()
url = f"{OR_URL}/api/{OR_REALM}/asset/{asset_id}"
req = urllib.request.Request(url, data=body,
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
"If-Match": str(version),
},
method="PUT")
with http_request_duration.labels(broker="openremote", method="PUT").time():