feat(大屏): 设备绑定流 — 永久设备ID+待绑定页(连接码)+MQTT绑定确认
- config.getDeviceId:首启生成并持久化永久设备ID,作为 MQTT client_id(稳定可控)。 - tenant.js 改设备绑定:registerDevice/requestBindCode/applyBound(存 token+tenant)/isDeviceBound。 - mqtt.js:client_id=device_id;订阅 bind/<dev>(未绑定确认)+command/tick(租户)。 - main.jsx:未绑定→BindScreen(注册+取8位码+监听绑定频道, 绑定后 reload);已绑定→App。 - BindScreen:展示 8 位连接码+设备ID+等待园区端绑定。yarn build 通过。
This commit is contained in:
@@ -60,3 +60,15 @@ export function getVoiceWsUrl() {
|
||||
export const MQTT_TOPIC_COMMAND = 'opc/display/command';
|
||||
export const MQTT_TOPIC_TICK = 'opc/dashboard/tick';
|
||||
export const MQTT_TOPIC_HEARTBEAT = 'opc/display/heartbeat';
|
||||
export const MQTT_TOPIC_BIND = 'opc/display/bind';
|
||||
|
||||
/* ---- 大屏永久设备 ID:首次生成并持久化,作为 MQTT 客户端名 / 绑定凭据 ---- */
|
||||
const DEVICE_ID_KEY = 'dpm_device_id';
|
||||
export function getDeviceId() {
|
||||
let id = localStorage.getItem(DEVICE_ID_KEY);
|
||||
if (!id) {
|
||||
id = 'DP-' + Math.random().toString(36).slice(2, 8).toUpperCase() + Date.now().toString(36).slice(-6).toUpperCase();
|
||||
localStorage.setItem(DEVICE_ID_KEY, id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user