Python ecobee api返回响应500:{';状态';:{';代码';:4,';消息';:';序列化错误。不允许更新模型:恒温器';}

Python ecobee api返回响应500:{';状态';:{';代码';:4,';消息';:';序列化错误。不允许更新模型:恒温器';},python,api,ecobee,Python,Api,Ecobee,我正在构建一个应用程序,它利用python中的ecobee API来控制恒温器模式(heat/cool/auto/off)。我构建了一个函数来执行此操作,它在4天前正常工作。当我昨天开始重新编写代码时,每次我都会收到500个响应,状态如下:{'status':{'code':4,'message':'Serialization error.Not allowed to update model:automator'}。我似乎找不到问题所在以及如何解决。我已经根据ecobee网站上关于代码4的建议

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

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())

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

要通过API更新恒温器,您需要具有“smartWrite”作用域()

当我再次尝试使用该范围时,问题得到了解决

希望有帮助