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

 找回密码
 立即注册
查看: 43958|回复: 243

[插件集成] ikuai多功能集成[2024.8.27] 和 openwrt[2024.10.23]简单控制集成

  [复制链接]

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24902
金钱
23470
HASS币
290
发表于 2022-11-17 16:44:58 | 显示全部楼层 |阅读模式
本帖最后由 dscao 于 2024-10-23 02:56 编辑

openwrt:
适配新版的ha兼容另一版本的openwrt固件

可能要求比较新的ha版本

2024.10.23

-------------------------
ikuai:
优化wan ip的显示,支持多wan时非wan1的情况。以“设为默认网关的线路”为准,但混合模式时要求线路必须是ppoe类型才正常显示。
const.py 中配置更多开关能用性加强,只需要抓包到对应参数即可。 开关的参数格式有变化,请注意修改。

可能要求比较新的ha版本

2024.8.27

-------------------------

ikuai 修复 mac控制开关无效的问题

感谢:tufeikafei

2023.6.16

-------------------------

ikuai 兼容无cpu和内存信息的固件

2023.6.11

------------

修复 ha 2023.6.0之后运行出错的问题。(ikuai和openwrt以及未发布的pve)

2023.6.5

------------

ikuai可以在hacs中直接安装了

2023.2.13
--------

iKuai

1、实体名称默认为:设备名称+功能名称,方便区分多个ikuai接入时区分,可修改设备名统一修改。
2、增加 switch Arp_filter,arp绑定才能上网开关。 更多开关可以const.py中扩展。

SWITCH_TYPES = {
    "ikuai_arp_filter": {
        "icon": "mdi:account-lock",
        "label": "iKuai非绑定MAC不允许上网",
        "name": "Arp_filter",
        "turn_on_body": {"func_name":"arp","action":"seting","param":{"arp_filter":1}},
        "turn_off_body": {"func_name":"arp","action":"seting","param":{"arp_filter":0}},
        "show_body": {"func_name":"arp","action":"show","param":{"TYPE":"options"}},
        "show_on": {'arp_filter': 1},
        "show_off": {'arp_filter': 0},
    },
}

3、2023.1.16-2设备离线判断默认改为2次获取数据后都不存在才变为离线,可在配置文件中设置对应mac设备的次数。修复一处导致这个参数未生效的bug。

DEVICE_TRACKERS = {
    "myiphone": {
        "label": "我的手机",
        "name": "iPhone13_dscao",
        "icon": "mdi:cellphone",
        "mac_address": "64:6d:2f:88:4c:e8",
        "disconnect_refresh_times": 5  # 离线需要刷新的次数
    },
}
注意修改自己的mac地址。

某些设备在路由器中的离线本身延迟就很大,特别是第三方ap显示为有线的,而ikuai ap相对比较灵敏。有些设备在第三方的ikuai ap环境下容易出现大量短暂离线的情况,这个就可以根据实际情况设备离线需要的刷新次数来解决device_tracker的短期离线问题。除了传感器外,当设置的集成刷新间隔小于30秒时,集成中的其它实体每次刷新时间为30秒,猜测是系统限制的刷新频率。
我有台旧手机,测试发现在小盒子刷的ikuai ap下,就一直出现不断的离线4分钟左右再上线的现象,设置为5时都会出现2分钟的离线,这里设置"disconnect_refresh_times": 10 才解决。

而有些手机与ap连接相对稳定,则可以设置为2或1 ,甚至为0,以便最大限度减少离线的延迟。

具体看情况来权衡设置吧。

1.jpg

2.jpg



2023.1.16


------------------------------
iKuai

增加 连接数实体。

2022.12.9


------------------------------
iKuai

device_tracker实体 查询2次无数据后再改为离线,以及结果为timeout时保持原来的状态,减少有些设备错误出现离线后立即上线的情况。

2022.12.8

------------------------------


iKuai

1、兼容混合模式拨号的wan1的WAN IP和上线时间,混合模式只显示PPPoE拨号的IP,多拨时显示最前面的已上线的IP及其时间。

2、修复 MAC访问控制 中无备注添加规则后 以及 列表空时 报错的问题。

2022.12.3

------------------------------


