پرش به مطلب اصلی

Discovery ابزارهای فرزند

Discovery یک قابلیت اختیاری Driver است. بعضی Driverها Scan می‌کنند و بعضی فقط Manual configuration دارند.

مالکیت Runtime

HTML request یا dn/discover/start
→ DiscoveryCoordinator
→ Driver discovery capability
→ NativeBusExecutor (در صورت نیاز)
→ normalized DiscoveryCandidate

HTML یا MQTT Callback نباید Bus را مستقیم Scan یا Write کند.

DiscoveryCandidate

Candidate موقت است و ممکن است این اطلاعات را داشته باشد:

{
"sessionId": "sess-123",
"candidateId": "drv-local-7",
"driverKey": "rs485.modbus.standard",
"transport": "rs485",
"protocol": "modbus-rtu",
"nativeLocator": {"busId":"rs485-1","slaveId":5},
"manufacturerHint": "Example Vendor",
"modelHint": "Controller X",
"deviceSerial": null,
"requiresManualConfiguration": true
}

candidateId یا Native locator DeviceSerial نیستند.

Manual onboarding

اگر Driver Discovery ندارد، HTML باید امکان ورود دستی فیلدهای موردنیاز Driver را فراهم کند؛ مثل Bus، Slave ID یا IP. Manual flow از نظر Authorization هیچ میان‌بر خاصی ندارد.

Offline

Native scan می‌تواند در صورت طراحی محصول محلی انجام شود، اما Final Onboarding/Bind بدون Backend authoritative تکمیل نمی‌شود. Queue نامحدود «بعداً Bind کن» ایجاد نکنید.

Bus safety

Discovery باید bounded باشد و روی Bus فعال، polling/control ترافیک فعلی را Starve نکند. Failure یک Scan نباید Childهای فعال یا Manufacturer logic را متوقف کند.