diff --git a/simulator.py b/simulator.py index f1b9d7da..d035cb8c 100644 --- a/simulator.py +++ b/simulator.py @@ -797,13 +797,26 @@ def _or_put(asset_id: str, payload: dict) -> bool: 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(payload.get("version", 1)), + "If-Match": str(version), }, method="PUT") with http_request_duration.labels(broker="openremote", method="PUT").time():