Fix temperature duplication in MQTT payload
Temperature now only appears at root level, not in details. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,17 +54,15 @@ class SnmpChecker(BaseChecker):
|
||||
response_time=None
|
||||
)
|
||||
else:
|
||||
details = {str(oid): str(val) for oid, val in var_binds}
|
||||
# Only include main OID in details, not temperature
|
||||
details = {str(var_binds[0][0]): str(var_binds[0][1])}
|
||||
|
||||
# Extract temperature if configured
|
||||
if temperature_oid:
|
||||
for oid_key, val in var_binds:
|
||||
if str(oid_key) == temperature_oid:
|
||||
try:
|
||||
details["temperature"] = int(val)
|
||||
except (ValueError, TypeError):
|
||||
pass # Ignore if not a valid integer
|
||||
break
|
||||
# Extract temperature if configured (second OID in response)
|
||||
if temperature_oid and len(var_binds) >= 2:
|
||||
try:
|
||||
details["temperature"] = int(var_binds[1][1])
|
||||
except (ValueError, TypeError):
|
||||
pass # Ignore if not a valid integer
|
||||
|
||||
return CheckResult(
|
||||
success=True,
|
||||
|
||||
@@ -177,10 +177,11 @@ class LanChecker:
|
||||
}
|
||||
|
||||
if result.details:
|
||||
payload["details"] = result.details
|
||||
# Extract temperature for SNMP checks
|
||||
if "temperature" in result.details:
|
||||
payload["temperature"] = result.details["temperature"]
|
||||
payload["temperature"] = result.details.pop("temperature")
|
||||
if result.details:
|
||||
payload["details"] = result.details
|
||||
|
||||
topic = f"lan_checker/{check['id']}/state"
|
||||
self.mqtt_client.publish(topic, json.dumps(payload), retain=True)
|
||||
|
||||
Reference in New Issue
Block a user