gpt4 book ai didi

android - Nest Thermostat 温度未更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:21 25 4
gpt4 key购买 nike

我正在尝试以编程方式 (Android) 更改我的 Nest 的温度,但没有成功。请求工作可能是 30-50 次尝试中的 1 次。

我已尝试通过 Firebase Nest SDK 执行此操作,但根本没有调用 NestAPI.CompletionListener。看到这是行不通的,我用 REST api 尝试了它,它工作了两次,然后 30 次尝试中有 1 次。我还从命令行使用 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 次,之后 API 开始表现得像我在执行 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 对此进行了测试,它运行良好。虽然真正的硬件是有问题的

最佳答案

setTargetTemperatureHighC 的 javadocs 它说 https://github.com/nestlabs/android-NestDK/blob/master/NestLib/src/main/java/com/nestapi/lib/API/NestAPI.java#L111

This value is only relevant when in "Heat and Cool" mode. Otherwise, see {@link #setTargetTemperatureC(String, Long, com.nestapi.lib.API.NestAPI.CompletionListener)}

您可以使用 Thermostat.getHVACMode() 检查模式

如果它不是Heat and Cool 模式,你应该使用:

NestAPI.setTargetTemperatureC

即如果你在当前温度为 30 度且处于“凉爽”模式时告诉 Nest 设备达到 50 度的温度 - 它会忽略你。

(这可能是它工作一次的原因,当你要求它预热时,当它处于加热模式时 - 一旦它达到这个温度,它就可以进入冷却模式并且要求它加热更多将被忽略。)

关于android - Nest Thermostat 温度未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com