xcy1231 / Ha-GreeCentralClimate

87 stars 29 forks source link

格力云控二代,报错,HA使用一段时间,实体不可用,重启无效,重新添加自定义集成代码才有效。 #14

Closed superwangmeng closed 1 year ago

superwangmeng commented 1 year ago

HA使用一段时间之后,突然实体就失效,不重启HA的话,实体不会报错就是操作无效,重启HA之后显示实体不可用,但是稍微重新修改一下configuration.yaml之后又可以了(实际没修改,就是删了代码重新加一遍)。

我的代码如下: climate:

我之前还以为是没设置IP地址造成的失联,后来设置了IP地址问题依旧,出现的时间目前还不确定,已经赶上三次了。

唯一看到的HA日志报错日志如下,还请大佬看看: 此错误来自自定义集成。

Logger: root Source: custom_components/gree2/climate.py:178 Integration: gree2 (documentation, issues) First occurred: 02:06:04 (1 occurrences) Last logged: 02:06:04

Uncaught thread exception Traceback (most recent call last): File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/config/custom_components/gree2/climate.py", line 178, in socket_listen _LOGGER.info('socket received from {}:{}'.format(address, data.decode('utf-8'))) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xde in position 93: invalid continuation byte

superwangmeng commented 1 year ago

。。。重启HA,改代码都失效了,目前不知道是否重启空调室内机或者重新配对云控二代是否有用。

w2968066 commented 1 year ago

跟你一个问题,实体显示不可用,把实体删了。。现在找不回来了。。尴尬

w2968066 commented 1 year ago

。。。重启HA,改代码都失效了,目前不知道是否重启空调室内机或者重新配对云控二代是否有用。

兄弟你云控版本是不是也是V13

w2968066 commented 1 year ago

我感觉好像是更新完云控版本后出现的问题

w2968066 commented 1 year ago

兄弟我莫名其妙又好了,host那行删掉好像稳定一点。

fenglingR commented 1 year ago

我遇到的报错是扫描不到设备: 错误代码如下: File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/config/custom_components/gree2/climate.py", line 214, in socket_listen self.stop_listen() File "/config/custom_components/gree2/climate.py", line 139, in stop_listen self._thread.join() File "/usr/local/lib/python3.10/threading.py", line 1093, in join raise RuntimeError("cannot join current thread")

Yixi commented 1 year ago

我是格力云控一代,也遇到这问题几次,看起来问题发生的契机是重载配置文件的时候,之前是使用定期备份的 ha core 来恢复。

刚试了一下

  1. 删除 /config/.storage/core.entity_registry 中相关的空调实体
  2. 删除 configuration 中的 gree2 的 host 那行 然后重启后,实体回来了

我感觉是删除 host 那行好的

Yixi commented 1 year ago

update 一下,最近在配置,频繁重启 HA, 又遇到实体失效的问题。 在本地写了简单的 python socket 广播脚本,发现实体失效一般是,重启后,gree2 在初始化时会发送 {"t": "scan"} 的广播包到 , 这个时候可能不会接收到云控的返回的信息,然后插件没有超时重试的机制。所以会导致实体无法初始化。

尝试把 default 的 BROADCAST_ADDRESS 地址从 <broadcast> 改成 255.255.255.255 成功率会高一些

但整体感觉还是云控的响应问题,所以最好空调断电重启一下。。

image

xcy1231 commented 1 year ago

最新版主要就是解决重启实体失效的问题,但是由于要等云控主动连接fake server,重启后还是需要等一段时间实体才会生效

Yixi commented 1 year ago

我之前观察测试了几次,发现重启后实体失效的情况一般都是发生在重启后,往局域网广播时,收不到云控的返回。还是感觉问题在云控上面,所以最佳的办法还是先尝试重启云控(重启空调电路)

xcy1231 commented 1 year ago

我加了广播的重试,观察过了,重置后的第一次连接跟断开云控的外网连接、也就是断开跟格力服务器的通信之后,广播是有回应的,重启空调电路倒是没试过,估计也可行。但是这个版本主要做的就是在内网伪造格力的云服务器,这样不需要重启或重置也可以一直使用的,问题就是格力app没法再控制空调了