iKuai
1、增加重启ikuai 和 重连网络功能(const.py中很方便扩展)
2、增加 行为管控 —MAC访问控制 列表中的MAC启用和停用开关
3、支持终端设备是否在线的device_tracker实体,const.py中配置mac地址。
如:
DEVICE_TRACKERS = {
    "myiphone1": {
        "label": "我的手机",
        "name": "iphone13_1",
        "icon": "mdi:cellphone",
        "mac_address": "ab:ab:ab:ab:ab:aa"  #要追踪是否在家的设备mac地址
    },
    "myiphone2": {
        "label": "我的手机2",
        "name": "iphone13_2",
        "icon": "mdi:cellphone",
        "mac_address": "ab:ab:ab:ab:ab:ab"  #要追踪是否在家的设备mac地址
    },
    
    
}
但发现i连接的手机会出现几分钟下线再上线的问题,2022.12.7已将离线改成3次查询结果再改变状态为离家。。



"ikuai_restart_reconnect_wan": {
        "label": "ikuai重连wan网络",
        "name": "ikuai_reconnect_wan",
        "device_class": "restart",
        "action_body": {"func_name":"wan","action":"link_dhcp_reconnect","param":{"id":1}}
    },


动作 action_body 配置成自己的就可以了

Openwrt:
1、修复部分固件时长超出1天出错的问题
2、增加网络连接数和在线用户数量实体(如果固件有在线用户显示的话)

建议:温度无效的或者不需要使用的实体在实体设置中设为禁用
2022.12.1

------------------------------

OpenWrt
1、修复某些固件cpu温度显示中错误导致不能运行的问题
2、增加重启openwrt 和 重连网络功能(const.py中很方便扩展)
3、增加重新订阅节点按钮(const.py中配置),有些网络服务器的地址好像每天会变化,需要重新订阅才能科学。结合 ping 或arrival 实体自动化按需重新订阅。

重启或重连网络,方便自动化判断某网络不通时进行相应操作。


2022.11.24

------------------------------

其它一些信息在实体的属性中

------------------------------

之前通过node-red将ikuai中的信息接入ha了,最近搞个插件方便新手更简单的接入一些基本信息。

有空再加入设备在线情况,目前还没想好思路。


001.jpg

002.jpg


001.jpg

11.jpg



2.jpg


001.jpg


先将附件解压后将custom_components中的文件夹复制到ha中对应目录中,重启ha后,强制刷新浏览器一次,进入集成,搜索: ikuai 或 openwrt,按提示配置即可。
第一次上传的有错,已重新上传。第二次重新上传,支持 https 方式。.
.
ikuai的Wan信息获取自:

003.jpg

004.png

如果拨号方式不同或主wan不是wan1,可能无法获取正确的信息。这种情况需要自行修改部分代码。
2022.11.19 优化超时设置,减少“During handling of the above exception, another exception occurred”报错。(thinks lovedreamland

根据坛友反应有些会报错,应该是openwrt的版本比较多。我用的是Lean 的 LEDE 源码编辑的,之前是5.15,现在是6.0 。官方的openwrt和其它的版本没有测试,需要自行修改对应代码。


目前在我自己的主系统上,稳定运行几天了。node-red相关的几个流用这个取代了。

以下几种环境测试过,都是x86机型:

主系统:PVE7+ikuai 3.6. +openwrt6.0+hassos

测试过的机器:
ikuai 3.6. +ikuai虚拟机openwrt5.15+openwrt中的docker: homeassistant core

物理机openwrt5.15+openwrt中的docker: homeassistant core



















ikuai.zip

17.26 KB, 下载次数: 386

售价: 10 金钱  [记录]

2024.8.27

openwrt.zip

13.36 KB, 下载次数: 549

售价: 10 金钱  [记录]

2024.10.23

评分

参与人数 9金钱 +94 HASS币 +10 收起 理由
hudan717 + 8 高手,这是高手!
jyz_0501 + 20 接入HACS
hunl1986 + 5 感谢楼主分享!
pengguilian + 2 感谢楼主分享!
flyice + 5 感谢楼主分享!
hyq + 10 大神666!
sorrypqa + 8 大神666!
louis_lee + 16 学习下~正好近期打算把监控接入.
+ 20 + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24902
金钱
23470
HASS币
290
 楼主| 发表于 2022-11-17 16:47:13 | 显示全部楼层
本帖最后由 dscao 于 2022-11-17 16:53 编辑

代码这次以 @louis_lee大佬的 bjtoon_health_code 为大的基础,修改而来。
PVE和openwrt的基本一样,细节不同而已。
虚拟机安装的爱快或openwrt,cpu温度显示为0,因web界面内本来就不显示。
回复

使用道具 举报

3

主题

121

帖子

1605

积分

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1484
HASS币
0
发表于 2022-11-17 16:52:07 | 显示全部楼层
错误
此集成不支持通过 UI 配置。如果您是从 Home Assistant 网站点击链接前来,请确保您运行的是最新版本的 Home Assistant。


提示这个,我的版本: 20220907.0 - latest。

太旧了?
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24902
金钱
23470
HASS币
290
 楼主| 发表于 2022-11-17 16:54:17 | 显示全部楼层
jole 发表于 2022-11-17 16:52
错误
此集成不支持通过 UI 配置。如果您是从 Home Assistant 网站点击链接前来,请确保您运行的是最新版本 ...

不应该啊,我测试的是2022.8.6。 帮看看日志报的什么错.
回复

使用道具 举报

3

主题

121

帖子

1605

积分

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1484
HASS币
0
发表于 2022-11-17 17:04:24 | 显示全部楼层
dscao 发表于 2022-11-17 16:54
不应该啊,我测试的是2022.8.6。 帮看看日志报的什么错.

Logger: homeassistant.loader
Source: custom_components/ikuai/__init__.py:8
Integration: ikuai (documentation)
First occurred: 16:50:11 (8 occurrences)
Last logged: 17:03:28

Unexpected exception importing platform custom_components.ikuai.config_flow
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 681, in get_platform
    cache[full_name] = self._import_platform(platform_name)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 698, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/ikuai/__init__.py", line 8, in <module>
    from .data_fetcher import DataFetcher
  File "/config/custom_components/ikuai/data_fetcher.py", line 256
    ]
    ^
