通过 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

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

cat id_rsa.pub

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

4. 在 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

5. 在 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

评论

  1. 花无缺
    10月前
    2023-5-19 23:20:21

    homekit:
    sensor:

    • platform: command_line
      name: J4125 CPU 温度
      command: “ssh -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.252 sensors | grep Package | cut -c 17-20″
      unit_of_measurement: “°C”
      scan_interval: 300
      在HA ssh页面执行命令可以生成温度,但是在HA config配置该代码,始终没有生成可以显示温度的homekit码,请问有什么问题吗?
    • 博主
      花无缺
      10月前
      2023-5-19 23:23:14

      在HA里有 J4125 CPU 温度 这个实体了吗?

      • 花无缺
        炒土豆丝
        已编辑
        10月前
        2023-6-04 15:43:38

        1.命令行在ha执行命令,可以读取到pve的温度:ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa root@192.168.1.252 sensors | grep Package | cut -c 17-20
        2.在HA配置该配置,可以在HA展示温度实体(直接输出常量):
        sensor:

        • platform: command_line
          name: CPUTemp
          command: “echo 100”
          unit_of_measurement: “°C”
          value_template: ‘{{ value | multiply(1) }}’
          scan_interval: 300

        3.换成语句以后,在HA无法搜索到温度实体
        sensor:

        • platform: command_line
          name: CPUTemp
          command: “ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa root@192.168.1.252 sensors | grep Package | cut -c 17-20″
          unit_of_measurement: “°C”
          value_template: ‘{{ value | multiply(1) }}’
          scan_interval: 300

        请问这个是为什么呢?

        • 博主
          花无缺
          已编辑
          10月前
          2023-6-05 22:56:49

          platform: command_line 有写在 sensor 下面么?

          • 花无缺
            炒土豆丝
            10月前
            2023-6-06 0:11:57

            有的,整个完整的配置文件:

            Loads default set of integrations. Do not remove.

            default_config:

            Load frontend themes from the themes folder

            frontend:
            themes: !include_dir_merge_named themes

            Text to speech

            tts:

            • platform: google_translate
              automation: !include automations.yaml
              script: !include scripts.yaml
              scene: !include scenes.yaml

            sensor:

            • platform: command_line
              name: CPUTemp
              command: “ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa root@192.168.1.252 sensors | grep Package | cut -c 17-20″
              unit_of_measurement: “°C”
              value_template: ‘{{ value | multiply(1) }}’
              scan_interval: 300
            • 博主
              花无缺
              10月前
              2023-6-06 0:13:42

              value_template: ‘{{ value | multiply(1) }}’ 这行去掉试试

              • 花无缺
                炒土豆丝
                10月前
                2023-6-06 20:30:50

                还是不行。。无语。。。

                • 博主
                  花无缺
                  10月前
                  2023-6-06 22:59:53

                  这都不行只能翻翻日志找找线索了

    • yhkz
      花无缺
      2月前
      2024-1-09 21:37:47

      我的需求和你一样,你搞定了吗

  2. swz
    2年前
    2022-4-12 15:19:42

    牛啊 我 N1 Openwrt 下的 Docker 装了 hass,可以用这个方法在 hass 里获取到 N1 的设备信息吗

    • 博主
      swz
      2年前
      2022-4-12 15:21:54

      理论上是可以的。

发送评论 编辑评论


				
上一篇
下一篇