📚 科普
【教程】让温湿度计自动把真实箱温记进龟龟档案:小米温湿度计 + Home Assistant + 缘起龟长
👁 27 浏览 · 💬 0 回复 · ❤️ 0 · 最后活动 10-21 · 编辑于 10-22 14:24
适合:已经(或打算)给饲养箱装温湿度计,想让龟龟档案里每一天的最高温、最低温、湿度用真实读数,而不是靠天气预报估、靠每天手动填的龟友。全程不用刷机,温度计保持原厂固件。
先说好处
龟龟的喂食记录、成长曲线里,常常要对照"那天多少度"。温箱里是 28℃,阳台上可能只有十几度,用同一个天气预报当然不准;每天手动填又太累。
接好之后:
- 温箱、阳台箱、冬眠盒各算各的,每只龟用它所在箱子的真实温度;
- 读数每 5 分钟自动过来,不用手动填;
- 温度计掉线、电量低,页面上会有提示;
- 有 24 小时、7 天、30 天的温湿度曲线,还能一键截图发朋友。

你需要准备
- 一只或几只温湿度计(本文以小米米家的蓝牙温湿度计为例,保持原厂固件就行);
- 一台常开的 Home Assistant(简称 HA):NAS、树莓派、迷你主机,用 Docker 装都可以。没有的话,先装好它;
- 本站的账号,且已开通龟龟记录功能。
不用 Home Assistant 也可以:任何能发网络请求的程序,按「饲养箱温度」页里「先用命令行试一下」的格式发就行。本文只讲最常见的这一条路。
第一步:让温度计出现在 Home Assistant 里
这一步全在 HA 里做,和本站无关。
- 装好 HACS(HA 的第三方集成商店)。
- 在 HACS 里搜 Xiaomi Home(小米官方的集成),点下载,然后重启 Home Assistant。
- 「设置 → 设备与服务 → 添加集成」,搜 Xiaomi Home。
- 按提示用小米账号授权登录,区域选中国大陆,选中温度计所在的家。
- 在「设备」里找到温度计:每只都有温度、湿度、电池三个实体,数值能显示,就成功了。

如果在 HACS 里下载时提示"该版本不能用于 HACS",是 HACS 或 Home Assistant 的版本太老了,先把它们升级,再下载。
如果之前装过别的小米集成,在实体列表里看到「不再提供此实体」之类的提示,说明那个实体已经没有对应的集成在管了,确认没用以后可以删掉。
第二步:找到每只温度计三个实体的名字
HA 左侧「开发者工具 → 状态」,在过滤框里搜 temperature。每只温度计会有三个实体,名字形如:
sensor.xxxx_temperature_p_2_1 (温度)
sensor.xxxx_relative_humidity_p_2_2 (湿度)
sensor.xxxx_battery_level_p_3_1 (电池)名字里的编号各家不同,以你看到的为准。记下来,下一步要用。
用「开发者工具 → 模板」确认一下:输入
{{ states('sensor.你的温度实体') | float(none) }}右边显示一个数字(比如 28.6)就对了;显示 None 说明实体名写错了。
第三步:给每只温度计起一个固定编号
这是整个方案里最值得先想好的一步:
- 编号只跟温度计本身走,不要写位置。 比如
t2-01、t2-02、t3-01、pro-01(分别是 2 代、3 代、Pro 的第几只)。 - 建议在温度计背面贴个小标签,写上编号。
- 位置在网站里改。 以后温度计从温箱挪到冬眠盒,只需要在网站里改"所在饲养箱",不用动 HA 的配置。