SyntaxError: closing parenthesis ']' does not match opening parenthesis '(' on line 255
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2022-11-17 17:11:23 | 显示全部楼层
2022.8.2

错误
此集成不支持通过 UI 配置。如果您是从 Home Assistant 网站点击链接前来,请确保您运行的是最新版本的 Home Assistant

日志里两条error

此错误来自自定义集成。

Logger: homeassistant.loader
Source: custom_components/ikuai/__init__.py:8
Integration: ikuai (documentation)
First occurred: 17:09:12 (1 occurrences)
Last logged: 17:09:12

Unexpected exception importing platform custom_components.ikuai.config_flow
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 657, in get_platform
    cache[full_name] = self._import_platform(platform_name)
  File "/usr/src/homeassistant/homeassistant/loader.py", line 674, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/ikuai/__init__.py", line 8, in <module>
    from .data_fetcher import DataFetcher
  File "/config/custom_components/ikuai/data_fetcher.py", line 256
    ]
    ^
SyntaxError: closing parenthesis ']' does not match opening parenthesis '(' on line 255


Logger: homeassistant.config_entries
Source: config_entries.py:796
First occurred: 17:09:12 (1 occurrences)
Last logged: 17:09:12

Error occurred loading configuration flow for integration ikuai: Exception importing custom_components.ikuai.config_flow
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2022-11-17 17:14:30 | 显示全部楼层
File "/config/custom_components/ikuai/data_fetcher.py", line 256

文件255行少了个),
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24902
金钱
23470
HASS币
290
 楼主| 发表于 2022-11-17 17:15:10 | 显示全部楼层
本帖最后由 dscao 于 2022-11-17 17:17 编辑

最后一次改丢了一个括号, 由于没重启,没发现。   
data_fetcher.py 255行最后应该加一个“)”,
修改后的重新上传了。
回复

使用道具 举报

40

主题

2178

帖子

8340

积分

元老级技术达人

积分
8340
金钱
6147
HASS币
110
发表于 2022-11-17 17:18:07 | 显示全部楼层
sensor.ikuai_wan_uptime  19313天9小时16分,这个sensor是什么意思?
sensor.ikuai_wan_ip 获取不到值,我是单线双播,有影响吗?
sensor.ikuai_wan6_ip没有,我也没有ipv6

PVE下安装的ikuai
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24902
金钱
23470
HASS币
290
 楼主| 发表于 2022-11-17 17:23:30 | 显示全部楼层
本帖最后由 dscao 于 2022-11-17 17:26 编辑
ghostist 发表于 2022-11-17 17:18
sensor.ikuai_wan_uptime  19313天9小时16分,这个sensor是什么意思?
sensor.ikuai_wan_ip 获取不到值,我 ...

双播的数据结构或位置不一样,应该有影响吧。天数感觉差了1000倍呢。这个我没搞清楚怎么回事,我用我自己的以及公司的,加起来3台ikuai测试都没问题。。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-29 07:49 , Processed in 0.150691 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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