Температура термостата гнезда не обновляется

Я пытаюсь изменить температуру своего Nest программно (Android), без всякой удачи. Запросы работают, возможно, 1 из 30-50 попыток.

Я попытался сделать это через SDK Firebase Nest, а NestAPI.CompletionListener вообще не вызван. Видя, как это не работает, я попробовал его с REST api, где он работал дважды, а затем снова 1 из 30 попыток. Я также попробовал это с завитой из командной строки с теми же результатами, пока я, наконец, не «заблокировался» из-за ограничения скорости. Перед блокировкой запросы возвращают полный объект термостата, как и запрос GET вместо PUT.

Когда температура действительно обновилась, ответ содержит только новые значения target_temperature_high_c и target_temperature_high_c .

Кто-нибудь еще видел подобное поведение?

Изменить: добавлен код ниже

Вот мой код, используя Android-интерфейс Nest (на основе 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()); 

Edit 2: Просто протестируйте это с помощью Nest Home Simulator, и он отлично работает. Однако реальное оборудование проблематично

Solutions Collecting From Web of "Температура термостата гнезда не обновляется"

Из javadocs для setTargetTemperatureHighC говорится: https://github.com/nestlabs/android-NestDK/blob/master/NestLib/src/main/java/com/nestapi/lib/API/NestAPI.java#L111

Это значение имеет значение только в режиме «Heat and Cool». В противном случае см. {@link #setTargetTemperatureC (String, Long, com.nestapi.lib.API.NestAPI.CompletionListener)}

Вы можете проверить режим, используя Thermostat.getHVACMode ()

И если он не находится в режиме Heat and Cool вы должны использовать:

NestAPI.setTargetTemperatureC

Т.е. если вы указываете, что устройство Nest переходит на температуру 50deg, когда текущая температура составляет 30deg, и она была в «прохладном» режиме – это будет игнорировать вас.

(Возможно, почему это сработало один раз, когда вы попросили его разогреть, когда он был в режиме высокой температуры – как только он достигнет этой температуры, он может перейти в прохладный режим и попросить его нагреться больше, будет проигнорирован.)