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

标题: ikuai多功能集成[2024.8.27] 和 openwrt[2024.10.23]简单控制集成 [打印本页]

作者: dscao    时间: 2022-11-17 16:44
标题: ikuai多功能集成[2024.8.27] 和 openwrt[2024.10.23]简单控制集成
本帖最后由 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中扩展。

  1. SWITCH_TYPES = {
  2.     "ikuai_arp_filter": {
  3.         "icon": "mdi:account-lock",
  4.         "label": "iKuai非绑定MAC不允许上网",
  5.         "name": "Arp_filter",
  6.         "turn_on_body": {"func_name":"arp","action":"seting","param":{"arp_filter":1}},
  7.         "turn_off_body": {"func_name":"arp","action":"seting","param":{"arp_filter":0}},
  8.         "show_body": {"func_name":"arp","action":"show","param":{"TYPE":"options"}},
  9.         "show_on": {'arp_filter': 1},
  10.         "show_off": {'arp_filter': 0},
  11.     },
  12. }
复制代码

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

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

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

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

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

[attach]44746[/attach]

[attach]44747[/attach]



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地址。
如:
  1. DEVICE_TRACKERS = {
  2.     "myiphone1": {
  3.         "label": "我的手机",
  4.         "name": "iphone13_1",
  5.         "icon": "mdi:cellphone",
  6.         "mac_address": "ab:ab:ab:ab:ab:aa"  #要追踪是否在家的设备mac地址
  7.     },
  8.     "myiphone2": {
  9.         "label": "我的手机2",
  10.         "name": "iphone13_2",
  11.         "icon": "mdi:cellphone",
  12.         "mac_address": "ab:ab:ab:ab:ab:ab"  #要追踪是否在家的设备mac地址
  13.     },
  14.    
  15.    
  16. }
复制代码
但发现i连接的手机会出现几分钟下线再上线的问题,2022.12.7已将离线改成3次查询结果再改变状态为离家。。



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


复制代码
动作 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了,最近搞个插件方便新手更简单的接入一些基本信息。

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


[attach]43372[/attach]

[attach]43373[/attach]


[attach]43810[/attach]

[attach]43407[/attach]



[attach]43814[/attach]


[attach]43609[/attach]


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

[attach]43408[/attach]

[attach]43409[/attach]

如果拨号方式不同或主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




















作者: dscao    时间: 2022-11-17 16:47
本帖最后由 dscao 于 2022-11-17 16:53 编辑

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

作者: jole    时间: 2022-11-17 16:52
错误
此集成不支持通过 UI 配置。如果您是从 Home Assistant 网站点击链接前来,请确保您运行的是最新版本的 Home Assistant。


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

太旧了?
作者: dscao    时间: 2022-11-17 16:54
jole 发表于 2022-11-17 16:52
错误
此集成不支持通过 UI 配置。如果您是从 Home Assistant 网站点击链接前来,请确保您运行的是最新版本 ...

不应该啊,我测试的是2022.8.6。 帮看看日志报的什么错.
作者: jole    时间: 2022-11-17 17:04
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

作者: ghostist    时间: 2022-11-17 17:11
2022.8.2

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

日志里两条error

  1. 此错误来自自定义集成。

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

  7. Unexpected exception importing platform custom_components.ikuai.config_flow
  8. Traceback (most recent call last):
  9.   File "/usr/src/homeassistant/homeassistant/loader.py", line 657, in get_platform
  10.     cache[full_name] = self._import_platform(platform_name)
  11.   File "/usr/src/homeassistant/homeassistant/loader.py", line 674, in _import_platform
  12.     return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  13.   File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
  14.     return _bootstrap._gcd_import(name[level:], package, level)
  15.   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  16.   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  17.   File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
  18.   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  19.   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  20.   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  21.   File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  22.   File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  23.   File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  24.   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  25.   File "/config/custom_components/ikuai/__init__.py", line 8, in <module>
  26.     from .data_fetcher import DataFetcher
  27.   File "/config/custom_components/ikuai/data_fetcher.py", line 256
  28.     ]
  29.     ^
  30. SyntaxError: closing parenthesis ']' does not match opening parenthesis '(' on line 255
复制代码


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

  5. Error occurred loading configuration flow for integration ikuai: Exception importing custom_components.ikuai.config_flow
复制代码

作者: ghostist    时间: 2022-11-17 17:14
File "/config/custom_components/ikuai/data_fetcher.py", line 256

文件255行少了个),
作者: dscao    时间: 2022-11-17 17:15
本帖最后由 dscao 于 2022-11-17 17:17 编辑

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

作者: ghostist    时间: 2022-11-17 17:18
sensor.ikuai_wan_uptime  19313天9小时16分,这个sensor是什么意思?
sensor.ikuai_wan_ip 获取不到值,我是单线双播,有影响吗?
sensor.ikuai_wan6_ip没有,我也没有ipv6

