当前位置:  开发笔记 > 前端 > 正文

Nest温控器温度未更新

如何解决《Nest温控器温度未更新》经验,为你挑选了0个好方法。

我试图以编程方式(Android)改变我的Nest的温度,没有任何运气.请求工作可能在30-50次尝试中有1次.

我试过通过Firebase Nest SDK完成它,并且根本不会调用NestAPI.CompletionListener.看到它不起作用,我尝试使用REST api,它工作了两次,然后再尝试30次尝试.我也从命令行使用curl尝试了它,结果相同,直到我因为速率限制而最终被"阻止".在被阻止之前,请求返回完整的恒温器对象,就像执行GET请求而不是PUT一样.

当温度实际上更新时,响应仅包含新的target_temperature_high_ctarget_temperature_high_c值.

还有其他人见过类似的行为吗?

编辑:在下面添加了一些代码

这是使用Nest Android API(基于Firebase)的代码:

NestAPI.CompletionListener completionListener = new NestAPI.CompletionListener() {
    public void onComplete() {
        Debug.d("NEST", "request complete");
    }
    public void onError(int errorCode) {
        Debug.e("NEST", "error: "+errorCode);
    }
};
NestAPI.getInstance().setTargetTemperatureHighC(myNest.getDeviceID(), 25, completionListener);

这只有在我每小时拨打一次电话时才有效.如果我甚至尝试两次,第二次尝试不起作用.

接下来,我尝试使用REST界面.这似乎工作更频繁(工作5-6次,之后它开始表现得像我在做GET请求而不是PUT.

JSONObject dataToSend = new JSONObject();
dataToSend.put("target_temperature_low_c", 23);
dataToSend.put("target_temperature_high_c", 26);

HttpPut httpost = new HttpPut("https://developer-api.nest.com/devices/thermostats/"+myNest.getDeviceID()+"?auth="+myAuthToken);
httpost.setHeader("Content-type", "application/json");

httpost.setEntity(new StringEntity(dataToSend.toString()));
HttpResponse response = defaultHttpClient.execute(httpost);
HttpEntity entity = response.getEntity();

String response = convertStreamToString(entity.getContent());

编辑2:刚刚使用Nest Home Simulator进行了测试,它的工作原理非常好.但真正的硬件存在问题

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有