|
之前咱获取路由信息一般是SSH上去,然后执行Shell命令。今天换个思路去获取,虽然最后本质是一样的,但是多个思路多条路嘛。
下面是自己博客记录的折腾过程,有兴趣的可以看看
华硕路由折腾记录 在路由上安装 Node-Red 和 MQTT
IOT智能看板 通过巴法展示数据和控制设备
0.前期准备
需要带有软件中心的路由,并且安装了带有这些信息的插件。
我用的是koolcenter的软件中心,用的官改的固件,插件是 ROG工具箱,如下图:
插件界面如下:
1.开始折腾
浏览器开启开发者模式,来看看这些数据是怎么来的
因为现实的数据一直在更新,所以你会很轻易的发现他们。到这里可能有人会问了,这个不是应该登陆后才能获取到吗?
是的,一开始我也以为是这样的,最后我拿出链接单独请求了下子,发现并没有相关的校验,这不就可以给我们利用上了嘛。
请求地址是 http://router.asus.com/_api/
方式是 POST
请求数据为 {"id":63145738,"method":"rog_status.sh","params":[2],"fields":""}
有了这些信息,咱们就可以开干了
这边用Python写了一个小函数,可以取到相关的值
def getRouterInfo():
goal = ''.join(random.sample(string.digits, 8))
url = "http://router.asus.com/_api/"
payload = json.dumps({
"id": int(goal),
"method": "rog_status.sh",
"params": [
2
],
"fields": ""
})
headers = {
'Content-Type': 'application/json'
}
try:
response = requests.request("POST", url, headers=headers, data=payload)
except ReadTimeout:
return "Connection timeout...."
except ConnectionError:
return "Connection Error...."
except RequestException:
return "Unknown Error"
ret = json.loads(response.content)
result = ret["result"]
resultList = re.split('@@| |<br />|\||:', result)
new_list = [i for i in resultList if i != '']
dataRet = {
"CPU": new_list[1].strip(),
"W2_4G": new_list[3].strip(),
"W5G_1": new_list[5].strip(),
"W5G_2": new_list[7].strip(),
"MEM": new_list[14].strip(),
"CPUSED": new_list[15].strip()
}
return dataRet
其他的大家可以有发挥了,这个请求返回之前没有内存占比和CPU负载占比,这不我又给他安排上了。
首先找到参数里面的 rog_status.sh 这个脚本,在最后加上相关代码
memory_total1=`free |grep -i mem |awk -F : '{print $2}' |awk '{print $1}'`;
memory_used=`free |grep -i mem |awk -F : '{print $2}' |awk '{print $2}'`;
memory_usage=$(awk 'BEGIN {printf "%.2f%",('$memory_used'/'$memory_total1')*100}');
cpusage=`top -n 1 |grep "CPU:" | awk '{print $2}'`
http_response "${cpu_temperature}@@${wl_temperature}@@${wl_txpwr}@@${memory_usage}@@${cpusage}"
最后几的加上这两个参数哈。不然不会返回的。
到此就可以了。
2.成果展示
HA挂了也没装了,自己用MQTT接到微信小程序里面了,用的之前在论坛里看到的巴法云。
|
评分
-
查看全部评分
|