PVE下安装的ikuai

作者: dscao    时间: 2022-11-17 17:23
本帖最后由 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测试都没问题。。
作者: ghostist    时间: 2022-11-17 17:46
dscao 发表于 2022-11-17 17:23
双播的数据结构或位置不一样,应该有影响吧。天数感觉差了1000倍呢。这个我没搞清楚怎么回事,我用我自己 ...

嗯...怎么模拟请求呢?想调试修改一下
我改成单线拨号还是不行,ADSL拨号名称有要求吗?
作者: louis_lee    时间: 2022-11-17 17:48
正好最近从HA community看到很多很好看的监控屏,我也想学着做做。
https://community.home-assistant ... es-your-look/109713

我感觉这些数据,最有用的地方,就是做个好看的监控屏,特别酷炫~有种一切尽在掌握的感觉哈哈

目前考虑收集的数据有主机硬件层(exsi-host)、系统级(各个VM情况)以及服务级(比如HA、nextcloud、transmission等服务的healthcheck)以及微服务级(主要针对HA部分板块,如MQTT等等)

我赶脚我现在最大的障碍还是如何搞好前端开发,完全0经验。目前只能四处白嫖
作者: lrving163    时间: 2022-11-17 19:02
不错,正要 。
作者: lrving163    时间: 2022-11-17 19:05
本帖最后由 lrving163 于 2022-11-17 19:17 编辑

不错,已好了。 感谢
作者: qzl    时间: 2022-11-17 19:20
我的全部显示不可用也没有日志显示
作者: chinattz    时间: 2022-11-17 19:43
实在是方便,但就是果然是基本信息。
作者: hyq    时间: 2022-11-17 19:44
小主机跑的爱快软路由支持啥?
作者: sorrypqa    时间: 2022-11-17 20:12
太爽!最适合我们这些小白,感谢大佬的分享!辛苦了!
作者: sxrcm    时间: 2022-11-17 20:38
不支持证书登录,爱快上传了证书强制https,插件不支持
作者: dscao    时间: 2022-11-17 22:28
本帖最后由 dscao 于 2022-11-17 22:37 编辑
sxrcm 发表于 2022-11-17 20:38
不支持证书登录,爱快上传了证书强制https,插件不支持

地址写的是 https:// 吗?
按理说应该可以呀,另外一个pve就是强制证书的,且忽略验证了,都正常获取呀。
测试了一下,验证那一步没忽略验证。 修改后测试可以了,已重新上传。


作者: yunliang029    时间: 2022-11-17 23:48
openwrt 的可以吗
作者: ppttu    时间: 2022-11-18 05:11
期待增加上线通知
作者: sktyou    时间: 2022-11-18 10:15
感觉可以修改一下,变成opWRt 的
作者: dscao    时间: 2022-11-18 11:16
openwrt的也上传了,有需要的可以测试一下。
作者: lrving163    时间: 2022-11-18 11:21
[attach]43405[/attach][attach]43404[/attach]有两项好像不正常。其他没问题

作者: hyq    时间: 2022-11-18 13:09
本帖最后由 hyq 于 2022-11-18 13:29 编辑
dscao 发表于 2022-11-17 17:23
双播的数据结构或位置不一样,应该有影响吧。天数感觉差了1000倍呢。这个我没搞清楚怎么回事,我用我自己 ...

小白顺利接入!感谢楼主!期待更新更多功能!比如开关机!
作者: ghostist    时间: 2022-11-18 13:16
lrving163 发表于 2022-11-18 11:21
有两项好像不正常。其他没问题

你和我一样,可以讲一下环境
我是PVE下安装的ikuai

另外楼主把PVE的也放出来呗~
作者: xiongmx    时间: 2022-11-18 13:38
大佬就是大佬,顶一个~~~~~~~~~~
作者: ghostist    时间: 2022-11-18 14:39
[attach]43419[/attach]
[attach]43418[/attach]
照猫画虎修复了一下,PVE环境安装ikuai
@25#的朋友可以用这个

作者: 呕像蟀哥    时间: 2022-11-18 18:28
感谢分享,新手还是用点楼主现成的好了。
作者: sxrcm    时间: 2022-11-18 21:41
dscao 发表于 2022-11-17 22:28
地址写的是 https:// 吗?
按理说应该可以呀,另外一个pve就是强制证书的,且忽略验证了,都正常获取呀。
...

