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

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

[基础教程] 获取路由器信息新思路

[复制链接]

5

主题

47

帖子

791

积分

论坛技术达人

积分
791
金钱
739
HASS币
20
发表于 2021-12-2 16:13:40 | 显示全部楼层 |阅读模式
之前咱获取路由信息一般是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接到微信小程序里面了,用的之前在论坛里看到的巴法云。

                               
登录/注册后可看大图



评分

参与人数 1金钱 +16 收起 理由
windgo + 16 大神666!

查看全部评分

回复

使用道具 举报

4

主题

254

帖子

2387

积分

金牌会员

Rank: 6Rank: 6

积分
2387
金钱
2133
HASS币
0
发表于 2021-12-4 22:02:51 | 显示全部楼层
本质上讲,只要能在路由器上执行能获取arp表的方法就行了,手段嘛,就有很多了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 12:24 , Processed in 0.166334 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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