feat : add serial port status to health
This commit is contained in:
+21
-2
@@ -25,6 +25,14 @@ def hex2b(s: str) -> bytes:
|
|||||||
parts = [p for p in s.split() if p]
|
parts = [p for p in s.split() if p]
|
||||||
return bytes(int(p, 16) for p in parts)
|
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()
|
APP_MODE = env("APP_MODE", "serial").strip().lower()
|
||||||
if APP_MODE not in ("serial", "mock"):
|
if APP_MODE not in ("serial", "mock"):
|
||||||
@@ -50,14 +58,25 @@ class CustomReq(BaseModel):
|
|||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
def 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 {
|
return {
|
||||||
"ok": True,
|
"ok": False if port_connected is False or (cfg is None or not cfg.port) else True,
|
||||||
"mode": APP_MODE,
|
"mode": APP_MODE,
|
||||||
"busy": bridge.busy(),
|
"busy": bridge.busy(),
|
||||||
"hostname": socket.gethostname(),
|
"hostname": socket.gethostname(),
|
||||||
"timestamp": time.time(),
|
"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,
|
"baudrate": cfg.baudrate if cfg else None,
|
||||||
|
"port_connected": port_connected,
|
||||||
|
"port_error": port_error,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user