重新安装,可以了。感谢!!!
作者: lovedreamland    时间: 2022-11-18 21:55
dscao 发表于 2022-11-17 17:23
双播的数据结构或位置不一样,应该有影响吧。天数感觉差了1000倍呢。这个我没搞清楚怎么回事,我用我自己 ...
  1. "snapshoot_wan": [
  2.             {
  3.                 "id": 1,
  4.                 "comment": "光猫",
  5.                 "interface": "wan1",
  6.                 "mac": "00:a0:c9:ee:0f:83",
  7.                 "member": [
  8.                     "eth0"
  9.                 ],
  10.                 "bandmode": 0,
  11.                 "default_route": 0,
  12.                 "internet": 3,
  13.                 "ip_addr": "",
  14.                 "netmask": "",
  15.                 "gateway": "",
  16.                 "dns1": "",
  17.                 "dns2": "",
  18.                 "count_static": 1,
  19.                 "count_dhcp": 0,
  20.                 "count_pppoe": 2,
  21.                 "count_check_fail": 0,
  22.                 "updatetime": 0,
  23.                 "check_res": 0,
  24.                 "errmsg": "",
  25.                 "power": "",
  26.                 "isp": "",
  27.                 "imei": ""
  28.             },
复制代码
我看了下代码,因为不是物理网卡模式的话,这个updatetime的时间是0,但是代码里面时间是用当前时间去减去这个时间,所以就会造成启动时间不对,可以加个判断是否0,这样哪怕取不到数据最多也是显示0

作者: dscao    时间: 2022-11-18 22:00
本帖最后由 dscao 于 2022-11-18 22:02 编辑
lovedreamland 发表于 2022-11-18 21:55
我看了下代码,因为不是物理网卡模式的话,这个updatetime的时间是0,但是代码里面时间是用当前时间去减 ...

感谢反馈及提供改正方法!
我两个地方的爱快,一个联通一个电信,用单线多拨,都上不了网,多线拨不上去。以前用openwrt时都可以4拨。奇怪不知哪里设置不对。所以就一直使用正常的单拨了。

作者: Zynismus16    时间: 2022-11-18 22:08
安装配置完成后报错
  1. 正在重试设置: None
复制代码

详细日志
  1. Logger: homeassistant
  2. Source: custom_components/openwrt/data_fetcher.py:140
  3. Integration: openwrt (documentation)
  4. First occurred: 21:57:49 (7 occurrences)
  5. Last logged: 22:03:15

  6. Error doing job: Task exception was never retrieved
  7. Traceback (most recent call last):
  8.   File "/config/custom_components/openwrt/data_fetcher.py", line 140, in _get_openwrt_status
  9.     cpuinfo = resdata["cpuinfo"]
  10. KeyError: 'cpuinfo'
复制代码


使用的openwrt Xiaomi-R4A
作者: lovedreamland    时间: 2022-11-18 22:13
本帖最后由 lovedreamland 于 2022-11-18 22:24 编辑
dscao 发表于 2022-11-18 22:00
感谢反馈及提供改正方法!
我两个地方的爱快,一个联通一个电信,用单线多拨,都上不了网,多线拨不上去。 ...
  1. if resdata["Data"].get("snapshoot_wan") and resdata["Data"]["snapshoot_wan"][0]["updatetime"] != 0:
  2.             self._data["ikuai_wan_ip"] = resdata["Data"]["snapshoot_wan"][0]["ip_addr"]
  3.             self._data["ikuai_wan_ip_attrs"] = resdata["Data"]["snapshoot_wan"][0]
  4.             self._data["ikuai_wan_uptime"] = self.seconds_to_dhms(int(time.time() - resdata["Data"]["snapshoot_wan"][0]["updatetime"]))
  5.         else:
  6.             self._data["ikuai_wan_ip"] = "未知"
  7.             self._data["ikuai_wan_uptime"] = "未知"
复制代码
哈哈,我技术有限,就这么暂时改下。
主要是爱快基于物理网卡的混合模式比较麻烦,
[attach]43430[/attach]
你看看能不能加一个基于物理模式的判断,如果是基于物理网卡的混合模式的话,就直接获取这个默认网关的这一条数据,这样就可以通用了,我不太懂python,这种复杂的条件就搞不了了。
顺便在加个LOGO呗,空白一片不太好看呀,这个完善了我的NR版的就准备要淘汰啦



作者: dscao    时间: 2022-11-18 22:18
Zynismus16 发表于 2022-11-18 22:08
安装配置完成后报错

详细日志

我用的是x86 安装的5.15版的,有可能固件不同有属性不一样,需要修改代码了。暂时没有测试条件。
作者: lovedreamland    时间: 2022-11-18 23:10
本帖最后由 lovedreamland 于 2022-11-18 23:17 编辑

还有一个问题,不知道你那边有没有,就是启动的时候会报2次错误:
  1. 2022-11-18 23:07:44.450 ERROR (MainThread) [custom_components.ikuai] Error fetching ikuai data:
复制代码
[attach]43435[/attach]
还有就是在HA启动后会报这个错误,我把timeout改到10好像会好一些
  1. 2022-11-18 23:10:02.932 ERROR (SyncWorker_10) [homeassistant] Error doing job: Task exception was never retrieved

  2. Traceback (most recent call last):

  3.   File "/config/custom_components/ikuai/data_fetcher.py", line 131, in _get_ikuai_status

  4.     resdata = await self._hass.async_add_executor_job(self.requestpost_json, url, header, json_body)

  5. asyncio.exceptions.CancelledError


  6. During handling of the above exception, another exception occurred:


  7. Traceback (most recent call last):

  8.   File "/config/custom_components/ikuai/data_fetcher.py", line 130, in _get_ikuai_status

  9.     async with timeout(5):

  10.   File "/usr/local/lib/python3.10/site-packages/async_timeout/__init__.py", line 129, in __aexit__

  11.     self._do_exit(exc_type)

  12.   File "/usr/local/lib/python3.10/site-packages/async_timeout/__init__.py", line 212, in _do_exit

  13.     raise asyncio.TimeoutError
复制代码

作者: dscao    时间: 2022-11-19 01:38
lovedreamland 发表于 2022-11-18 23:10
还有一个问题,不知道你那边有没有,就是启动的时候会报2次错误:

还有就是在HA启动后会报这个错误,我把t ...

调试发现了这个问题,多个线程有时同步进行,超时太短了就会出现这个问题。谢谢!
作者: sorrypqa    时间: 2022-11-19 17:43
老大!有时间再弄个高恪路由的插件吧!谢谢!
作者: riffandsolo    时间: 2022-11-22 18:44
Zynismus16 发表于 2022-11-18 22:08
安装配置完成后报错

详细日志

同样得问题
  1. Logger: homeassistant
  2. Source: custom_components/openwrt/data_fetcher.py:140
  3. Integration: openwrt (documentation)
  4. First occurred: 18:39:34 (3 occurrences)
  5. Last logged: 18:42:15

  6. Error doing job: Task exception was never retrieved
  7. Traceback (most recent call last):
  8.   File "/config/custom_components/openwrt/data_fetcher.py", line 140, in _get_openwrt_status
  9.     cpuinfo = resdata["cpuinfo"]
  10. KeyError: 'cpuinfo'
复制代码

作者: www    时间: 2022-11-23 20:40
旁路有好像不支持!?
作者: www    时间: 2022-11-23 21:38
Zynismus16 发表于 2022-11-18 22:08
安装配置完成后报错

详细日志

看下http://192.168.1.1/cgi-bin/luci/?status=1中cpu温度的字符,比如我的是cpuwd,然后把openwrt文件夹中data_fetcher.py的第140行的cpuinfo = resdata["cpuinfo"]改为cpuinfo = resdata["cpuwd"]即可!
作者: dscao    时间: 2022-11-24 11:22
www 发表于 2022-11-23 21:38
看下http://192.168.1.1/cgi-bin/luci/?status=1中cpu温度的字符,比如我的是cpuwd,然后把openwrt文件夹 ...

感谢提供bug及修正方法。
修改后的新版已上传。
作者: zhenxiwen    时间: 2022-11-24 21:55
[attach]43634[/attach]

一直都是这样,今天下了和安装了最新版,仍然是这样。请问大佬这是何故。

作者: xfyisheng    时间: 2022-11-25 11:18
厉害了厉害了
作者: www    时间: 2022-11-25 21:23
本帖最后由 www 于 2022-11-25 21:25 编辑

另外再反馈个问题,openwrt上运行时间已经换算成天了的会提示出错。在data_fetcher.py文件的第163行,      self._data["openwrt_uptime"] = self.seconds_to_dhms(resdata["uptime"])        改为       self._data["openwrt_uptime"] = resdata["uptime"]

[attach]43659[/attach]Top


作者: dscao    时间: 2022-11-25 23:23
www 发表于 2022-11-25 21:23
另外再反馈个问题,openwrt上运行时间已经换算成天了的会提示出错。在data_fetcher.py文件的第163行,      ...

你的openwrt是什么版本的固件?怎么会超出1天自动变成“1天X小时X分钟X秒”的格式,我用的lean源编译的,超过1天还是原来一样的时间秒格式。看来还要加个转换出错的话就直接使用原值。
作者: sorrypqa    时间: 2022-11-26 17:39
谢谢楼主的分享,辛苦了,希望下次更新可以增加连接数这个数值,谢谢!
作者: www    时间: 2022-11-27 13:50
dscao 发表于 2022-11-25 23:23
你的openwrt是什么版本的固件?怎么会超出1天自动变成“1天X小时X分钟X秒”的格式,我用的lean源编译的, ...

网上别人编译的,这个链接https://www.right.com.cn/forum/thread-8250453-1-1.html

作者: erj002    时间: 2022-11-27 16:46
楼主,pve的也放出来呗
作者: jjss520    时间: 2022-11-30 16:05
zhenxiwen 发表于 2022-11-24 21:55
一直都是这样,今天下了和安装了最新版,仍然是这样。请问大佬这是何故。
...

同,和你这一样
作者: ouTman    时间: 2022-12-1 11:11

楼主,pve的呢
作者: dscao    时间: 2022-12-1 18:47
2012.12.1 更新iKuai集成:
1、增加重启ikuai 和 重连网络功能(const.py中很方便扩展)
2、增加 行为管控 —MAC访问控制 列表中的MAC启用和停用开关
3、支持终端设备是否在线的device_tracker实体,const.py中配置mac地址。
作者: dscao    时间: 2022-12-1 19:16
jjss520 发表于 2022-11-30 16:05
同,和你这一样

有错误的,麻烦能帖个日志。有日志可能会做个容错。
只说有问题,我就无能为力的。



作者: sorrypqa    时间: 2022-12-1 19:33
楼主威武!!功能越来越强大,已成为必备组件了。
作者: strikejudo    时间: 2022-12-2 09:48
本帖最后由 strikejudo 于 2022-12-2 09:56 编辑
zhenxiwen 发表于 2022-11-24 21:55
一直都是这样,今天下了和安装了最新版,仍然是这样。请问大佬这是何故。
...

可以检查一下两边配置有没有错误,我的HA在二级路由下面,之前新开的ikuai账号限制登录IP填错了就一直在重试,修改正确后就好了
ps:ikuai是在esxi 7.0下,ha安装在群晖NAS的虚拟机
ps2:Home Assistant 2022.11.5,Supervisor 2022.11.2,Operating System 8.5,前端版本: 20221108.0 - latest

作者: jjss520    时间: 2022-12-2 15:07
dscao 发表于 2022-12-1 19:16
有错误的,麻烦能帖个日志。有日志可能会做个容错。
只说有问题,我就无能为力的。

Unexpected error fetching openwrt data: can only concatenate str (not "int") to str
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
    self.data = await self._async_update_data()
  File "/config/custom_components/openwrt/__init__.py", line 127, in _async_update_data
    openwrtinfodata = await self._fetcher._get_openwrt_version(sysauth)
  File "/config/custom_components/openwrt/data_fetcher.py", line 194, in _get_openwrt_version
    "Cookie": "sysauth=" + sysauth
TypeError: can only concatenate str (not "int") to str
你看看
作者: dscao    时间: 2022-12-2 15:21
本帖最后由 dscao 于 2022-12-2 15:31 编辑
jjss520 发表于 2022-12-2 15:07
Unexpected error fetching openwrt data: can only concatenate str (not "int") to str
Traceback (mos ...
__init__.py
123行后面加一句: sysauth = str(sysauth)
即:
  1. if self._allow_login == True:
  2.             sysauth = await (self.get_access_token())
  3.             sysauth = str(sysauth)
  4.             _LOGGER.debug(sysauth)
  5.             
  6.             if self._sw_version == "1.0":
  7.                 openwrtinfodata = await self._fetcher._get_openwrt_version(sysauth)
  8.                 self._sw_version = openwrtinfodata["sw_version"]
  9.                 self._device_name = openwrtinfodata["device_name"]
  10.                 self._model = openwrtinfodata["model"]
复制代码





作者: mcone    时间: 2022-12-2 15:56
群主考虑考虑把unraid接入进去呗
作者: sorrypqa    时间: 2022-12-3 10:09
继续顶!顶到大佬出高恪路由的插件,哈哈~~~
作者: ghostist    时间: 2022-12-3 10:40
dscao 发表于 2022-11-18 22:00
感谢反馈及提供改正方法!
我两个地方的爱快,一个联通一个电信,用单线多拨,都上不了网,多线拨不上去。 ...

看下我前面的回复呗
我那个用虚拟网卡的,ip地址以及连接时间已经修复了(路径不同)
看代码里怎么修改,比如判断IP为0的时候,从我那个路径再读取一次,同时连接时间也从我这个路径获取
这样就能兼容了
作者: dscao    时间: 2022-12-3 22:35
ghostist 发表于 2022-12-3 10:40
看下我前面的回复呗
我那个用虚拟网卡的,ip地址以及连接时间已经修复了(路径不同)
看代码里怎么修改, ...

最新的已兼容混合模式拨号的wan1的WAN IP和上线时间,混合模式只显示PPPoE拨号的IP,多拨时显示最前面的已上线的IP及其时间。
但是我的在混合模式下就是拨号不成功,wan ip显示为空。混合模式成功拨号的可以帮忙测试一下。
作者: psd456789    时间: 2022-12-3 22:37
本帖最后由 psd456789 于 2022-12-3 22:54 编辑

一直报这个错,
  1. Logger: homeassistant
  2. Source: custom_components/ikuai/data_fetcher.py:61
  3. Integration: ikuai (documentation)
  4. First occurred: 22:21:12 (11 occurrences)
  5. Last logged: 22:30:03

  6. Error doing job: Task exception was never retrieved
  7. Traceback (most recent call last):
  8.   File "/config/custom_components/ikuai/data_fetcher.py", line 315, in _get_ikuai_device_tracker
  9.     resdata = await self._hass.async_add_executor_job(self.requestpost_json, url, header, json_body)
  10.   File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
  11.     result = self.fn(*self.args, **self.kwargs)
  12.   File "/config/custom_components/ikuai/data_fetcher.py", line 61, in requestpost_json
  13.     resdata = json.loads(json_text)
  14.   File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
  15.     return _default_decoder.decode(s)
  16.   File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
  17.     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  18.   File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
  19.     raise JSONDecodeError("Expecting value", s, err.value) from None
  20. json.decoder.JSONDecodeError: Expecting value: line 1 column 51 (char 50)
复制代码

还是就是MAC访问控制要有备注不然也会报错,没有这个comment
作者: dscao    时间: 2022-12-3 23:12
psd456789 发表于 2022-12-3 22:37
一直报这个错,

还是就是MAC访问控制要有备注不然也会报错,没有这个comment ...

感谢反馈,最新上传的已修复。但未做全面测试。
作者: jjss520    时间: 2022-12-7 10:26
dscao 发表于 2022-12-2 15:21
__init__.py
123行后面加一句: sysauth = str(sysauth)
即:
  1. Logger: custom_components.openwrt
  2. Source: custom_components/openwrt/__init__.py:129
  3. Integration: openwrt (documentation)
  4. First occurred: 10:25:05 (3 occurrences)
  5. Last logged: 10:25:40

  6. Unexpected error fetching openwrt data: 'NoneType' object is not subscriptable
  7. Traceback (most recent call last):
  8.   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
  9.     self.data = await self._async_update_data()
  10.   File "/config/custom_components/openwrt/__init__.py", line 129, in _async_update_data
  11.     self._sw_version = openwrtinfodata["sw_version"]
  12. TypeError: 'NoneType' object is not subscriptable
复制代码


还是错误
作者: dscao    时间: 2022-12-7 11:58
jjss520 发表于 2022-12-7 10:26
还是错误

那可能我们的固件中的获取数据的地址或格式差别很大,只能自己调试修改了。
作者: dscao    时间: 2022-12-8 22:40
ghostist 发表于 2022-12-3 10:40
看下我前面的回复呗
我那个用虚拟网卡的,ip地址以及连接时间已经修复了(路径不同)
看代码里怎么修改, ...

有空时帮测试一下新版,这个问题有没有解决。(测试时你修复可用的版本做好备份,万一没解决就用回备份。)
作者: lovedreamland    时间: 2022-12-8 22:45
本帖最后由 lovedreamland 于 2022-12-8 23:22 编辑

大兄弟把爱快的图标顺便一提交吧,这老是没图标看着怪怪的还有就是还有个ikuai_connect_num链接数的属性,其实也可以加上。测试了下,混合模式IP可以正常获取。有个小问题就是,重启的时候,默认会把追踪设备设置成离线状态,实际上肯定设备是在线状态的,应该是没有获取到数据所以你默认给设置成了离线。这个要是改成未知状态的话就比较好一些。还有就是重启wan混合模式应该是不可以用的吧。
[attach]43987[/attach]





作者: ghostist    时间: 2022-12-9 09:07
dscao 发表于 2022-12-8 22:40
有空时帮测试一下新版,这个问题有没有解决。(测试时你修复可用的版本做好备份,万一没解决就用回备份。 ...

mac_ctrl正常
reconnect/restart正常
sensor里除了ap_online是0,cputemp是0,ipv6是0,其他都正常
device_tracker也正常
非常奈斯了
作者: cat_li    时间: 2022-12-9 12:36
mcone 发表于 2022-12-2 15:56
群主考虑考虑把unraid接入进去呗

同样的想法,把unraid也介入吧
作者: cat_li    时间: 2022-12-9 13:30
突然发现很快就不可用了,ikuai报arp欺骗
作者: dscao    时间: 2022-12-9 16:22
cat_li 发表于 2022-12-9 13:30
突然发现很快就不可用了,ikuai报arp欺骗

这应该是kuai中设置的问题,检查一下:安全设置 > ARP绑定
作者: dscao    时间: 2022-12-9 16:23
cat_li 发表于 2022-12-9 12:36
同样的想法,把unraid也介入吧

没有 unraid 环境,两个小主机都是装了pve。暂时没计划再弄了。
作者: dscao    时间: 2022-12-9 16:28
本帖最后由 dscao 于 2022-12-9 17:11 编辑
lovedreamland 发表于 2022-12-8 22:45
大兄弟把爱快的图标顺便一提交吧,这老是没图标看着怪怪的还有就是还有个ikuai_connect_num链接数的属性, ...

差不多是这么回事。连接数之前没加,稍后的新版增加上了。
刚重启试了一下,我的在线设备并没有出现一下离开状态。
[attach]44010[/attach]



const.py中可以配置:

"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}}
    },

重启wan要 抓一下包,
action_body 配置成自己的就可以了, 很方便修改。

作者: cat_li    时间: 2022-12-9 22:32
dscao 发表于 2022-12-9 16:22
这应该是kuai中设置的问题,检查一下:安全设置 > ARP绑定

重启解决了, openwrt 用的是istoreOS, 配置一直报错   正在重试设置: None  ,不知道什么原因,是通过ikuai的wan2访问的
作者: dscao    时间: 2022-12-9 23:11
cat_li 发表于 2022-12-9 22:32
重启解决了, openwrt 用的是istoreOS, 配置一直报错   正在重试设置: None  ,不知道什么原因,是通过ik ...

我的openwrt也是通过ikuai的wan2访问的,这个没问题。
应该是openwrt的固件的数据格式与我用的不同。
作者: zheng3931    时间: 2022-12-10 22:01
输入用户名密码后就一直显示正在重新启用,也没日志
作者: zheng3931    时间: 2022-12-10 23:54
此错误来自自定义集成。

Logger: custom_components.openwrt
Source: custom_components/openwrt/data_fetcher.py:76
Integration: openwrt (documentation)
First occurred: 22:35:51 (47 occurrences)
Last logged: 23:33:22

Unexpected error fetching openwrt data: "name='sysauth', domain=None, path=None"
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 225, in _async_refresh
    self.data = await self._async_update_data()
  File "/config/custom_components/openwrt/__init__.py", line 123, in _async_update_data
    sysauth = await self.get_access_token()
  File "/config/custom_components/openwrt/__init__.py", line 112, in get_access_token
    self._token = await self._fetcher._login_openwrt()
  File "/config/custom_components/openwrt/data_fetcher.py", line 93, in _login_openwrt
    resdata = await self._hass.async_add_executor_job(self.requestpost_cookies, url, header, body)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/openwrt/data_fetcher.py", line 76, in requestpost_cookies
    resdata = responsedata.cookies["sysauth"]
  File "/usr/local/lib/python3.10/site-packages/requests/cookies.py", line 334, in __getitem__
    return self._find_no_duplicates(name)
  File "/usr/local/lib/python3.10/site-packages/requests/cookies.py", line 413, in _find_no_duplicates
    raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}")
KeyError: "name='sysauth', domain=None, path=None"

作者: zheng3931    时间: 2022-12-10 23:57
zheng3931 发表于 2022-12-10 23:54
此错误来自自定义集成。

Logger: custom_components.openwrt

一直显示正在重新设置的日志,大神能给看下吗?
作者: shayulei    时间: 2022-12-12 08:47
牛,一直用NR的那个方案,目前没有问题,所以一直用着呢
作者: zhaozengxiao    时间: 2022-12-12 15:00
膜拜大佬膜拜大佬膜拜大佬膜拜大佬膜拜大佬膜拜大佬膜拜大佬
作者: ly90907    时间: 2022-12-14 20:14
购买了,但是咋用啊
作者: dscao    时间: 2022-12-14 20:46
ly90907 发表于 2022-12-14 20:14
购买了,但是咋用啊

先将附件解压后将custom_components中的文件夹复制到ha中对应目录中,重启ha后,强制刷新浏览器一次,进入集成,搜索: ikuai 或 openwrt,按提示配置即可。
作者: qjz601    时间: 2022-12-15 15:18
感谢分享
作者: ly90907    时间: 2022-12-20 11:04
dscao 发表于 2022-12-14 20:46
先将附件解压后将custom_components中的文件夹复制到ha中对应目录中,重启ha后,强制刷新浏览器一次,进 ...

感谢回复,ikuai可以用, openwrt不行。

esxi 虚拟机装的openwrt,openwrt docker装的homeassistant
  1. 正在重试设置: None
复制代码


log:
  1. 2022-12-20 02:54:51.343 ERROR (MainThread) [custom_components.openwrt] Unexpected error fetching openwrt data: "name='sysauth', domain=None, path=None"
  2. Traceback (most recent call last):
  3.   File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 225, in _async_refresh
  4.     self.data = await self._async_update_data()
  5.   File "/config/custom_components/openwrt/__init__.py", line 123, in _async_update_data
  6.     sysauth = await self.get_access_token()
  7.   File "/config/custom_components/openwrt/__init__.py", line 112, in get_access_token
  8.     self._token = await self._fetcher._login_openwrt()
  9.   File "/config/custom_components/openwrt/data_fetcher.py", line 93, in _login_openwrt
  10.     resdata = await self._hass.async_add_executor_job(self.requestpost_cookies, url, header, body)
  11.   File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
  12.     result = self.fn(*self.args, **self.kwargs)
  13.   File "/config/custom_components/openwrt/data_fetcher.py", line 76, in requestpost_cookies
  14.     resdata = responsedata.cookies["sysauth"]
  15.   File "/usr/local/lib/python3.10/site-packages/requests/cookies.py", line 334, in __getitem__
  16.     return self._find_no_duplicates(name)
  17.   File "/usr/local/lib/python3.10/site-packages/requests/cookies.py", line 413, in _find_no_duplicates
  18.     raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}")
  19. KeyError: "name='sysauth', domain=None, path=None"
