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

Google Nest Thermostat ทุกรุ่นรองรับใน API การจัดการอุปกรณ์อัจฉริยะ (SDM) อุปกรณ์เหล่านี้จะแสดงผลประเภทอุปกรณ์เป็น THERMOSTAT

sdm.devices.types.THERMOSTAT

ลักษณะเฉพาะ

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

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

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

เปลี่ยนโหมด

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

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

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

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

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

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

โปรดทราบว่าคำสั่งจุดตั้งค่าจะใช้องศาเซลเซียสเป็นพารามิเตอร์เท่านั้น แม้ว่า 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" : "366dcbfb-2b0d-4c8c-9ad9-2ff7434f1dc7",
  "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" : "1e9d0340-7543-4a6f-b498-7c12a77f0b27",
  "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