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

 找回密码
 立即注册
查看: 1872|回复: 10

[基础教程] 通过ssh将OpenWrt实时网速接入ha

[复制链接]

14

主题

78

帖子

462

积分

论坛分享达人

积分
462
金钱
384
HASS币
0
发表于 2024-5-26 00:13:46 | 显示全部楼层 |阅读模式
终于将OpenWrt网口速率接入了,用的vnstat命令,-l参数可以实时获取速率,但是在ha配置文件内直接增加进去获取不到传感器数值,显示“未知”,只能在终端内显示。最终使用-i参数获取5秒内的平均值方案。iftop,ifsta命令获取的速率都只能在终端显示,没发接入ha使用。但是,问题又来了,获取到的是一大长串包含速率的字符串,在ha内不好处理,因此改用nodered的ssh插件进行处理。

因为ha内nodered的集成使用起来不咋稳定,最终使用了mqtt接入,之前发的油价信息,也改成了mqtt接入,更加方便设置卡片。

ha配置文件增加如下设置:油价部分作为之前帖子改mqtt接入后的参考,mqtt订阅在官方集成内直接搜索添加,不会的可以自行搜一下教程。粘贴的代码对不齐,需要的自行调整。

注意:nodred需要自行添加ssh-v3的插件,有不明白的可以参考我之前发过的两个贴。

mqtt:
    #========================================最新油价==================================
    - unique_id: zuixinyoujia_92
       name: "汽油92"
       state_topic: "youjia/zuixinyoujia"
       value_template: "{{value_json.汽油92}}"  
       unit_of_measurement: "元"
       icon: mdi:gas-station
    - unique_id: zuixinyoujia_tiaojiastatus
       name: "调整情况"
       state_topic: "youjia/zuixinyoujia"
       value_template: "{{value_json.调整情况}}"  
       icon: mdi:gas-station
    #=========================================openwrtWan口速度=====================================
    - unique_id: openwrtwanrate_rx
       name: "下载速率"
       state_topic: "openwrt/wanrate"
       value_template: "{{value_json.下载速率}}"
       unit_of_measurement: "KB/s"
       icon: mdi:web
    - unique_id: openwrtwanrate_tx
      name: "上传速率"
      state_topic: "openwrt/wanrate"
      value_template: "{{value_json.上传速率}}" 
      unit_of_measurement: "KB/s"
      icon: mdi:web   

                               
登录/注册后可看大图


最后,补一个获取OpenWrt局域网在线设备数量的ha配置
command_line:
  #======================================OpenWrt========================================================
   - sensor:       #获取openwrtCPU在线设备数量
      name: OpenWrtDevNum
      command: "ssh -o StrictHostKeyChecking=no -i /config/oranger1s  -p 2432 [email protected] cat /proc/net/arp | grep -v 0x0 |wc -l"
      unit_of_measurement: "台"
      scan_interval: 60 


获取OpenWrtWan口网速.zip

1.47 KB, 下载次数: 18

售价: 1 金钱  [记录]

评分

参与人数 1金钱 +20 收起 理由
+ 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

7

主题

106

帖子

754

积分

高级会员

Rank: 4

积分
754
金钱
648
HASS币
0
发表于 2024-5-26 09:39:54 | 显示全部楼层
不错,感谢大佬,我前两天也在寻找ssh下读取网速的方案。。大佬给出了明灯啊
回复

使用道具 举报

7

主题

106

帖子

754

积分

高级会员

Rank: 4

积分
754
金钱
648
HASS币
0
发表于 2024-5-26 09:42:40 | 显示全部楼层
另外请教下大佬,读取cpu占用率和内存占用的命令??
htop命令获取的都只能在终端显示。。。。
回复

使用道具 举报

14

主题

78

帖子

462

积分

论坛分享达人

积分
462
金钱
384
HASS币
0
 楼主| 发表于 2024-5-26 09:51:09 | 显示全部楼层
本帖最后由 gl695133087 于 2024-5-26 09:52 编辑
var strarray = msg.session['stdout']['4']
var n1 = strarray.indexOf('rx');//获取“rx”所在位置
var n2 = strarray.indexOf('tx');

