feat : add serial port status to health

This commit is contained in:
2026-01-13 17:43:05 +01:00
parent 3292dfbede
commit f442748d95

View File

@@ -25,6 +25,14 @@ def hex2b(s: str) -> bytes:
parts = [p for p in s.split() if p]
return bytes(int(p, 16) for p in parts)
def serial_port_connected(port: str):
try:
from serial.tools import list_ports
ports = {p.device for p in list_ports.comports()}
return port in ports, None
except Exception as e:
return None, str(e)
APP_MODE = env("APP_MODE", "serial").strip().lower()
if APP_MODE not in ("serial", "mock"):
@@ -50,14 +58,25 @@ class CustomReq(BaseModel):
@app.get("/health")
def health():
port_connected = None
port_error = None
port_status = None
if cfg and cfg.port:
port_connected, port_error = serial_port_connected(cfg.port)
if port_connected is False:
port_status = "Port COM pas connecte"
if cfg is None or not cfg.port:
port_status = "Port COM pas configure"
return {
"ok": True,
"ok": False if port_connected is False or (cfg is None or not cfg.port) else True,
"mode": APP_MODE,
"busy": bridge.busy(),
"hostname": socket.gethostname(),
"timestamp": time.time(),
"port": cfg.port if cfg else None,
"port": port_status if port_status else (cfg.port if cfg else None),
"baudrate": cfg.baudrate if cfg else None,
"port_connected": port_connected,
"port_error": port_error,
}