通过 Home Assistant 让 OpenWrt 软路由的 CPU 温度显示在苹果 Homekit 上

通过 Home Assistant 的 Synology 集成我们已经可以让群晖的CPU温度显示在 Homekit 上,我使用的 NanoPi R2S 路由器 CPU 发热很严重,为了方便查看路由器温度决定尝试下看看能不能接入 Home Assistant。

Home Assistant 官方有 OpenWrt 集成,可惜那个只能追踪设备。搜了下确实有成功把路由器温度接入 Home Assistant 的案例,一个是 K3 官改固件一个是梅林固件,并没有 OpenWrt 的。

[技术探讨] 监测K3路由器温度

[进阶教程] 梅林路由器CPU和无线芯片温度接入Home Assistant

我参考第一个链接通过 Command Line 成功让软路由的温度显示在 Home Assistant 和 Homekit 上。

方法如下:

  1. 打开 Home Assistant 的终端,以我通过群晖 Docker 安装的 Home Assistant 为例,打开 Docker 应用的容器选项,找到 Home Assistant 的容器,点上面的详情,再切换终端机,新建 bash,进入终端界面了。
  2. 输入 ssh-keygen 回车创建密钥,输入密钥的名字,然后回提示你设置密码,密码留空直接回车两下就创建完成了。

我这里的私钥 id_rsa (图上名字填错)和公钥 id_rsa.pub 都存在 /config 目录下。

ssh-keygen
  1. 输入 cat id_rsa.pub 回车查看公钥,拷贝里面的内容。
cat id_rsa.pub

在 OpenWrt 界面的 系统 – 管理权 – SSH密钥 中粘贴并应用。

  1. 在 Home Assistant 的终端输入下面的命令测试,成功会输出温度数字。如果失败,尝试赋予 id_rsa 私钥文件 700 权限。
chmod -R 700 id_rsa
ssh -o StrictHostKeyChecking=no -i /config/id_rsa root@路由器IP cut -c1-2 /sys/class/thermal/thermal_zone0/temp
  1. 在 Home Assistant 的 configuration.yaml 配置文件添加下面的配置并重启 Home Assistant 服务,就能在 Home Assistant 和 Homekit 里看到路由器温度的传感器了。
homekit:

sensor:
  - platform: command_line
    name: R2S CPU 温度
    command: "ssh -o StrictHostKeyChecking=no -i /config/id_rsa root@路由器IP cut -c1-2 /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    scan_interval: 300
最后更新于 2021年04月08日 01:23 CST
使用 Hugo 构建
主题 StackJimmy 设计