//以下是提取收发速率字符串含包
var rxstr1 = strarray.substring(n1, n2).replace(/\s/g, '');
var txstr1 = strarray.substring(n2).replace(/\s/g, '');

var n3 = rxstr1.indexOf('rx');//提取rxstr1内‘rx’位置
var n4 = rxstr1.indexOf('bit');
var n5 = txstr1.indexOf('tx');
var n6 = txstr1.indexOf('bit');
var rxif = rxstr1.substring(n4-1,n4);//提取数据单位K或M
var txif = txstr1.substring(n6-1,n6);
//若单位是M,则换算成K
if (rxif === "M"){
    var rxstr = rxstr1.substring(n3+2,n4-1)*1024;
}else{
    var rxstr = rxstr1.substring(n3+2,n4-1)*1;
};
if (txif === "M"){
    var txstr = txstr1.substring(n5+2,n6-1)*1024;
}else{
    var txstr = txstr1.substring(n5+2,n6-1)*1;
};

msg.payload = {
    //"ww": rxif,
    //"we": txif,
    //"ee": rxstr1,
    //"ew": txstr1,
    "下载速率": rxstr,
    "上传速率": txstr
};
   
return msg;
图片显示不了,直接上代码吧 就是第二个if里面的相关数值改一下就正常了。
逍遥风扇 发表于 2024-5-26 09:39
不错,感谢大佬,我前两天也在寻找ssh下读取网速的方案。。大佬给出了明灯啊 ...



                               
登录/注册后可看大图

昨晚发现上传有时候会显示未知,调试发现是提取节点的这里参数没改到,把3改成5,把4改成6就可以了。
回复

使用道具 举报

14

主题

78

帖子

462

积分

论坛分享达人

积分
462
金钱
384
HASS币
0
 楼主| 发表于 2024-5-26 09:53:52 | 显示全部楼层
逍遥风扇 发表于 2024-5-26 09:42
另外请教下大佬,读取cpu占用率和内存占用的命令??
htop命令获取的都只能在终端显示。。。。 ...

我也不是大佬,也才刚接触OpenWrt,有时间的时候我试试看能不能搞。
回复

使用道具 举报

0

主题

167

帖子

1353

积分

金牌会员

Rank: 6Rank: 6

积分
1353
金钱
1186
HASS币
0
发表于 2024-5-28 12:12:40 | 显示全部楼层
感谢分享,这个方法不错,已经用上了
回复

使用道具 举报

0

主题

27

帖子

261

积分

中级会员

Rank: 3Rank: 3

积分
261
金钱
234
HASS币
0
发表于 2024-6-27 15:42:22 | 显示全部楼层

感谢分享,这个方法不错,已经用上了
回复

使用道具 举报

4

主题

327

帖子

2458

积分

金牌会员

Rank: 6Rank: 6

积分
2458
金钱
2131
HASS币
0
发表于 2024-6-27 15:45:45 | 显示全部楼层
或许数据,每次都要登录设备
回复

使用道具 举报

1

主题

41

帖子

356

积分

中级会员

Rank: 3Rank: 3

积分
356
金钱
315
HASS币
10
发表于 2024-6-27 18:01:22 | 显示全部楼层
本帖最后由 wangjiancqu 于 2024-6-27 18:02 编辑

楼主搞复杂了,在Openwrt上装上netdata软件包,然后用HA内置的netadata集成就可读取Openwrt的网速,而且可还读取CPU负载、内存使用、磁盘使用等,比用SSH简单得多。
回复

使用道具 举报

14

主题

78

帖子

462

积分

论坛分享达人

积分
462
金钱
384
HASS币
0
 楼主| 发表于 2024-7-2 21:00:19 | 显示全部楼层
wangjiancqu 发表于 2024-6-27 18:01
楼主搞复杂了,在Openwrt上装上netdata软件包,然后用HA内置的netadata集成就可读取Openwrt的网速,而且可 ...

学习了,主要是网上也没有相关教程。看了官方文档,集成确实要方便得多。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 08:23 , Processed in 0.272873 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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