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/mezwracamaintenanceMode+ bloksmartconf { 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 lokalnegoconfig.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, workermachine.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.