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

 找回密码
 立即注册
查看: 76870|回复: 335

[经验分享] 让爱快路由器对接HASS,实现控制及设备在线情况

  [复制链接]

10

主题

87

帖子

934

积分

论坛DIY达人

积分
934
金钱
832
HASS币
70
发表于 2021-10-21 10:39:16 | 显示全部楼层 |阅读模式
本帖最后由 adxr 于 2021-10-21 10:48 编辑

家里一直用的是爱快路由器,老婆又要求对家里的电脑,电视网络做控制,这样只好在爱快开了MAC访问控制
微信图片_20211021095017.png
但自己晚上也要常用到电脑及看电视,经常要打开路由器页面来启用和停用MAC访问控制是很不方便的。这个老婆也不会操作,那只好自己做一下爱快与HASS的对接了

先上效果:可以实现控制MAC访问控制的启用和停用、实时上下行情况、可查指定MAC设备是否在线等等
微信图片_20211021095713.png
微信图片_20211021094222.png

对接的架构:
微信图片_20211021100255.png
用PHP与爱快WEB对接,PHP返回信息给Node-RED进行处理,用MQTT对接HASS
——————PHP———————PHP———————————PHP—————————————PHP————————————PHP—————————
PHP源代码:
游客,如果您要查看本帖隐藏内容请回复

login.php 为登录
第7行请改为自己的爱快路由器地址及端口
第15行"e01b957f0b45a4bac991101f63a57e70"为浏览器开发工具抓的加密后的爱快密码

acl_mac.php 为MAC访问控制
第7行请改为自己的爱快路由器地址及端口

call_show.php 为查询接口
第5行请改为自己的爱快路由器地址及端口

——————Node-RED———————Node-RED———————————Node-RED—————————————Node-RED————————————Node-RED—————————

Node-RED连接图:
微信图片编辑_20211021102140.jpg

Node-RED中所有URL:http://10.10.0.4/API/ikuai/ 中改为你的PHP地址
请求终端信息中URL:http://10.10.0.4/API/ikuai/call_show.php?param={   "func_name": "monitor_lanip",   "action": "show",   "param": {     "TYPE": "data,total",     "ORDER_BY": "ip_addr_int",     "orderType": "IP",     "limit": "0,20",     "ORDER": "",     "FINDS": "ip_addr,mac,comment,username",     "KEYWORDS": "18:bc:5a:a3:76:04"   } }
其中http://10.10.0.4/API/ikuai/call_show.php改为你的PHP地址,18:bc:5a:a3:76:04改为你要查的终端MAC

其中,查终端是否在线,返回total:1时是在线,返回total:0时是不在线,后面怎么用,大家发挥吧。

Node-RED 代码:
游客,如果您要查看本帖隐藏内容请回复



——————HASS———————HASS———————————HASS—————————————HASS————————————HASS—————————



下面是HASS中的MQTT代码:

sensor:
  - platform: mqtt
    name: "IKuai CPU"
    state_topic: "ikuai/int"
    value_template: "{{ value_json.cpu}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "%"
    icon: mdi:cpu-64-bit
  - platform: mqtt
    name: "IKuai RAM"
    state_topic: "ikuai/int"
    value_template: "{{ value_json.memory}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "%"
    icon: mdi:memory
  - platform: mqtt
    name: "IKuai CPU温度"
    state_topic: "ikuai/int"
    value_template: "{{ value_json.cputemp}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "℃"
    icon: mdi:thermometer    

  - platform: mqtt
    name: "IKuai 在线用户"
    state_topic: "ikuai/int"
    value_template: "{{ value_json.online_user}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "line"
    icon: mdi:account-multiple   

  - platform: mqtt
    name: "IKuai 连接数"
    state_topic: "ikuai/int"
    value_template: "{{ value_json.connect_num}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "p/s"
    icon: mdi:human-greeting-proximity
    
  - platform: mqtt
    name: "IKuai 上行速率"
    state_topic: "ikuai/int"
    value_template: "{{ ( value_json.upload | float / 100000 ) |  round(3)}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "Mbps"
    icon: mdi:wifi-arrow-up    

  - platform: mqtt
    name: "IKuai 下行速率"
    state_topic: "ikuai/int"
    value_template: "{{ ( value_json.total_down | float / 100000 ) | round(3)}}"
    json_attributes_topic: "ikuai/int"
    unit_of_measurement: "Mbps"
    icon: mdi:wifi-arrow-down   
switch:
 - platform: mqtt
   name: "房电脑限网"
   state_topic: "stat/FPC/mac"
   command_topic: "cmnd/FPC/mac"
   qos: 1
   icon: mdi:lan-disconnect
  
 - platform: mqtt
   name: "小厅电脑限网"
   state_topic: "stat/XTPC/mac"
   command_topic: "cmnd/XTPC/mac"
   qos: 1
   icon: mdi:lan-disconnect
  
 - platform: mqtt
   name: "小米电视限网"
   state_topic: "stat/Mtv/mac"
   command_topic: "cmnd/Mtv/mac"
   qos: 1
   icon: mdi:lan-disconnect






评分

参与人数 7金钱 +56 HASS币 +20 收起 理由
隔壁的王叔叔 + 8 高手,这是高手!
TianYa + 1 论坛有你更精彩!
id10086 + 1 太复杂了,谢谢分享。
a903497400 + 5
+ 20 + 20 膜拜大神!
hejie127 + 5 感谢楼主分享!
dscao + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

