サーモスタットのデバイス ID を簡単に見つけて区別する方法はありますか? デバイス インターフェイスのどこかで、または Firebase ライブラリを使用して deviceId を見つけることができると期待していましたが、どちらもそうではありませんでした。
私のFirebaseオブジェクトは次のように作成されます(サーモスタットで終わるURL):
Firebase fb = new Firebase("https://developer-api.nest.com/devices/thermostats/");
サーモスタットのプロパティを変更するには、私のコードは次のようになります...
/* このメソッドは、(firebase ではなく) http get を実行して、サーモスタット データ構造全体を JSON オブジェクトとして取得します。次に、各サーモスタットの deviceId 構造体を反復処理して、一致する部屋名を探します。一致が見つかると、デバイス ID を中断して文字列として返します。デバイス 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
}``