复制代码



作者: dscao    时间: 2022-12-20 11:15
ly90907 发表于 2022-12-20 11:04
感谢回复,ikuai可以用, openwrt不行。

esxi 虚拟机装的openwrt,openwrt docker装的homeassistant

看来跟前面的朋友一样,固件不同,数据返回格式不同。
作者: ly90907    时间: 2022-12-20 20:50
dscao 发表于 2022-12-20 11:15
看来跟前面的朋友一样,固件不同,数据返回格式不同。

我的openwrt固件是官方纯净版的,理论上没有问题吧?
作者: dscao    时间: 2022-12-21 09:28
ly90907 发表于 2022-12-20 20:50
我的openwrt固件是官方纯净版的,理论上没有问题吧?

我用的不是官方的版本,而是 Lean 源码编译的。
作者: flamestsui    时间: 2022-12-30 08:51
下载来试试呢
作者: sorrypqa    时间: 2023-1-7 10:36
最新版本的爱快插件用起来用起来真爽,完美。楼主辛苦了!

[attach]44542[/attach]

作者: airwb    时间: 2023-1-7 11:24
大佬有没有华硕路由器梅林固件的插件
作者: hzokdj    时间: 2023-1-8 20:06
恩山F大OPENWRT  温度不行 别的挺好
作者: sorrypqa    时间: 2023-1-9 18:55
伸手党坐等高恪路由插件........
作者: sorrypqa    时间: 2023-1-15 19:08
希望楼主大人有空更新时能增加这个开关:非绑定MAC不允许上网
[attach]44732[/attach]



