ตัวคุมอุณหภูมิ

Google Nest Thermostat ทุกรุ่นสามารถใช้งานได้ใน Smart Device Management (SDM) API อุปกรณ์เหล่านี้จะแสดงประเภท ตัวควบคุมอุณหภูมิ ดังนี้

sdm.devices.types.THERMOSTAT

ลักษณะเฉพาะ

ข้อมูลอ้างอิง

ลักษณะ คำสั่ง หรือเหตุการณ์ต่อไปนี้เกี่ยวข้องกับกลุ่มนี้

ลักษณะคำอธิบายคำสั่ง
การเชื่อมต่อโดยลักษณะนี้เป็นของอุปกรณ์ทุกเครื่องที่มีข้อมูลการเชื่อมต่อ
แฟนคลับลักษณะนี้เป็นของอุปกรณ์ใดก็ตามที่ระบบควบคุมพัดลมได้SetTimer
ความชื้นลักษณะนี้เป็นของอุปกรณ์ที่มีเซ็นเซอร์วัดความชื้น
ข้อมูลลักษณะนี้เป็นของอุปกรณ์ใดๆ สำหรับข้อมูลที่เกี่ยวข้องกับอุปกรณ์
การตั้งค่าลักษณะนี้เป็นของอุปกรณ์ใดก็ได้สำหรับข้อมูลการตั้งค่าที่เกี่ยวข้องกับอุปกรณ์
อุณหภูมิลักษณะนี้เป็นของอุปกรณ์ที่มีเซ็นเซอร์สำหรับวัดอุณหภูมิ
ThermostatEcoลักษณะนี้เป็นของอุปกรณ์ประเภทตัวควบคุมอุณหภูมิที่รองรับโหมดอีโคSetMode
ThermostatHvacโดยลักษณะนี้เป็นของอุปกรณ์ประเภท THERMOSTAT ที่สามารถรายงานรายละเอียดระบบปรับอากาศ (HVAC) ได้
ThermostatModeลักษณะนี้เป็นของอุปกรณ์ประเภทตัวควบคุมอุณหภูมิที่รองรับโหมดตัวควบคุมอุณหภูมิต่างๆSetMode
ThermostatTemperatureSetpointลักษณะนี้เป็นของอุปกรณ์ประเภทตัวควบคุมอุณหภูมิที่รองรับการตั้งค่าอุณหภูมิและช่วงอุณหภูมิเป้าหมาย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 ตั้งค่าสเกลไม่ได้ หากต้องการทราบมาตรวัดอุณหภูมิที่ผู้ใช้กำหนดในปัจจุบัน ให้ใช้ลักษณะการตั้งค่า

เปลี่ยนโหมด

โหมดของตัวควบคุมอุณหภูมิมีการจัดการโดย 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"
  }
}

คำตอบ

{}

คำสั่งนี้จะส่งผลต่อลักษณะอื่นๆ ตามสถานะปัจจุบันของหรือการเปลี่ยนแปลงของโหมดอีโค

  • หากปิดโหมดอีโค โหมดตัวควบคุมอุณหภูมิจะใช้ค่าเริ่มต้นเป็นโหมดมาตรฐานล่าสุด (ทำความร้อน ทำความเย็น ทำความร้อน หรือปิด) ที่ใช้งานอยู่
  • หากโหมดอีโคคือ MANUAL_ECO:

เปลี่ยนอุณหภูมิที่กำหนด

เปลี่ยนอุณหภูมิที่กำหนดได้เฉพาะเมื่อตัวควบคุมอุณหภูมิอยู่ในโหมดทำความร้อน ทำความเย็น หรือทำความร้อน และอุณหภูมิที่เลือกสอดคล้องกับโหมดปัจจุบันของตัวควบคุมอุณหภูมิ อุณหภูมิที่กำหนดจะเปลี่ยนแปลงไม่ได้หากโหมด "ปิด" หรือเมื่อตั้งค่าโหมดอีโคเป็น MANUAL_ECO

ตัวควบคุมอุณหภูมิต้องอยู่ในโหมดที่สอดคล้องกับคำสั่งที่เรียกใช้ก่อนเปลี่ยนแปลงอุณหภูมิที่ตั้งไว้ คำสั่งและช่องที่จะเปลี่ยนอุณหภูมิจะแตกต่างกันไปตามโหมดตัวควบคุมอุณหภูมิ

ตัวอย่างเช่น หากต้องการออกคำสั่ง SetHeat ตัวควบคุมอุณหภูมิต้องอยู่ในโหมดทำความร้อนก่อน:

โหมด คำสั่ง ช่อง
ทำความร้อน SetHeat heatCelsius
เย็น SetCool coolCelsius
ทำความร้อน ทำความเย็น SetRange heatCelsius coolCelsius

โปรดทราบว่าคำสั่งของ setpoint จะใช้องศาเซลเซียสเป็นพารามิเตอร์เท่านั้น แต่ Google Nest Thermostat จะแสดงอุณหภูมิเป็นองศาเซลเซียสหรือฟาเรนไฮต์ก็ได้

คำสั่ง

เช่น หากต้องการเปลี่ยนอุณหภูมิที่กำหนดเมื่อตัวควบคุมอุณหภูมิอยู่ในโหมดทำความร้อน ให้ใช้คำสั่ง SetHeat ของลักษณะ ThermostatTemperatureSetpoint ดังนี้

ส่งคำขอ

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}

คำตอบ

{}

อุณหภูมิที่กำหนดในโหมดอีโค

การตั้งค่า heatCelsius และ coolCelsius ที่แสดงผลโดยลักษณะของ ThermostatEco กำหนดโดยผู้ใช้ และจะเปลี่ยนผ่าน 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" : "b7705246-9224-46af-b5f2-b2af8437cd0e",
  "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) ของตัวควบคุมอุณหภูมิเปลี่ยนเป็น "ทำความร้อน"

เพย์โหลด

{
  "eventId" : "849df9a2-9a28-452e-9b34-5490fc93d88b",
  "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