本帖最后由 d380025303 于 2023-7-11 12:29 编辑
背景
用node-red集成ikuai并在HA展示路由信息的帖子挺多了,但是这些信息说实话对我没啥用处
我希望能看到某些具体设备的流量(看哪个小崽子在下载东西), 在线时长, 甚至我能在HA实时看到非法设备的连接(比如有人破解了你的wifi....), 我能通过HA能控制具体设备网络访问(手动进ikuai禁用太麻烦)
所以这个流程出来了
支持特性
- 支持实时展示路由在线设备清单
- 支持实时展示路由下线设备清单
- 支持展示具体设备的累计上行/下载/在线时长等信息
- 支持HA控制设备的网络访问
flows_20230628.json
- nodered储存终端信息 -- global.get('dx_mqtt_sensor')
- 支持手动在nodered删除终端设备信息
nodered储存终端设备信息主要解决的是nodered挂了...挂之前上线的设备, 没法展示下线了
效果图
1
2
3
配置方法
前置条件:
node-red (node-red需要有cryptojs依赖)
HA已安装MQTT
tips: 鉴于很多人不知道怎么安装cryptojs npm依赖, 我修改了一下逻辑, 改为引入node-red-contrib-crypto-js-plus来解决MD5加密逻辑, 请使用 flows_node-red-contrib-crypto-js-plus.json 的json
- 引入flows.json, 修改"IKuai配置" 节点: username: 用户名 password: 密码 ikuai_url: ikuai地址
- 修改 "HomeAssistant配置" 节点: homeAssistantUrl: HA的地址, 如http://192.168.100.28:8123 authorization: HA的Token, 如 Bearer eyJhbGciOiJXXXXXXXXXXXXXXXX (需要注意我直接取的global的值)
- 配置mqtt-borker使其能连接到HA MQTT
- 完事了,如果成功运行,MQTT下会自动出现对应实体
4
关于卡片
由于要看到实时设备在线情况,所以我的逻辑是将ikuai的终端列表自动转换为HA的MQTT实体
但是有个很大的bug,HA所有的卡片都不支持动态实体展现,除了markdown...
所以目前只能用markdown实时展现网络设备上/下线情况
markdown内容
type: markdown
content: >
## 路由已连接设备清单
| 设备名称 | 在线时长 |
| :------ | ------: |
{% for state in states.sensor %}{% if
state.entity_id.startswith('sensor.sensor_') %}{% if state.state == 'online'
%}| {{ state.attributes.friendly_name }} | {{ state.attributes.uptime }} |
{% endif %}{% endif %}{% endfor %}
## 路由下线设备清单
{% for state in states.sensor %}{% if
state.entity_id.startswith('sensor.sensor_') %}{% if state.state != 'online'
%} <font color="#cccccc">{{ state.attributes.friendly_name }} </font>{% endif
%}{% endif %}{% endfor %}
如果有更好的方法,欢迎回帖告知
其它卡片怎么配我就不具体帖了, 正常配置即可
关于控制设备网络访问
用的ikuai 行为管控 > MAC访问控制 实现
所以如果MQTT没有出现swith类型控制网络的实体, 在ikuai MAC访问控制增加数据即可
tips: 本帖不需要手动配置MQTT的实体
|