feat : add serial port status to health
This commit is contained in:
23
app/main.py
23
app/main.py
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user