HomeAssistant 一键导出「实体ID + 名称 + 状态」全流程
适用于 任何版本、无需插件、无需令牌(也提供令牌兜底方案)
1. 打开开发者工具
- 在浏览器中进入 HomeAssistant → 左侧菜单 「开发者工具」 → 「状态」(States)。
- 先让列表加载完整:
- 滚动到最底部,确保所有行都已渲染。
2. 进入浏览器控制台
- Windows / Linux:
F12→ 切到 Console / kong'zhi't 标签。 - macOS:
Cmd + Option + I→ Console。
3. 粘贴执行「万能抓取脚本」
> 兼容 http / https、新版 / 旧版 HA 界面、无 copy() 函数 的浏览器。
把下面整段代码一次性粘进 Console,回车即可:
(async () => {
/* ========== 通用抓取函数 ========== */
function grabTable() {
const rows = Array.from(document.querySelectorAll('tbody tr'));
if (!rows.length) return [];
return rows.map(tr => {
const t = Array.from(tr.querySelectorAll('td,th'), td => td.innerText.trim());
return {id: t[0], name: t[1], state: t[2]};
});
}
/* ========== ① 优先从页面抓 ========== */
let data = grabTable();
if (data.length) return output(data);
/* ========== ② 兜底:REST API 全量 ========== */
const token = prompt('页面未抓到表格,请输入「长期访问令牌」:');
if (!token) return;
const res = await fetch('/api/states', {headers: {Authorization: `Bearer ${token}`}});
const json = await res.json();
data = json.map(s => ({
id: s.entity_id,
name: s.attributes.friendly_name || '',
state: s.state
}));
output(data);``````
/* ========== 统一输出:弹窗全选复制 ========== */
function output(arr) {
const tsv = ['entity_id\tname\tstate']
.concat(arr.map(r => `${r.id}\t${r.name}\t${r.state}`))
.join('\n');
const w = window.open('', '', 'width=700,height=500,scrollbars=1');
w.document.write('<pre>' + tsv + '</pre>');
w.document.close();
w.focus();
console.log(`✅ 已生成 ${arr.length} 条记录,请在新窗口 Ctrl+A → Ctrl+C`);
}
})();
4. 复制到新窗口
- 脚本执行后会 自动弹出小窗口,里面是 Tab 分隔 的纯文本。
- Ctrl + A → Ctrl + C 全部复制。
5. 粘进 Excel 并分列
| 步骤 | 操作 |
|---|---|
| 5.1 | 不要直接 Ctrl+V!Excel → 数据 → 从文本/CSV 获取 → 粘贴剪贴板内容(或先存为 .txt)。 |
| 5.2 | 预览窗口 分隔符 只勾选 Tab → 加载。 |
| 5.3 | 得到标准三列:entity_id、name、state。 |
> 若已直接粘进一列,可事后 数据 → 分列 → 选 Tab 同样切成三列。
6. 完成 & 后续
- 现在可随意 筛选、排序、透视表。
- 想自动化?把脚本存为浏览器书签,一键导出,随时复用。
7. 脚本更新记录与进阶用法
| 版本 | 更新内容 |
|---|---|
| v1.0 | 初始版本,支持页面表格抓取与 API 兜底 |
| v1.1 | 新增弹窗复制法,兼容 http 及无 copy() 环境 |
| v1.2 | 自动识别 HA 2023.4+ 影子 DOM,减少 API 调用 |
7.1 一键书签(Bookmarklet)
把下面代码保存为浏览器书签,以后在任何 HA「状态」页面点一下书签即可导出:
javascript:(async()=>{async function grabTable(){const rows=Array.from(document.querySelectorAll('tbody tr'));if(!rows.length)return[];return rows.map(tr=>{const t=Array.from(tr.querySelectorAll('td,th'),td=>td.innerText.trim());return{id:t[0],name:t[1],state:t[2]}})}let data=grabTable();if(!data.length){const t=prompt('页面未抓到表格,请输入长期访问令牌:');if(!t)return;const r=await fetch('/api/states',{headers:{Authorization:`Bearer ${t}`}});const j=await r.json();data=j.map(s=>({id:s.entity_id,name:s.attributes.friendly_name||'',state:s.state}))}const tsv=['entity_id\tname\tstate'].concat(data.map(r=>`${r.id}\t${r.name}\t${r.state}`)).join('\n');const w=window.open('','','width=700,height=500,scrollbars=1');w.document.write('<pre>'+tsv+'</pre>');w.document.close();w.focus();console.log(`✅ 已生成${data.length}条记录,请在新窗口Ctrl+A→Ctrl+C`)})();
华纳圣淘沙公司开户新手教程
零基础学会(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户保姆级教程(183-8890-9465薇-STS5099)
一步步教你开通华纳圣淘沙公司账户(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户分步图解
首次开户必看:(183-8890-9465薇-STS5099)
华纳圣淘沙全攻略
华纳圣淘沙公司开户实操手册(183-8890-9465薇-STS5099)
华纳圣淘沙开户流程视频教程
手把手教学:(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户完全指南(183-8890-9465薇-STS5099)
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】