 
Google Nest Thermostat ทุกรุ่นรองรับใน Smart Device Management (SDM) API อุปกรณ์เหล่านี้จะแสดงผลประเภทอุปกรณ์ THERMOSTAT
sdm.devices.types.THERMOSTAT
ลักษณะ
ข้อมูลอ้างอิง
ลักษณะ คำสั่ง หรือเหตุการณ์ต่อไปนี้เกี่ยวข้องกับกลุ่มนี้
| ลักษณะ | คำอธิบาย | คำสั่ง | 
|---|---|---|
| การเชื่อมต่อ | ลักษณะนี้เป็นของอุปกรณ์ที่มีข้อมูลการเชื่อมต่อ | |
| Fan | ลักษณะนี้เป็นของอุปกรณ์ใดก็ตามที่มีความสามารถของระบบในการควบคุมพัดลม | SetTimer | 
| ความชื้น | ลักษณะนี้เป็นของอุปกรณ์ที่มีเซ็นเซอร์วัดความชื้น | |
| ข้อมูล | ลักษณะนี้เป็นของอุปกรณ์ใดก็ตามสำหรับข้อมูลที่เกี่ยวข้องกับอุปกรณ์ | |
| การตั้งค่า | ลักษณะนี้เป็นของอุปกรณ์ใดก็ตามสำหรับข้อมูลการตั้งค่าที่เกี่ยวข้องกับอุปกรณ์ | |
| อุณหภูมิ | ลักษณะนี้เป็นของอุปกรณ์ที่มีเซ็นเซอร์วัดอุณหภูมิ | |
| ThermostatEco | ลักษณะนี้เป็นของอุปกรณ์ประเภทเทอร์โมสตัทที่รองรับโหมดประหยัด | SetMode | 
| ThermostatHvac | ลักษณะนี้เป็นของประเภทอุปกรณ์ THERMOSTAT ที่รายงานรายละเอียด HVAC ได้ | |
| ThermostatMode | ลักษณะนี้เป็นของประเภทอุปกรณ์ THERMOSTAT ที่รองรับโหมดตัวควบคุมอุณหภูมิที่แตกต่างกัน | SetMode | 
| ThermostatTemperatureSetpoint | ลักษณะนี้เป็นของอุปกรณ์ประเภท THERMOSTAT ที่รองรับการตั้งค่าอุณหภูมิเป้าหมายและช่วงอุณหภูมิ | SetHeat SetCool SetRange | 
JSON
การไม่มีลักษณะในคำตอบ GET แสดงว่าลักษณะหรือ ฟีเจอร์ไม่พร้อมใช้งานสำหรับอุปกรณ์ในขณะนี้ ดูข้อมูลเพิ่มเติมได้ที่ ประเภทอุปกรณ์
{
  "type" : "sdm.devices.types.THERMOSTAT",
  "traits" : {
    "sdm.devices.traits.Connectivity" : {
      "status" : "ONLINE"
    },
    "sdm.devices.traits.Fan" : {
      "timerMode" : "ON",
      "timerTimeout" : "2019-05-10T03:22:54Z"
    },
    "sdm.devices.traits.Humidity" : {
      "ambientHumidityPercent" : 35.0
    },
    "sdm.devices.traits.Info" : {
      "customName" : "My device"
    },
    "sdm.devices.traits.Settings" : {
      "temperatureScale" : "CELSIUS"
    },
    "sdm.devices.traits.Temperature" : {
      "ambientTemperatureCelsius" : 23.0
    },
    "sdm.devices.traits.ThermostatEco" : {
      "availableModes" : ["MANUAL_ECO", "OFF"],
      "mode" : "MANUAL_ECO",
      "heatCelsius" : 20.0,
      "coolCelsius" : 22.0
    },
    "sdm.devices.traits.ThermostatHvac" : {
      "status" : "HEATING"
    },
    "sdm.devices.traits.ThermostatMode" : {
      "availableModes" : ["HEAT", "COOL", "HEATCOOL", "OFF"],
      "mode" : "COOL"
    },
    "sdm.devices.traits.ThermostatTemperatureSetpoint" : {
      "heatCelsius" : 20.0,
      "coolCelsius" : 22.0
    }
  }
}อุณหภูมิและความชื้น
หากต้องการอ่านอุณหภูมิแวดล้อมของตัวควบคุมอุณหภูมิ ให้ใช้ลักษณะอุณหภูมิ ระบบจะวัดอุณหภูมิแวดล้อมที่อุปกรณ์
หากต้องการอ่านความชื้นโดยรอบของตัวควบคุมอุณหภูมิ ให้ใช้ ความชื้น ลักษณะ ความชื้น โดยรอบจะวัดที่อุปกรณ์
หน่วยวัดอุณหภูมิ
Google Nest Thermostat แสดงอุณหภูมิเป็นองศาเซลเซียสหรือฟาเรนไฮต์ได้ แต่ตั้งค่าหน่วยวัดผ่าน SDM API ไม่ได้ หากต้องการระบุ หน่วยอุณหภูมิที่ผู้ใช้ตั้งค่าไว้ในปัจจุบัน ให้ใช้ลักษณะ Settings
เปลี่ยนโหมด
โหมดของตัวควบคุมอุณหภูมิได้รับการจัดการโดยลักษณะ 2 แบบ ได้แก่ ThermostatMode และ ThermostatEco
โหมดมาตรฐาน
หากต้องการเปลี่ยนโหมดตัวควบคุมอุณหภูมิเป็น HEAT, COOL หรือ HEATCOOL ให้ใช้คำสั่ง SetMode ของลักษณะ ThermostatMode
นอกจากนี้ คุณยังใช้คำสั่งนี้เพื่อเปลี่ยนโหมดของตัวควบคุมอุณหภูมิเป็นปิดได้ แต่จะใช้เพื่อเปิดโหมดอีโคไม่ได้เช่น หากต้องการเปลี่ยนโหมดตัวควบคุมอุณหภูมิมาตรฐาน ให้ทำดังนี้
ส่งคำขอ
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatMode.SetMode",
  "params" : {
    "mode" : "HEAT"
  }
}
การตอบกลับ
{}
โหมดอีโค
หากต้องการเปิดโหมดประหยัดพลังงาน ให้ใช้ MANUAL_ECO เป็นโหมดที่มีคำสั่ง SetMode ของลักษณะ ThermostatEco ดังนี้
ส่งคำขอ
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatEco.SetMode",
  "params" : {
    "mode" : "MANUAL_ECO"
  }
}
การตอบกลับ
{}
คำสั่งนี้จะส่งผลต่อลักษณะอื่นๆ โดยอิงตามสถานะปัจจุบันหรือการเปลี่ยนแปลงโหมดประหยัดพลังงาน ดังนี้
- หากโหมดอีโคปิดอยู่ โหมดตัวควบคุมอุณหภูมิจะเปลี่ยนเป็นโหมดมาตรฐานล่าสุด (HEAT, COOL, HEATCOOL หรือ OFF) ที่ใช้งานอยู่โดยค่าเริ่มต้น
- หากโหมดอีโคเป็น MANUAL_ECO
- ระบบจะปฏิเสธคำสั่งสำหรับลักษณะ ThermostatTemperatureSetpoint
- ลักษณะ ThermostatTemperatureSetpoint จะไม่แสดงจุดตั้งค่าอุณหภูมิ
เปลี่ยนอุณหภูมิที่กำหนด
คุณจะเปลี่ยนอุณหภูมิที่กำหนดได้ก็ต่อเมื่อตัวควบคุมอุณหภูมิอยู่ในโหมด HEAT, COOL หรือ HEATCOOL และ อุณหภูมิที่กำหนดที่อนุญาตสอดคล้องกับโหมดปัจจุบันของตัวควบคุมอุณหภูมิ เปลี่ยนจุดตั้งค่าอุณหภูมิไม่ได้เมื่อโหมดเป็นปิดหรือเมื่อตั้งค่าโหมดอีโคเป็น MANUAL_ECO
ตัวควบคุมอุณหภูมิต้องอยู่ในโหมดที่สอดคล้องกับคำสั่งที่เรียกใช้ก่อนที่จะเปลี่ยน จุดตั้งค่าอุณหภูมิ คำสั่งและฟิลด์ที่ใช้เปลี่ยนอุณหภูมิที่กำหนดจะแตกต่างกันไปตามโหมดของตัวควบคุมอุณหภูมิ
เช่น หากต้องการออกคำสั่ง SetHeat ตัวควบคุมอุณหภูมิต้องอยู่ในโหมดทำความร้อนก่อน
| โหมด | คำสั่ง | ช่อง | 
|---|---|---|
| HEAT | SetHeat | heatCelsius | 
| เย็น | SetCool | coolCelsius | 
| HEATCOOL | SetRange | heatCelsius,coolCelsius | 
โปรดทราบว่าคำสั่งอุณหภูมิที่กำหนดจะใช้เฉพาะองศาเซลเซียสเป็นพารามิเตอร์เท่านั้น แม้ว่า Google Nest Thermostat จะแสดงอุณหภูมิเป็นองศาเซลเซียสหรือฟาเรนไฮต์ก็ได้
ตัวอย่างเช่น หากต้องการเปลี่ยนอุณหภูมิที่ต้องการให้ตัวควบคุมรักษาไว้เมื่อตัวควบคุมอุณหภูมิอยู่ในโหมด HEAT ให้ใช้คำสั่ง SetHeat ของลักษณะ ThermostatTemperatureSetpoint
ส่งคำขอ
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}
การตอบกลับ
{}
จุดตั้งค่าโหมดอีโค
ผู้ใช้เป็นผู้กำหนดจุดตั้งค่า heatCelsius และ coolCelsius ที่ลักษณะเทอร์โมสแตท Eco แสดงผล และ
ไม่สามารถเปลี่ยนแปลงผ่าน SDM API ได้
เปิดหรือปิดพัดลม
หากตัวควบคุมอุณหภูมิรองรับพัดลม ให้ใช้คำสั่ง SetTimer ของลักษณะพัดลมเพื่อเปิดหรือปิด เมื่อเปิด คุณจะระบุระยะเวลาที่ต้องการให้พัดลมทำงานเป็นวินาทีได้
เช่น หากต้องการเปิดพัดลมเป็นเวลา 1 ชั่วโมง ให้ทำดังนี้
ส่งคำขอ
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.Fan.SetTimer",
  "params" : {
    "timerMode" : "ON",
    "duration" : "3600s"
  }
}
การตอบกลับ
{}
หากละเว้นฟิลด์ duration พัดลมจะทำงานเป็นเวลาเริ่มต้น 15 นาที
ตรวจสอบการเชื่อมต่ออุปกรณ์
หากอุปกรณ์ไม่ตอบสนองต่อคำสั่งหรือส่งเหตุการณ์ หรือคุณได้รับข้อผิดพลาดจาก API ที่เกี่ยวข้องกับอุปกรณ์ ให้ใช้ลักษณะการเชื่อมต่อ เพื่อตรวจสอบการเชื่อมต่อของอุปกรณ์สำหรับสถานะออฟไลน์ ตรวจสอบ การเชื่อมต่ออินเทอร์เน็ตของอุปกรณ์และตรวจสอบว่าบริการ Nest พร้อมใช้งาน
หากเปิดใช้กิจกรรม คุณควรได้รับกิจกรรมทรัพยากร ซึ่งระบุว่าอุปกรณ์ออฟไลน์อยู่ด้วย
เพย์โหลด
{
  "eventId" : "e98ea218-134b-404f-8546-a4fc2e2223a9",
  "timestamp" : "2019-01-01T00:00:01Z",
  "resourceUpdate" : {
    "name" : "enterprises/project-id/devices/device-id",
    "traits" : {
      "sdm.devices.traits.Connectivity" : {
        "status" : "OFFLINE"
      }
    }
  },
  "userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
  "resourceGroup" : [
    "enterprises/project-id/devices/device-id"
  ]
}ตอบสนองต่อเหตุการณ์ในอุปกรณ์
การเปลี่ยนแปลงใดๆ ในฟิลด์ลักษณะจะสร้างเหตุการณ์
 ตัวอย่างเช่น คุณจะได้รับเหตุการณ์resourceUpdateต่อไปนี้หากสถานะ HVAC ของตัวควบคุมอุณหภูมิเปลี่ยนเป็น HEATING
