『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1125|回复: 1

[技术讨论] 补个通过ssh将openwrt部分功能接入ha的帖子

[复制链接]

14

主题

78

帖子

463

积分

论坛分享达人

积分
463
金钱
385
HASS币
0
发表于 2024-5-24 00:09:26 | 显示全部楼层 |阅读模式
本帖最后由 gl695133087 于 2024-5-24 00:17 编辑

上个月168入了块香橙派r1splus,得空刷了op进去,但是ha的集成只支持设备跟踪,其余不直接支持。我最开始是想把网口速率接入,无意中确把cpu温度和o,pe,n,cl,a,s,h的启停接入进去了,网速到现在都还没时间弄,抽空再搞吧。
首先,需要获取ha的ssh公钥、私钥,方法如下:
1.打开 Home Assistant 的终端,以我通过群晖 Docker 安装的 Home Assistant 为例,打开 Docker 应用的容器选项,找到 Home Assistant 的容器,点上面的详情,再切换终端机,新建 bash,进入终端界面了。
2.输入 ssh-keygen 回车创建密钥,输入密钥的名字(英文字母数字等,我自己随便取了个oranger1s),然后回提示你设置密码,密码留空直接回车两下就创建完成了。

3.输入 cat oranger1s.pub 回车查看公钥,拷贝里面的内容。在 OpenWrt 界面的 系统 – 管理权 – SSH 密钥 中粘贴并应用(公钥很长,一定要全部复制粘贴完了,粘贴进去的可能会有回车,把回车删除了,但是不要把空格删除了)。

4.在 Home Assistant 的终端输入下面的命令测试,成功会输出温度数字。如果失败,尝试赋予 私钥文件(比如私钥名称为oranger1s) 700 权限。
(1)赋权命令:chmod -R 700 oranger1s。
(2)测试命令:ssh -o StrictHostKeyChecking=no -i /config/oranger1s  -p 3342 [email protected] cut -c1-2 /sys/class/thermal/thermal_zone0/temp。3342是op路由ssh的端口号,默认22的可以不要 -p 3342 参数,192.168.34.1是op登录地址,其他不用改。

5.在 Home Assistant 的 configuration.yaml 配置文件添加下面的配置并重启 Home Assistant 服务,就能在 Home Assistant 里看到路由器温度的传感器了
command_line:
      - sensor:       #获取openwrtCPU温度
        name: OpenWrt CPU Temp
        command: "ssh -o StrictHostKeyChecking=no -i /config/oranger1s  -p 3342 [email protected] cut -c1-2 /sys/class/thermal/thermal_zone0/temp"
        # If errors occur, make sure configuration file is encoded as UTF-8
        unit_of_measurement: "°C"
        #value_template: "{{ value | multiply(0.001) | round(1) }}"
        scan_interval: 60
以上公私钥部分参考了网上的资料,configuration.yaml 配置根据ha官方文档改的,网上的帖子给的配置不能用。

下面的完全是本人摸索的,把控制o,pe,n,cl,a,s,h启动和停止的使用command_line组件的Switch接入ha,在ha内一键控制其启动和停止,不用每次都登录路由web页面控制。
command_line:
    - sensor:       #获取openwrtCPU温度
       name: OpenWrt CPU Temp
       command: "ssh -o StrictHostKeyChecking=no -i /config/oranger1s  -p 3342 [email protected] cut -c1-2 /sys/class/thermal/thermal_zone0/temp"
       # If errors occur, make sure configuration file is encoded as UTF-8
       unit_of_measurement: "°C"
       #value_template: "{{ value | multiply(0.001) | round(1) }}"
       scan_interval: 60
     - switch:    #启停openw部署openclash服务
        name: OpenClash_switch
        command_on: "ssh -o StrictHostKeyChecking=no -i /config/oranger1s -p 3342 [email protected]  /etc/init.d/openclash start"
        command_off: "ssh -o StrictHostKeyChecking=no -i /config/oranger1s -p 3342 [email protected]  /etc/init.d/openclash stop"
      
sensor部分就是上面的cpu温度,代码粘贴进来可能对不齐,要食用的请自行调整。

评分

参与人数 2金钱 +30 收起 理由
scabbers + 10 论坛有你更精彩!
咸味土豆 + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

14

主题

78

帖子

463

积分

论坛分享达人

积分
463
金钱
385
HASS币
0
 楼主| 发表于 2024-6-14 01:05:09 | 显示全部楼层
本帖最后由 gl695133087 于 2024-6-14 01:12 编辑

我将ha搬到n1使用冬瓜hassos12.3后,需要使用ssh -i /root/config/oranger1s_id_rsa -p 2002 前缀,而且需要通过加载商店安装Terminal &SSH,才能使用命令获取命令,密钥默认存在/root文件夹下,我使用mv /root/密钥名 /root/config   的命令把他们剪切到了ha的配置文件下。但是在冬瓜ssh配置器下无法获取到温度,需要输入op管理密码,使用ls命令无法获取当前路径的目录,所以根本不知道在此ssh配置下密钥在哪个路径下,所以写入ha的配置后无法读取到温度数据,因此最终我选择了nodered采用mqtt接入的方案,我的另一个帖子有介绍通过ssh将OpenWrt实时网速接入ha - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-22 16:52 , Processed in 0.146269 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表