You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Home Assistant中toshiba-ac与solaredge插件的requests库冲突排查求助

排查Home Assistant中toshiba-ac与solaredge插件的requests依赖冲突问题

问题概述

在Home Assistant环境中同时启用toshiba-ac和solaredge插件时触发报错:

requests.get() takes 1 positional argument but 2 were given

问题定位到solaredge库的get请求调用(对应库文件第55行及后续代码);移除toshiba-ac插件后,solaredge恢复正常。两者的依赖关系如下:

  • solaredge:依赖requests,未指定版本限制
  • toshiba-ac:依赖toshiba-ac库,后者依赖azure-iot-device==2.9.0,该库限制requests>=2.20.0,<3.0.0
    当前requests最新版本为2.28.2,符合azure-iot-device的版本范围,但冲突仍存在。

排查方向

  1. 确认实际安装的依赖版本
    进入Home Assistant的Python虚拟环境,执行pip freeze查看:

    • 当前实际安装的requests版本
    • 是否存在其他依赖(如urllib3、chardet等requests的依赖库)的版本冲突,导致requests的API行为被间接修改
  2. 验证solaredge库的调用合法性
    编写简单测试脚本,模拟solaredge库的get调用逻辑:

    import requests
    # 模拟solaredge的调用方式
    requests.get("https://example.com", {"param": "value"})
    # 对比标准调用方式
    requests.get("https://example.com", params={"param": "value"})
    

    在单独安装solaredge、单独安装toshiba-ac+依赖、两者同时安装三种环境下执行测试,确认是否是调用方式不规范导致的参数错误。

  3. 检查azure-iot-device对requests的影响
    单独安装azure-iot-device==2.9.0及对应的requests版本,测试requests.get的调用行为是否被修改,比如是否有 monkey-patch 改变了参数接收方式。

解决建议

  1. 锁定requests兼容版本
    在Home Assistant的自定义配置中指定requests版本为2.27.x或更早的稳定版本(处于>=2.20.0,<3.0.0范围内),避免自动更新到可能触发冲突的版本。

  2. 修复solaredge库的调用方式
    如果排查确认是solaredge库的参数传递不规范(如将params作为位置参数而非关键字参数传入),可fork该库修改代码:
    将类似requests.get(url, params)的代码改为requests.get(url, params=params),然后在Home Assistant中替换使用修改后的库。

  3. 提交官方修复请求
    将冲突场景、报错信息及排查结果提交到solaredge库的代码仓库,请求官方修复不符合requests规范的调用逻辑。

  4. 临时替代方案
    暂时无法解决冲突时,可根据使用需求切换启用其中一个插件,或寻找功能类似的替代插件。

内容的提问来源于stack exchange,提问作者Bart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:40:56