本帖最后由 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温度,代码粘贴进来可能对不齐,要食用的请自行调整。
|