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

 找回密码
 立即注册
查看: 5202|回复: 11

关于hassos自定义插件无法使用的问题

[复制链接]

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
发表于 2021-4-21 11:02:52 | 显示全部楼层 |阅读模式
2021-04-21 10:53:45 ERROR (MainThread) [homeassistant.components.water_heater] Error while setting up yunmi_water_heater platform for water_heater
Traceback (most recent call last):
  File "/config/custom_components/yunmi_water_heater/water_heater.py", line 217, in yunmi_login
    res = requests.get(url, headers=headers)
  File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.8/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.8/http/client.py", line 1266, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
    return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 150, in protected_loop_func
    check_loop()
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 139, in check_loop
    raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at custom_components/yunmi_water_heater/water_heater.py, line 217: res = requests.get(url, headers=headers)
在docker环境中可以正常使用,但在202104版的hassos里提示改错误,按提示添加代码依旧无法启动该插件,请问下哪位大佬清楚原因。源码见附件


yunmi_water_heater.zip (102.32 KB, 下载次数: 1)


回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2021-4-21 22:30:51 | 显示全部楼层
HA 升级版本所致,等待插件更新吧
回复

使用道具 举报

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
 楼主| 发表于 2021-4-22 09:01:52 | 显示全部楼层
jyz_0501 发表于 2021-4-21 22:30
HA 升级版本所致,等待插件更新吧

我就是插件作者 哈哈。 没看明白怎么改。。。 对python不是很熟悉。
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2021-4-22 09:46:58 | 显示全部楼层
wen_jxpx 发表于 2021-4-22 09:01
我就是插件作者 哈哈。 没看明白怎么改。。。 对python不是很熟悉。

哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job()  
回复

使用道具 举报

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
 楼主| 发表于 2021-4-22 11:27:29 | 显示全部楼层
jyz_0501 发表于 2021-4-22 09:46
哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job()   ...

按提示 改成async方法 并加协成作业,报错是不会了,但是日志打不出来,插件也不可用,感觉上就是一直在等待这个作业执行,并没有进行下一步。
回复

使用道具 举报

0

主题

14

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
金钱
250
HASS币
0
发表于 2021-5-28 04:51:20 | 显示全部楼层
import aiohttp
...

async def asyncGet(url, headers):
    async with aiohttp.ClientSession(headers=headers) as session:
        async with session.get(url) as response:
            _LOGGER.info('res: ' + str(response.status))
            html = await response.text()
            _LOGGER.info('html: ' + str(html))
            return html

async def yunmi_login(self):
    ...
    res_list = json.loads(await asyncGet(url, headers))
    ...

async def update(self):
    ...
    await self.yunmi_login()
    ...


大概这么个意思 试试看 我自己用的按照这个思路改了是正常了
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2021-5-28 06:20:03 | 显示全部楼层
jyz_0501 发表于 2021-4-22 09:46
哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job()   ...

我jio着应该这么回复:
哈哈,那你就赶快更新
回复

使用道具 举报

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
 楼主| 发表于 2021-6-4 21:00:32 | 显示全部楼层
XCray 发表于 2021-5-28 06:20
我jio着应该这么回复:
哈哈,那你就赶快更新

实在更新不动,ha底层多线程协同机制有变化。
回复

使用道具 举报

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
 楼主| 发表于 2021-6-4 21:01:34 | 显示全部楼层

回头试试看。谢谢。
回复

使用道具 举报

8

主题

155

帖子

1204

积分

论坛技术达人

积分
1204
金钱
1039
HASS币
20
 楼主| 发表于 2021-6-8 11:27:24 | 显示全部楼层

试了下,不行。因为我有跨类调用。主要是加了async,调试都很麻烦。。。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 21:46 , Processed in 0.254590 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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