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:
16
simulator.py
16
simulator.py
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user