是否有一种简单的方法来发现和区分恒温器件ID?我原本希望能够在设备界面或使用Firebase库中的某个地方找到deviceId,但我还是没有发现这种情况。
我的Firebase对象是这样创建的(url以恒温器结束):
Firebase fb = new Firebase("https://developer-api.nest.com/devices/thermostats/");
要更改恒温器上的属性,我的代码看起来像这样......
/ *此方法执行http get(而不是firebase)以将整个恒温器数据结构作为JSON对象。然后,它遍历每个恒温器deviceId结构,寻找匹配的房间名称。当它找到匹配时,它会断开并将deviceID作为字符串返回。需要设备ID来使用firebase更改特定于该恒温器设备的所有数据。 * /
deviceId = getDeviceIdFromRoomName(roomName);
//然后我执行一个这样的动作来改变" target_temperature_f"一个新的价值。
fb.child(deviceId).child(NestConstants.TARGET_TEMP_F).setValue(newValue);
使用Firebase库似乎应该有一种更简单,更可靠的方法,但我还没有找到它。有什么建议吗?
为了帮助实现可视化,这是我正在解析的数据结构,我正在寻找更好的方法来获取建议" CRfcK-QwEZLAr4qxHshPmZyFayBdIYv5" (如果存在)。
{
"thermostats": {
"CRfcK-QwEZLAr4qxHshPmZyFayBdIYv5": {
"locale": "en-US",
"temperature_scale": "F",
"is_using_emergency_heat": false,
"has_fan": true,
"software_version": "4.1",
"has_leaf": true,
"device_id": "CRfcK-QwEZLAr4qxHshPmZyFayBdIYv5",
"name": "Master Bedroom",
"can_heat": true,
"can_cool": false,
"hvac_mode": "heat",
"target_temperature_c": 18.5,
"target_temperature_f": 66,
"target_temperature_high_c": 24,
"target_temperature_high_f": 75,
"target_temperature_low_c": 20,
"target_temperature_low_f": 68,
"ambient_temperature_c": 12,
"ambient_temperature_f": 54,
"away_temperature_high_c": 24,
"away_temperature_high_f": 76,
"away_temperature_low_c": 12.5,
"away_temperature_low_f": 55,
"structure_id": "xF7P6wyrR7-8VHerOAcHYDMBc_odGpO2CIpQO_g5EpM13LINO9Oxdg",
"fan_timer_active": false,
"name_long": "Master Bedroom Thermostat",
"is_online": true
}``
答案 0 :(得分:2)
免责声明:我没有使用过NEST API。我在下面的回答是基于常规Firebase API的经验。
从它看起来的方式thermostats
是Firebase list。在这种情况下,您可以使用以下内容轻松处理所有孩子:
var thermostats = new Firebase("https://developer-api.nest.com/devices/thermostats/");
thermostats .on('child_added', function(snapshot) {
var thermostat = snapshot.val();
alert(thermostat.device_id+' is '+thermostat.name);
});
我假设你在这里使用JavaScript API。
答案 1 :(得分:1)
我不确定我在这里是否正确理解您,但您是否尝试过调用结构ID?当我这样做时,它列出了与该结构相关的所有恒温器。一旦你有了所有的恒温器,你能打电话给他们并存储相关的名字吗?如果我离开了,请告诉我,我会再试一次。
答案 2 :(得分:0)
格雷格,
该结构包含关联设备ID的列表。如果您的意图是可发现性,我建议开始聆听结构。您只需要执行一次,因为设备ID不会更改。一旦遍历结构并获得所需的设备ID,您可能永远不需要再次执行该步骤。
列夫。