小孩的手机,我在路由器的应用协议控制里禁止了网络游戏等等,但最近发现他会把手机的MAC改为随机变化用来逃避应用协议控制,有这个功能就可以保证他改了之后连网都上不了。




设备在线检测功能还是不太稳定,晚上经常出现离开,不知道修改哪里可以增加检测次数,宁愿20分钟检测不到设备再显示离开,也不想出现误测

[attach]44733[/attach]

还有个问题,这个插件添加路由器时,没有设置名称的功能,要是添加多台爱快路由器,名字会一样,里面传感器更是难于分辨。

作者: Misaka    时间: 2023-1-15 20:33
大神666!
作者: qzl    时间: 2023-1-15 21:31
标题: 大佬帮忙看看
本帖最后由 qzl 于 2023-1-15 21:32 编辑

[attach]44737[/attach][attach]44738[/attach]
作者: dscao    时间: 2023-1-15 21:36
sorrypqa 发表于 2023-1-15 19:08
希望楼主大人有空更新时能增加这个开关:非绑定MAC不允许上网

感谢反馈及提建议。

1、非绑定MAC不允许上网,这个对于你这个情况很有用。但是它需要自动化打开和关闭吗?感觉这个配置好了不需要经常开关它呀。如果不需要借助自动化操作的且并不经常需要开关的就没有接入的意义了。

