我试图以编程方式(Android)改变我的Nest的温度,没有任何运气.请求工作可能在30-50次尝试中有1次.
我试过通过Firebase Nest SDK完成它,并且根本不会调用NestAPI.CompletionListener.看到它不起作用,我尝试使用REST api,它工作了两次,然后再尝试30次尝试.我也从命令行使用curl尝试了它,结果相同,直到我因为速率限制而最终被"阻止".在被阻止之前,请求返回完整的恒温器对象,就像执行GET请求而不是PUT一样.
当温度实际上更新时,响应仅包含新的target_temperature_high_c和target_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);
Run Code Online (Sandbox Code Playgroud)
这只有在我每小时拨打一次电话时才有效.如果我甚至尝试两次,第二次尝试不起作用.
接下来,我尝试使用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());
Run Code Online (Sandbox Code Playgroud)
编辑2:刚刚使用Nest Home Simulator进行了测试,它的工作原理非常好.但真正的硬件存在问题
我的朋友有一个公共共享巢照相机地址.我想使用VLC播放器来观看视频流,而不是使用网络浏览器来观看视频.通过这种方式,我可以使用VLC的许多其他功能对视频进行视频分析.怎么做?
我正在使用Nest Developer https://developer.nest.com/ API来创建iOS应用程序.有谁知道如何将Firebase框架链接到我的应用程序?我一直在收到链接错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FTransactionResult", referenced from:
objc-class-ref in NestThermostatManager.o
"_OBJC_CLASS_$_Firebase", referenced from:
objc-class-ref in NestThermostatManager.o
objc-class-ref in NestStructureManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud) 自从我得到我的巢以来,我想要的是能够在很长一段时间内总结我的能量使用以寻找模式并主要安抚我的好奇心.当然有每月使用情况报告,网络和设备只能回溯10天.
API是否公开了这些数据,还是我需要以某种方式自己计算?我没有在API引用上看到类似'is_running'的内容.或者未来"Nest Data API"有可能会问世吗?
我一直无法获取和更改Nest恒温器提供的一些基本数据.
使用命令行,如何获取或更改恒温器上的各个设置或值?
Nest Thermostat设备将在屏幕上显示"冷却"或"加热".如何通过Nest API获取此状态?
该hvac_mode属性似乎只是简单地显示用户的恒温器能够控制什么,并且在发生冷却或加热时不会改变.
现在,我使用的是一个简单但不完美的逻辑:
if (can_cool && target_temperature < ambient_temperature) --> isCooling
if (can_heat && target_temperature > ambient_temperature) --> isHeating
else --> isDoingNothing
Run Code Online (Sandbox Code Playgroud)
通过不完美,我的意思是我遇到了这种逻辑不正确的情况.例如,在一个给定的情况下的ambient_temperatureIS 20 Celsius和target_temperature是21 Celsius用can_heat设置为true我的UI会说温控器加热,而实际上并非如此.
这可能是因为目标和环境温度太近,但我不知道阈值是多少.
是否有其他或更好的方法来确定加热和冷却状态?
我有一个Nest学习恒温器.我认为当我不使用运动传感器时,它会尝试"自动检测".无论如何,它不是很准确,更重要的是,它的算法并不透明.
相反,我认为有一个更好的方法来判断我是否在家里......
Nest在与我的手机相同的子网上绘制IP地址.
我想:
这可以通过Nest API实现吗?
这是否违反了任何Nest API 禁令?
像这样的客户已经存在吗?
我已经浏览了Nest开发者网站,我找不到任何与相机有关的内容.我可以找到关于恒温器和烟/ CO警报的大量信息,但相机没什么.
特别是,我正在寻找如何获取视频URL,如何获取/设置视频分辨率和帧速率,以及如何获取/设置缩放级别(如果适用).谢谢.
当我尝试制作多个new Firebase(url);实例时,我遇到了问题.
例如:
var token1 = "c.AdASdsAsds...";
var token2 = "c.dkasdEddss...";
var v1 = new Firebase('https://developer-api.nest.com');
v1.auth(token1,function(err){
console.log("Connected 1 "+err);
},function(err){ console.log("Cancel 1: "+err); });
var v2 = new Firebase('https://developer-api.nest.com');
v2.auth(token2,function(err){
console.log("Connected 2 "+err);
},function(err){ console.log("Cancel 2 "+err); });
Run Code Online (Sandbox Code Playgroud)
控制台日志:Connected 2 null就是这样......没有了.
因此,这意味着它永远不会调用回调函数从v1.auth();它忽略了它,它看起来像它变成被覆盖v2.auth();,即使它们是不同的火力点的情况下,它会干扰其他的一切,例如,v1.child("path").on("value",function(snapshot){});并且v2.child("path").on("value",function(snapshot){});发生这种情况时将无法正常工作.