เพย์โหลด
{
  "eventId" : "d22461cc-a6f8-41de-9596-1a99748aad5b",
  "timestamp" : "2019-01-01T00:00:01Z",
  "resourceUpdate" : {
    "name" : "enterprises/project-id/devices/device-id",
    "traits" : {
      "sdm.devices.traits.ThermostatHvac" : {
        "status" : "HEATING"
      }
    }
  },
  "userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
  "resourceGroup" : [
    "enterprises/project-id/devices/device-id"
  ]
}ระบบจะทริกเกอร์เหตุการณ์สำหรับลักษณะทั้งหมดที่เชื่อมโยงกับอุปกรณ์ประเภทนี้ เปิดใช้ เหตุการณ์หากต้องการตอบสนอง ต่อเหตุการณ์ในลักษณะใดลักษณะหนึ่งซึ่งเป็นส่วนหนึ่งของการผสานรวม
ระยะเวลาของเหตุการณ์
โปรดทราบว่าระบบอาจไม่ส่งเหตุการณ์สำหรับการเปลี่ยนแปลงสถานะ HVAC พร้อมกับเหตุการณ์ สำหรับการเปลี่ยนโหมดตัวควบคุมอุณหภูมิ
เช่น บางครั้งอาจมีความล่าช้าในการเริ่มโหมดทำความร้อนหรือทำความเย็นของตัวควบคุมอุณหภูมิเพื่อปกป้องระบบ HVAC ในสถานการณ์นี้ การเปลี่ยนโหมดตัวควบคุมอุณหภูมิอาจส่งเหตุการณ์สำหรับ ThermostatMode และ ThermostatTemperatureSetpoint ในตอนแรกเท่านั้น โดยจะส่งการเปลี่ยนแปลงลักษณะ ThermostatHvac ในภายหลังเป็นเหตุการณ์แยกต่างหาก เมื่อระบบเปิดขึ้นจริง หากไม่มีการหน่วงเวลาในการเปิดระบบ HVAC ระบบจะส่งเหตุการณ์ทั้ง 3 รายการพร้อมกัน
ข้อผิดพลาด
ระบบอาจแสดงรหัสข้อผิดพลาดต่อไปนี้ที่เกี่ยวข้องกับอุปกรณ์นี้
| ข้อความแสดงข้อผิดพลาด | RPC | การแก้ปัญหา | 
|---|---|---|
| ค่าเย็นต้องมากกว่าค่าร้อน | INVALID_ARGUMENT | ตรวจสอบว่าฟิลด์ heatCelsiusมีค่าน้อยกว่าฟิลด์coolCelsiusในคำสั่ง | 
| ไม่อนุญาตให้ใช้คำสั่งในโหมดตัวควบคุมอุณหภูมิปัจจุบัน | FAILED_PRECONDITION | ตัวควบคุมอุณหภูมิบางรุ่นไม่รองรับการเปลี่ยนโหมดอีโคเมื่อโหมดตัวควบคุมอุณหภูมิเป็นปิด ตามลักษณะ ThermostatMode ต้องเปลี่ยนโหมดตัวควบคุมอุณหภูมิเป็น HEAT, COOL หรือ HEATCOOL ก่อนจึงจะเปลี่ยนโหมดอีโคได้ | 
| พัดลมของตัวควบคุมอุณหภูมิไม่พร้อมใช้งาน | FAILED_PRECONDITION | ตัวควบคุมอุณหภูมิไม่มีความสามารถในการควบคุมพัดลม คุณใช้ลักษณะและคำสั่งที่เกี่ยวข้องกับพัดลมกับอุปกรณ์นี้ไม่ได้ | 
| ไม่อนุญาตให้ใช้คำสั่งเมื่อตัวควบคุมอุณหภูมิอยู่ในโหมด MANUAL_ECO | FAILED_PRECONDITION | ไม่สามารถตั้งค่าจุดอุณหภูมิได้เมื่อตัวควบคุมอุณหภูมิอยู่ในโหมดอีโคแบบกำหนดเอง | 
ดูรายการรหัสข้อผิดพลาดของ API ทั้งหมดได้ที่ข้อมูลอ้างอิงรหัสข้อผิดพลาดของ API
