Imprimante : bandeau erreur tous écrans + reset USB + statut détaillé
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -566,6 +566,38 @@ async def api_evacuer_bourrage():
|
||||
return {"succes": True, "message": msg}
|
||||
|
||||
|
||||
@app.post("/api/imprimante/reset-usb")
|
||||
async def api_reset_usb():
|
||||
"""Réinitialise la connexion USB de l'imprimante (unbind/rebind driver)."""
|
||||
import subprocess, glob
|
||||
try:
|
||||
# Trouver le device USB Mitsubishi K60 (VID 06d3)
|
||||
devs = glob.glob("/sys/bus/usb/devices/*/idVendor")
|
||||
path = None
|
||||
for f in devs:
|
||||
if open(f).read().strip() == "06d3":
|
||||
path = f.replace("/idVendor", "")
|
||||
break
|
||||
if not path:
|
||||
return {"succes": False, "message": "Imprimante USB non trouvée — vérifiez la connexion"}
|
||||
|
||||
dev_id = path.split("/")[-1]
|
||||
# Annuler les jobs d'abord
|
||||
nom = charger_config().get("impression", {}).get("imprimante", "Mitsubishi")
|
||||
subprocess.run(["sudo", "cancel", "-a", nom], capture_output=True)
|
||||
# Unbind/rebind USB
|
||||
subprocess.run(["sudo", "sh", "-c", f"echo '{dev_id}' > /sys/bus/usb/drivers/usb/unbind"],
|
||||
capture_output=True)
|
||||
await asyncio.sleep(1)
|
||||
subprocess.run(["sudo", "sh", "-c", f"echo '{dev_id}' > /sys/bus/usb/drivers/usb/bind"],
|
||||
capture_output=True)
|
||||
await asyncio.sleep(2)
|
||||
subprocess.run(["sudo", "cupsenable", nom], capture_output=True)
|
||||
return {"succes": True, "message": "Imprimante réinitialisée — prête dans quelques secondes"}
|
||||
except Exception as e:
|
||||
return {"succes": False, "message": str(e)}
|
||||
|
||||
|
||||
@app.post("/api/imprimer")
|
||||
async def api_imprimer(donnees: dict):
|
||||
nom = donnees.get("photo", "")
|
||||
|
||||
Reference in New Issue
Block a user