首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ecobee api返回响应500:{'status':{'code':4,'message':‘序列化错误,不允许更新模型:恒温器’}}

ecobee api返回响应500:{'status':{'code':4,'message':‘序列化错误,不允许更新模型:恒温器’}}
EN

Stack Overflow用户
提问于 2020-02-12 08:35:44
回答 1查看 46关注 0票数 0

我正在构建一个应用程序,它利用python中的ecobee API来控制恒温器模式(热/冷/自动/关)。我构建了一个函数来执行此操作,它在4天前运行正常。当我昨天开始重新编写代码时,每次执行相同的操作时,我都会收到一个500响应,状态如下:{'status': {'code': 4, 'message': 'Serialization error. Not permitted to update model: Thermostat'}}。我似乎找不到问题是什么,以及如何解决它。我已经用ecobee创建了一个工单-基于他们关于代码4的网站建议-但没有答案。我希望有人也遇到了类似的问题,可以帮我解决问题,或者在这里给我一些启发。我试图在网页上使用他们的js示例,但对于这个部分/示例也不起作用-我可以读取所有变量的状态,获取令牌,刷新它们,但更改模式(或温度)似乎不再起作用。下面是我更改恒温器模式的代码:

代码语言:javascript
复制
def EB_hvac_mode(access_token, refresh_token, mode = "off"):
    # mode: heat, cool, auto, off
    header = {'Content-Type': 'application/json;charset=UTF-8', 'Authorization':'Bearer ' + access_token}
    payload = {"selection":{"selectionType":"registered","selectionMatch":""},"thermostat":{"settings":{"hvacMode":mode}}}
    print(payload)
    url = "https://api.ecobee.com/1/thermostat?format=json"
    print(url)
    r = requests.post(url, json=payload, headers=header)
    print(r.json())
EN

回答 1

Stack Overflow用户

发布于 2020-04-28 21:44:33

当我之前遇到这个问题是因为我在授权应用程序时没有请求正确的作用域。因此,请仔细检查您的作用域是否正确。

要通过API更新恒温器,您需要具有"smartWrite“作用域(https://www.ecobee.com/home/developer/api/documentation/v1/auth/auth-intro.shtml)

当我再次尝试该作用域时,问题就解决了。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60179425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档