本帖最后由 Mirukuteii 于 2018-8-2 12:59 编辑
【AsusWrt】自制路由器信息采集插件,支持华硕梅林固件,更新至0.06版
【AsusWrt】自制路由器信息插件,支持华硕梅林固件
插件发布 AsusWrt sensor 路由器 华硕 梅林
憋说话,先发图。
感谢
万分感谢@aktfin、@咸味土豆、@yoyosuka 以及其他坛友们对本插件提出的宝贵意见和建议,并感谢囧帅大大@Jones以及论坛一如既往的支持。
更新
- Version:0.06 (update:2018-05-13):
-增加了2个新的实体,sensor.router_wifi_24G_stalist 、sensor.router_wifi_5G_stalist ,用来获取2.4G和5G无线网络设备接入情况。两个实体的状态值代表接入设备的数量,属性sta_list 中保存了接入设备的MAC地址列表。
-更改了若干个实体的默认ICON。
- Version:0.05 (update:2018-05-11):
修正了Telnet链接缺少关键库的疏漏。
修正了上传速度依然可能为负值的疏漏。
- Version:0.04 (update:2018-05-10):
加入对系统默认温度单位的判断,添加支持华氏度。
修正了uint32最大值归零,导致网速为负值的错误。
- Version:0.03 (update:2018-05-10):
对实体_update方法的字典取值方式进行改进,避免由于路由器故障而出现KeyError错误。
前言
前段时间楼主拜读了囧帅大大@Jone的神贴:梅林路由器CPU和无线芯片温度接入Home Assistant,有所启发,一直想写本插件。本来五一前准备完成的,不料病来如山倒,一个流感把我折腾了好几个礼拜,真要命,趁着这几天终于觉得好点了,赶紧来交作业。由于时间有限,目前这个插件只是一个很基础的版本,很多功能写得不够完善,设想中的一些功能也没有添加进去,不过至少可以正常使用。
原理
利用SSH或Telnet远程登录路由器并运行相应指令以获取路由器信息。
前置条件
- 确保你的路由器固件与AsusWrt兼容(楼主的路由器是网件R7000,固件是华硕梅林380.66_4-X7.5),好吧其实这点也不是很重要。
- 确保你的路由器已经打开SSH或者Telnet。这点至关重要。
特性和展望
- 由于是自制插件,为避免未知错误导致HA无法启动,本插件设定为HA完全初始化之后(通过监听事件)才开始装载。所以理论上,本插件不可能导致HA无法启动的情况,也不可能拖慢HA的启动速度。
- 本插件提供的网速功能,计算对象为路由器PPP0口,下载与上传均为对外速度,不包含内部传输。算法上比较粗糙,也许会出现遗漏流量的情况。具体算法为根据插件前后两次读取的数据进行计算,将两次获得的PPP0口数据量之差除以读取时间之差。正因如此,本插件刚启动后,由于只获得一次更新值,故无法通过差值计算网速,此时状态显示为:
spd init... ,这是正常现象,只需等待至第二次状态更新后,即可通过差值得到正常数据。
- 本插件提供的无线传输功率功能,每个值对应的是一根天线,一般有几根天线就有几个值。
- 插件装载后,SSH进入打开状态,除非更新时间设定过长超时关闭,否则不会自动关闭,直至HA关闭为止。
- 目前本插件只是运行在sensor插件下的一个平台型插件,与HA自带的
device_tracker.asuswrt 插件并不冲突。后期考虑并入device_tracker.asuswrt 的一些功能。
- 本插件提供的无线网络接入设备列表,方法为以设备授权为准判定是否接入,略区别于
device_tracker.asuswrt 中的以设备关联为准,经测试本方法同样准确、迅速、可靠)。
- 后期将进一步改进各项功能。
文件
asuswrt.py
请放在配置文件根目录下的custom_components/sensor 文件夹中,若不存在请创建。
文件链接:(版本0.06 更新2018-05-13)
asuswrt.py
(20.01 KB, 下载次数: 770)
routermon.yaml
建议放在自己的packages文件夹中,也可将其内容修改并添加到configuration.yaml中。group中的传感器请注意按照自己的配置进行修改。
#AsusWrt路由器监控配置文件
sensor:
- platform: asuswrt
host: #你的路由器IP地址,必填
username: #路由器登录用户名,必填
protocol: #协议,填ssh或者telnet,默认ssh
port: #ssh或telnet端口, 默认22
password: #如果使用密码登录,就在这里填密码
ssh_key: #如果你使用sshkey登录,就在这里填私钥文件的路径
update_interval: '00:01:00'
#更新间隔时间,默认1分钟,建议不低于30秒,不大于5分钟(过大会导致网速计算错误)
router_conditions:
- cpu #可选项,CPU信息类
- mem #可选项,内存信息类
- net #可选项,网络信息类
- wifi #可选项,无线网络信息类
#可选项,不可描述
group:
routermon:
name: 'ROUTER监控'
view: no
entities:
- sensor.router_name
- sensor.router_nowtime
- sensor.router_uptime
- sensor.router_cpu_temp
- sensor.router_cpu_1min_load
- sensor.router_cpu_5min_load
- sensor.router_cpu_15min_load
- sensor.router_mem_used
- sensor.router_mem_free
- sensor.router_mem_shrd
- sensor.router_mem_buff
- sensor.router_mem_cached
- sensor.router_net_mac
- sensor.router_net_wan_ip
- sensor.router_net_lan_ip
- sensor.router_net_wan_downspd
- sensor.router_net_wan_upspd
- sensor.router_wifi_24G_temp
- sensor.router_wifi_5G_temp
- sensor.router_wifi_24G_txpwr
- sensor.router_wifi_5G_txpwr
- sensor.router_wifi_24G_stalist
- sensor.router_wifi_5G_stalist
Groups.yaml
把如下代码放置到该文件的某个位置,那个你想要显示的群组的entities 项中。
- group.routermon
|