8

主题

158

帖子

911

积分

高级会员

Rank: 4

积分
911
金钱
753
HASS币
0
发表于 2021-10-21 11:51:56 | 显示全部楼层
哇,首赞。一直想把路由器信息接入hass。不知道小米路由器是否可以方便接入呢
回复

使用道具 举报

10

主题

87

帖子

934

积分

论坛DIY达人

积分
934
金钱
832
HASS币
70
 楼主| 发表于 2021-10-21 12:36:41 | 显示全部楼层
hejie127 发表于 2021-10-21 11:51
哇,首赞。一直想把路由器信息接入hass。不知道小米路由器是否可以方便接入呢 ...

只要登录没有验证码的路由器都可以用这个方法来接入
回复

使用道具 举报

8

主题

158

帖子

911

积分

高级会员

Rank: 4

积分
911
金钱
753
HASS币
0
发表于 2021-10-21 14:02:01 | 显示全部楼层
adxr 发表于 2021-10-21 12:36
只要登录没有验证码的路由器都可以用这个方法来接入

我想测试一下,请问第一步路由器和php对接,应该怎么实现呢?

请问这个php的三个文件应该放在哪里,如何设置
回复

使用道具 举报

10

主题

87

帖子

934

积分

论坛DIY达人

积分
934
金钱
832
HASS币
70
 楼主| 发表于 2021-10-21 14:31:36 | 显示全部楼层
hejie127 发表于 2021-10-21 14:02
我想测试一下,请问第一步路由器和php对接,应该怎么实现呢?

请问这个php的三个文件应该放在哪里,如何 ...

php的三个文件要放到PHP服务器里,这三个文件是为爱快写的,小米的要有抓包数据才能写出来
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24871
金钱
23439
HASS币
290
发表于 2021-10-21 14:51:34 | 显示全部楼层
本帖最后由 dscao 于 2021-10-21 14:57 编辑

测试了一下,php放到黑晖中的web服务中,加了个php支持。一切似乎都正常了,在对接node-red时,每个json转化都提示:"Unexpected token  in JSON at position 0"

但输出的字符串经过json校验工具,却是正确的,奇怪了不知问题出在哪。
2021/10/21 下午2:46:52node: 1602dd84486180f8
msg : string[40]
"Unexpected token  in JSON at position 0"
2021/10/21 下午2:46:52node: 4ced9d5a61f4d220
msg : Object
object
_msgid: "d2e72641d6369a5c"
payload: "{"Result":30000,"ErrMsg":"Success","Data":{"total":0,"data":[]}}↵"
topic: ""
statusCode: 200
headers: object
server: "nginx"
date: "Thu, 21 Oct 2021 06:46:53 GMT"
content-type: "text/html; charset=utf-8"
transfer-encoding: "chunked"
connection: "close"
vary: "Accept-Encoding, Accept-Encoding"
……
难道是群晖的Web服务不兼容?
卡在这了,除了这个应该都没什么问题了。密码抓包chrome自带的爬不到,总是跳过去了,用手机浏览器加抓包工具就容易抓了。
回复

使用道具 举报

10

主题

87

帖子

934

积分

论坛DIY达人

积分
934
金钱
832
HASS币
70
 楼主| 发表于 2021-10-21 14:59:30 | 显示全部楼层
dscao 发表于 2021-10-21 14:51
测试了一下,php放到黑晖中的web服务中,加了个php支持。一切似乎都正常了,在对接node-red时,每个json转 ...

PHP版本选PHP-56试试
回复

使用道具 举报

10

主题

87

帖子

934

积分

论坛DIY达人

积分
934
金钱
832
HASS币
70
 楼主| 发表于 2021-10-21 15:05:21 | 显示全部楼层
dscao 发表于 2021-10-21 14:51
测试了一下,php放到黑晖中的web服务中,加了个php支持。一切似乎都正常了,在对接node-red时,每个json转 ...

这个问题不大,node-red对JSON与PHP有区别,经过JSON转换能正常就没有问题了
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24871
金钱
23439
HASS币
290
发表于 2021-10-21 15:58:18 | 显示全部楼层
本帖最后由 dscao 于 2021-11-3 03:07 编辑
adxr 发表于 2021-10-21 14:59
PHP版本选PHP-56试试

测试了好久,原来是php文件的编码问题,多了bom头。导致浏览器可以正常显示,但node-red识别不了,将UFT-8-BOM改成UTF-8编码就好了。这个php将路由中的页面转换成了api输出标准json数据,再用node-red就容易处理数据了。

效果不错,又学到了一个新玩法。把爱快界面中的数据和mac控制接入进来了。常用控制可以不用进ikuai了,一键搞定。
------------

这几天作了修改,不需要通过php,直接node-red抓取ikuai页面中的json数据,其它照样按楼主的方法。

00.jpg


0.jpg

(上面部分是snmp_interface接入的,下面部分通过nodered接入的。)


00.jpg

同样,ikuai路由中的所有信息都能接入过来嘛。




回复

使用道具 举报

11

主题

67

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
金钱
251
HASS币
0
发表于 2021-10-21 16:15:27 | 显示全部楼层
本帖最后由 3038922 于 2021-10-21 23:34 编辑

太复杂了.....我是用SNMP写的....主要我三个WAN口,这个能支持么?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-27 08:22 , Processed in 0.308701 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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