Przejdź do treści

Etap 9 — SmartConf: tryb serwisowy + discovery + live-konfiguracja

Onboarding maszyny przez lokalnego agenta SmartConf. To etap, w którym agent staje się preferowaną drogą do sprzętu (zamiast bezpośredniego Modbusa).

Co weszło

Backend

  • Machine: maintenanceMode (+ maintenanceAuto), smartconfUrl/smartconfApiKey/smartconfMachineType/smartconfLockerCount/smartconfConnectedAt, serviceModePin.
  • GET /machines/me zwraca maintenanceMode + blok smartconf { url, apiKey, doorCount }.
  • PATCH :id/smartconf (połącz), PATCH :id/maintenance (wyjście bramkowane żywym połączeniem → 409), POST :id/discover-smartconf, PATCH :id/service-pin.

Web

  • Panel „Połączenie ze SmartConf / Tryb serwisowy": discovery po IP/zakresie, lista kandydatów (poll 4 s), połącz (URL + opcjonalny klucz), pobierz skrytki, wyjdź z trybu (bramkowane).

Kiosk (1.2.0–1.2.3)

  • Pełnoekranowy Service Mode (gdy maintenanceMode).
  • Live-rekonfiguracja: SmartConfHardware.applyConfig() z /machines/me — bez restartu; fallback do lokalnego config.json.
  • Skan localhost + /24 kart sieciowych (DISCOVER_SMARTCONF); apiBlocked (401/403/503) ≠ awaria sprzętu.
  • Auto-maintenance: gdy agent nieosiągalny — worker parkuje maszynę (maintenanceAuto=true), zdejmuje po odzyskaniu (tylko jeśli park był automatyczny); debounce, by restart kiosku nie migał trybem.
  • Róg serwisowy bramkowany PIN-em (domyślnie 222222).

Pliki / endpointy

  • backend/src/machines/machines.service.ts, machines.controller.ts, worker machine.worker.ts (reconcile).
  • Kiosk: service_mode_screen.dart, hardware/smartconf_hardware.dart, machine_task_poller.dart, core/machine_info.dart.

Status

Wdrożone (kiosk 1.2.0–1.2.3). Tryb serwisowy później rozdzielony na dwa (etap-21), a nadzór procesu kiosku przejął Kiosk Helper.

Powiązane