2、也发现有这种情况,还没细查什么原因,有空再研究研究。目前主要使用 iphonedetect 就很稳定。

3、目前只有设备名称会取路由器中的系统设置-基础设置-设备名,其它地方确实除了uid外,没有做区别,这个晚点修改一下。默认实体名也取上设备名区分一下。
作者: dscao    时间: 2023-1-15 21:58
qzl 发表于 2023-1-15 21:31

好像系统抓不到路由的数据呢,检查一下路由器的日志,看看有没有什么禁止连接的,或者后期修改了路由管理密码的情况。可以查看用户日志中的ARP日志, 系统日志中的操作日志,看看是否有每两个小时登录成功的日志。
作者: qzl    时间: 2023-1-15 22:12
dscao 发表于 2023-1-15 21:58
好像系统抓不到路由的数据呢,检查一下路由器的日志,看看有没有什么禁止连接的,或者后期修改了路由管理 ...

[attach]44741[/attach][attach]44742[/attach]看了是应该是登录成功的


作者: sorrypqa    时间: 2023-1-15 22:33
dscao 发表于 2023-1-15 21:36
感谢反馈及提建议。

1、非绑定MAC不允许上网,这个对于你这个情况很有用。但是它需要自动化打开和关闭吗 ...

会用到自动化,白天自动关闭这个功能,晚上自动开启这个功能(小孩都是晚上用手机)





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5