第四步:把配置加到 Home Assistant
在 NAS 的 config 目录里打开 configuration.yaml(Docker 版 HA 没有"文件编辑器"插件,直接改挂载出来的文件就行),把下面这一段加到文件最后,前面空一行。
先打开本站的 饲养箱温度 页,里面有"推送地址"和"密钥",下面两处换成你自己的;每只温度计一项,把编号和三个实体名换成自己的:
rest_command:
yqgui_sensors:
url: "这里粘贴 /sensors 页面上的推送地址"
method: POST
headers:
Authorization: "Bearer 这里粘贴你的密钥"
Content-Type: "application/json"
payload: >-
{% set boxes = [
{"id": "t2-01", "name": "温湿度计 #01",
"t": "sensor.(温度实体)",
"h": "sensor.(湿度实体)",
"b": "sensor.(电池实体)"},
{"id": "t3-01", "name": "温湿度计 #02",
"t": "sensor.(温度实体)",
"h": "sensor.(湿度实体)",
"b": "sensor.(电池实体)"}
] %}
{"readings": [{% for x in boxes %}{"id": "{{ x.id }}", "name": "{{ x.name }}",
"temp": {{ states(x.t) | float(none) | tojson }}, "hum": {{ states(x.h) | float(none) | tojson }},
"battery": {{ states(x.b) | float(none) | tojson }}, "at": "{{ now().isoformat() }}"}{{ "," if not loop.last }}{% endfor %}]}几点说明:
- 缩进必须用空格,不要用 Tab;
payload下面各行的缩进要一致。 - 最后一项的
}后面不要加逗号,其余项后面要有逗号。 - 如果文件里已经有
rest_command:,把yqgui_sensors:合并到它下面,不要写两个。 - 密钥只能用来推送读数,不能看你的任何数据,但也不要贴到公开的地方,包括截图。
- 以后增加温度计,在列表里照样子再加一项就行。读不到数据的实体,网站会自动跳过,不会报错。
保存后,在 HA 里「开发者工具 → YAML」点「检查配置」,提示有效再重启 HA。
第五步:手动推一次,再设自动
- 重启后,「开发者工具 → 动作」里选
rest_command.yqgui_sensors,点「执行动作」。 - 回到 饲养箱温度 页刷新,温度计应该已经出现了,读数和 HA 里一致。
- 没出现的话,看 HA 的「设置 → 系统 → 日志」里有没有 rest_command 的报错;常见原因是实体名写错、缩进不对、密钥没贴全。
- 确认没问题后,设自动推送:HA「设置 → 自动化与场景」新建自动化,触发选"时间模式",分钟填
/5(每 5 分钟);动作选rest_command.yqgui_sensors。
第六步:在网站里起名、选饲养箱
饲养箱温度 页的"温度计"表格里:
- 名字:随便起,比如"大温箱温度计"。
- 所在饲养箱:要和龟龟档案里龟的"饲养箱"名字完全一致,龟才能用上它的读数。
- 名字和"启用"改完就自动保存,不用点保存。

(图中为示例数据:上面是各箱子的当前温湿度和今天的最高、最低温,中间是曲线(每个点一个数值,鼠标放上去名字高亮,点名字可以隐藏这条曲线),下面是统计表和温度计列表。页面下方还有一张逐条的详细数值表,📷 按钮可以分别截取温度曲线、湿度曲线和数值表。)
几个常见的用法
| 情况 | 怎么办 |
|---|---|
| 一个箱子放了几只温度计 | 都填同一个饲养箱,网站取它们的平均 |
| 一只温度计同时管几个箱子(比如阳台上两个箱子共用一只) | "所在饲养箱"里用英文分号 ; 隔开几个名字,例如 阳台大箱;阳台小箱 |
| 把温度计换到别的箱子(比如冬眠盒) | 改"所在饲养箱",旁边会问一句,点"换了位置"(可以填换过去的时间);以前的读数仍算在原来的箱子里,不会被改写 |
| 只是给箱子改了名字(温度计没动) | 改"所在饲养箱"后点"只是改名",曲线、报告、历史、龟龟档案里的饲养箱名字一起改成新的 |
| 想把页面发给朋友 | 点页面右上角的 📷,生成带外框的图片;图里不含密钥 |
它是怎么用这些读数的
- 一个箱子有一天12 小时以上的读数,那一天的最高温、最低温、湿度就用它,替代天气预报和手动校正;当天还没满,先显示已有的。
- 超过 45 分钟没有新读数,显示"掉线";电量低于 20%,显示"电量低"。
- 起初几天,历史曲线里还是天气预报的数据,读数积累起来以后才会变成真实读数。
需要提醒的地方
- 一只温度计共用两个箱子,意味着两个箱子用的是同一个读数。如果两个箱子的实际温度有差别(一个晒太阳、一个背阴),网站上看不出来,这是取舍,自己判断。
- 云端接入依赖小米账号的接口;接口变动时,HA 里的集成可能需要更新。
- 本文的步骤,HA 一侧是按小米官方集成走通的;其他品牌的温度计,只要在 HA 里能看到温度、湿度实体,第二步以后都一样。
- 这是饲养参考,不能代替对龟龟状态的观察;龟龟明显不舒服,请尽快就医。
有问题可以在下面留言,写清楚是第几步、看到了什么(报错原文最好)。
🤍 0 · 登录后可以点赞、评论、关注