在 Kibana 中可视化你的 Bosch Smart Home 数据

作者:来自 Elastic walterra

有没有想过你的智能家居里到底发生了什么?你的暖气什么时候启动?一天中湿度如何变化?每个房间的温度模式是什么?

如果你有 Bosch Smart Home Controller II,所有这些数据都在你的本地网络中流动 ------ 但它被锁在一个只能显示当前状态的应用里。假如你能捕捉这条事件流,并将其随时间可视化,会怎么样呢?

这正是 shc2es 的作用:它连接到你的 Bosch Smart Home Controller,通过长轮询收集实时设备事件,并将数据导入 Elasticsearch,以便在 Kibana 中进行时间序列可视化。

Bosch Smart Home Controller II 为私人非商业用途提供了本地 API。控制器的 API 使用长轮询实时推送设备状态变化。温度读数、湿度水平、门/窗状态、运动检测------所有数据都会以 JSON 事件流的形式传输。

shc2es 使用 bosch-smart-home-bridge 库接入这条事件流,将所有数据存储为 NDJSON 文件,然后使用合适的字段映射导入 Elasticsearch,并提供现成的仪表板。

入门

安装

go 复制代码
`npm install -g shc2es`AI写代码

配置

在你的工作目录中创建一个 .env 文件:

ini 复制代码
`

1.  # Your controller's IP (find it in the Bosch app or your router)
2.  BSH_HOST=192.168.1.100

4.  # System password from Bosch Smart Home app
5.  # (Settings → System → Smart Home Controller)
6.  BSH_PASSWORD=your_password

`AI写代码

首次运行:配对

第一次连接时,你需要与控制器配对。这是一次性的安全握手。在运行脚本前,按下控制器上的配对按钮。脚本会生成一个客户端证书,并在本地保存以供以后连接使用。

go 复制代码
`shc2es poll`AI写代码

导入到 Elasticsearch

Poll 脚本现在会将你的智能家居数据保存为 NDJSON 文件。接下来,我们设置 Elastic Stack 来接收这些数据。首先,使用 start-local 搭建本地开发环境:

sql 复制代码
`curl -fsSL https://elastic.co/start-local | sh`AI写代码

在你的 .env 文件中添加 Elasticsearch 凭证:

ini 复制代码
`

1.  ES_NODE=http://localhost:9200
2.  ES_PASSWORD=your_es_password
3.  KIBANA_NODE=http://localhost:5601

`AI写代码

现在运行设置并开始导入数据:

sql 复制代码
`

1.  # Fetch device/room names for enrichment
2.  shc2es registry

4.  # Create index template + import dashboard
5.  shc2es ingest --setup

7.  # Watch for new events and ingest in real-time
8.  shc2es ingest --watch

`AI写代码

打开 Kibana → 仪表板 → "Smart Home",你就能看到数据生动呈现。预构建的仪表板会显示各房间的温度随时间的变化,以及暖气恒温阀开度的百分比。每个事件都带有人类可读的设备名称和房间信息,不必盯着难懂的设备 ID。

底层数据结构干净且易于查询:

json 复制代码
`

1.  {
2.    "@timestamp": "2025-12-16T08:30:00.000Z",
3.    "device.name": "Living Room Thermostat",
4.    "device.type": "ROOM_CLIMATE_CONTROL",
5.    "room.name": "Living Room",
6.    "metric.name": "temperature",
7.    "metric.value": 21.5
8.  }

`AI写代码

这让你可以轻松创建自己的可视化或运行 ES|QL 查询:

ini 复制代码
`

1.  FROM smart-home-events-*
2.  | WHERE metric.name == "temperature"
3.  | STATS avg_temp = AVG(metric.value) BY room.name
4.  | SORT avg_temp DESC

`AI写代码

额外功能:OpenTelemetry 集成

对于使用 Elastic APM 的用户,shc2es 通过 EDOT Node.js 提供自动 OpenTelemetry 仪表化。在 .env 中添加你的 APM 端点,就可以获取轮询和导入过程的追踪和指标。

试一试

如果你有 Bosch Smart Home Controller II,可以体验一下:

你是否在 Elastic Stack 中可视化智能家居数据?欢迎在评论中分享你的配置!

原文:discuss.elastic.co/t/dec-16th-...

相关推荐
Elastic 中国社区官方博客13 小时前
Elasticsearch 下采样方法:最后值采样 vs. 聚合采样
大数据·运维·elasticsearch·搜索引擎·全文检索
Andya_net15 小时前
Git | Git 核心命令深入解析:从原理到实战
大数据·git·elasticsearch
不仙5201 天前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
qziovv1 天前
Git 回退场景
大数据·git·elasticsearch
ZeroNews内网穿透1 天前
面向 AI 协作的本地客户端能力:ZeroNews Agent Skills
大数据·人工智能·elasticsearch
Elastic 中国社区官方博客1 天前
快 12 倍的 Elasticsearch 向量索引:使用 GPU 和 CPU 分层部署 NVIDIA cuVS
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·nvidia
海兰1 天前
【实用应用】React+TypeScript+Next.js博客项目
开发语言·javascript·elasticsearch
乐观的Terry2 天前
博客系统全文搜索实战:用 Elasticsearch 告别 MySQL LIKE 查询
mysql·elasticsearch
敖正炀2 天前
索引写入与数据持久化深度
elasticsearch
Achou.Wang2 天前
Docker 多阶段构建:优化 Go 应用镜像大小的最佳实践
elasticsearch·docker·golang