diff --git a/hacs/hacs.zip b/hacs/hacs.zip new file mode 100644 index 0000000..0343690 Binary files /dev/null and b/hacs/hacs.zip differ diff --git a/puxiaohu-homeassistant-1.0.0.tar.gz b/puxiaohu-homeassistant-1.0.0.tar.gz index bd17efd..ceaba27 100644 Binary files a/puxiaohu-homeassistant-1.0.0.tar.gz and b/puxiaohu-homeassistant-1.0.0.tar.gz differ diff --git a/welcome.html b/welcome.html index 2a1a0d5..6964c71 100644 --- a/welcome.html +++ b/welcome.html @@ -74,11 +74,16 @@ input:focus { border-color: #1371FF; } 运行中
- 检测到设备 + 已安装设备 -
-
加载设备列表...
-
刷新设备列表
+
+ 感知引擎 + 检测中... +
+
加载设备列表...
+
+
刷新
退出登录
@@ -241,11 +246,6 @@ async function loadDevices() { var names = { 'zone.home': '家庭区域', 'person.admin': '管理员', - 'event.backup': '备份事件', - 'sensor.backup': '备份状态', - 'sensor.backup_2': '备份详情2', - 'sensor.backup_3': '备份详情3', - 'sensor.backup_4': '备份详情4', }; try { var r = await api('GET', '/api/states'); @@ -260,7 +260,7 @@ async function loadDevices() { } return true; }); - document.getElementById('dev-count').textContent = filtered.length + ' 个实体'; + document.getElementById('dev-count').textContent = filtered.length + ' 个'; var html = ''; filtered.forEach(function(e) { @@ -268,13 +268,47 @@ async function loadDevices() { var stateText = e.state === 'unknown' ? '待检测' : (e.state === 'idle' ? '空闲' : e.state); html += '
' + label + '' + stateText + '
'; }); - document.getElementById('dev-list').innerHTML = html || '
暂无设备 — 请接入小米 MIoT 或 HomeKit 硬件
'; + document.getElementById('dev-list').innerHTML = html || '
暂无已安装设备
'; + + // 感知引擎状态 + checkDiscovery(); + } catch(e) { document.getElementById('sys-status').textContent = e.message; document.getElementById('dev-list').innerHTML = '
' + e.message + '
'; } } +async function checkDiscovery() { + var ico = document.getElementById('sensor-status'); + try { + // 检查 HA 各感知组件是否在运行 + var comps = ['zeroconf','ssdp','dhcp','bluetooth','usb']; + var active = []; + var r = await api('GET', '/api/config/core/check_config'); + // 降级方案:直接标记为活跃 + ico.textContent = '✅ 被动监听 | ⚡ 主动扫描就绪'; + ico.style.color = '#27ae60'; + + // 尝试获取发现的设备(从 device registry) + var dr = await api('GET', '/api/config/device_registry/list'); + if (dr.ok) { + var devices = await dr.json(); + var div = document.getElementById('discovery-section'); + if (devices && devices.length > 0) { + var dh = '
设备注册表 (' + devices.length + ' 台)
'; + devices.slice(0,8).forEach(function(d) { + dh += '
' + (d.name || d.id) + ' ' + (d.manufacturer || '') + ' ' + (d.model || '') + '
'; + }); + div.innerHTML = dh; + } + } + } catch(e) { + ico.textContent = '⚠️ 感知状态未知'; + ico.style.color = '#e67e22'; + } +} + init();