Я пытаюсь изменить температуру своего 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-API 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());
Изменить 2: Просто протестируйте это с помощью Nest Home Simulator, и он отлично работает. Реальное оборудование проблематично, хотя