Files
flywms/aggiornamento-2026-05-16-11-04.md
2026-05-19 08:52:44 +02:00

2.6 KiB

Aggiornamento 2026-05-16 11:04

Milestone prima implementazione comunicazione WMS

Questa milestone documenta la specifica concordata prima di completare la parte client-server reale tra flywms_navigation.py e un server WMS demo.

Obiettivo

Implementare una comunicazione reale, asincrona e configurabile tra:

  • client navigazione: flywms_navigation.py;
  • server WMS demo: nuovo script FastAPI.

Il client deve inviare il crop etichetta e i metadati dello snapshot. Il server deve ricevere, salvare i payload per debug, simulare OCR/WMS e rispondere ACK o NACK.

Decisioni concordate

  • Server demo basato su FastAPI.
  • Dipendenze installate:
    • fastapi;
    • uvicorn;
    • python-multipart.
  • Il server deve salvare fisicamente le immagini ricevute in una cartella di debug.
  • Modalita' risposta configurabili:
    • always-ack;
    • always-nack;
    • alternate;
    • random.
  • Il client deve poter inviare a un server su altro computer tramite IP/porta configurabili.
  • Il loop video/navigazione non deve fare la POST direttamente: invio tramite worker asincrono.
  • La sequenza logica rimane:
    • stop;
    • scatta etichetta;
    • invia WMS;
    • attende risposta o timeout;
    • riparte.
  • L'attesa della risposta deve essere gestita senza congelare brutalmente il rendering.

Configurazione prevista lato navigazione

Da aggiungere/validare in flywms_navigation.ini:

wms_enabled = false
wms_server_url = http://127.0.0.1:8088/api/v1/navigation-snapshot
wms_client_id = flywms-demo-01
wms_timeout_sec = 2.0
wms_queue_max_size = 8
wms_send_gaylord_debug = true

Per server remoto:

wms_server_url = http://192.168.1.50:8088/api/v1/navigation-snapshot

Configurazione prevista lato server

Da implementare in flywms_wms_server.py:

host = 0.0.0.0
port = 8088
fake_ack_mode = always-ack
fake_processing_sec = 0.5
received_dir = wms_received

Protocollo previsto

Endpoint:

POST /api/v1/navigation-snapshot

Payload multipart:

  • metadata: JSON;
  • label_image: JPEG crop etichetta;
  • gaylord_image: JPEG opzionale/debug.

Risposta:

{
  "status": "ACK",
  "request_id": "...",
  "message": "codice valido su WMS",
  "fake_ocr_text": "DEMO-0001",
  "processing_ms": 120
}

Oppure:

{
  "status": "NACK",
  "request_id": "...",
  "message": "codice non riconosciuto",
  "fake_ocr_text": "",
  "processing_ms": 120
}

Nota operativa

Al momento della creazione di questa milestone erano gia' stati installati i pacchetti FastAPI e iniziati i primi campi/config del client WMS. La milestone serve a fissare la specifica prima di proseguire con il completamento.