Smart Device Management (SDM) API में, Google Nest Thermostat के सभी मॉडल काम करते हैं. ये डिवाइस, THERMOSTAT डिवाइस टाइप दिखाते हैं:
sdm.devices.types.THERMOSTAT
विशेषताएं
रेफ़रंस
इस ग्रुप से जुड़ी ये विशेषताएं, निर्देश या इवेंट हैं:
| विशेषता | ब्यौरा | निर्देश | 
|---|---|---|
| कनेक्टिविटी | यह ट्रेट, कनेक्टिविटी की जानकारी देने वाले किसी भी डिवाइस से जुड़ी होती है. | |
| Fan | यह ट्रेट, ऐसे किसी भी डिवाइस से जुड़ी होती है जिसमें पंखे को कंट्रोल करने की सुविधा होती है. | SetTimer | 
| नमी | यह ट्रेट, ऐसे डिवाइस से जुड़ी होती है जिसमें नमी को मेज़र करने के लिए सेंसर होता है. | |
| जानकारी | यह ट्रेट, डिवाइस से जुड़ी जानकारी के लिए किसी भी डिवाइस से जुड़ी होती है. | |
| सेटिंग | यह ट्रेट, डिवाइस से जुड़ी सेटिंग की जानकारी के लिए किसी भी डिवाइस से जुड़ी होती है. | |
| तापमान | यह विशेषता, तापमान मापने के लिए सेंसर वाले किसी भी डिवाइस की होती है. | |
| ThermostatEco | यह ट्रेट, थर्मोस्टैट के उन डिवाइस टाइप से जुड़ी है जिनमें ईको मोड की सुविधा काम करती है. | SetMode | 
| ThermostatHvac | यह ट्रेट, थर्मोस्टैट डिवाइस टाइप से जुड़ी है. यह एचवीएसी की जानकारी दे सकती है. | |
| 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
    }
  }
}तापमान और नमी
थर्मोस्टैट के आस-पास के तापमान की जानकारी पाने के लिए,Temperature trait का इस्तेमाल करें. आस-पास के तापमान को डिवाइस पर मापा जाता है.
थर्मोस्टैट के आस-पास की हवा में मौजूद नमी के बारे में जानने के लिए,Humidity trait का इस्तेमाल करें. डिवाइस पर, आस-पास के माहौल में मौजूद नमी का पता लगाया जाता है.
तापमान का स्केल
Google Nest Thermostat, तापमान को डिग्री सेल्सियस या फ़ारेनहाइट में दिखा सकता है. हालांकि, SDM API से स्केल सेट नहीं किया जा सकता. उपयोगकर्ता ने फ़िलहाल तापमान का कौनसा स्केल सेट किया है, यह पता लगाने के लिएSettings trait का इस्तेमाल करें.
मोड बदलना
थर्मोस्टैट के मोड को दो अलग-अलग ट्रेट से मैनेज किया जाता है: ThermostatMode और ThermostatEco.
स्टैंडर्ड मोड
थर्मोस्टैट के मोड को HEAT, COOL या HEATCOOL पर सेट करने के लिए, ThermostatMode trait की SetMode कमांड का इस्तेमाल करें.
इस कमांड का इस्तेमाल, थर्मोस्टैट के मोड को बंद करने के लिए भी किया जा सकता है. इसका इस्तेमाल, ईको मोड को चालू करने के लिए नहीं किया जा सकता.उदाहरण के लिए, थर्मोस्टैट के किसी स्टैंडर्ड मोड को बदलने के लिए:
अनुरोध
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatMode.SetMode",
  "params" : {
    "mode" : "HEAT"
  }
}
जवाब
{}
ईको मोड
ईको मोड चालू करने के लिए, ThermostatEco ट्रेट की SetMode कमांड के साथ MANUAL_ECO को मोड के तौर पर इस्तेमाल करें:
अनुरोध
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 trait से नहीं मिलते हैं.
 
सेट किए गए तापमानों में बदलाव करना
तापमान के सेटपॉइंट सिर्फ़ तब बदले जा सकते हैं, जब थर्मोस्टैट HEAT, COOL या HEATCOOL मोड में हो. साथ ही, सेटपॉइंट थर्मोस्टैट के मौजूदा मोड के हिसाब से होने चाहिए. मोड बंद होने पर या ईको मोड को MANUAL_ECO पर सेट करने पर, तापमान के सेटपॉइंट नहीं बदले जा सकते.
तापमान के सेटपॉइंट बदलने से पहले, थर्मोस्टैट को उस मोड में होना चाहिए जो कॉल की जा रही कमांड से मेल खाता हो. सेटपॉइंट बदलने के लिए इस्तेमाल की जाने वाली कमांड और फ़ील्ड, थर्मोस्टैट के मोड के हिसाब से अलग-अलग होते हैं.
उदाहरण के लिए, SetHeat कमांड देने से पहले, थर्मोस्टैट को HEAT मोड में होना चाहिए:
| मोड | निर्देश | फ़ील्ड | 
|---|---|---|
| की सुविधा चालू है | SetHeat | heatCelsius | 
    
| COOL | SetCool | coolCelsius | 
    
| HEATCOOL | SetRange | heatCelsius, coolCelsius | 
    
ध्यान दें कि सेटपॉइंट कमांड में, पैरामीटर के तौर पर सिर्फ़ सेल्सियस में तापमान की जानकारी दी जा सकती है. हालांकि, Google Nest Thermostat पर तापमान की जानकारी सेल्सियस या फ़ैरनहाइट में दिखाई जा सकती है.
उदाहरण के लिए, जब थर्मोस्टैट HEAT मोड में हो, तब तापमान सेटपॉइंट बदलने के लिए, ThermostatTemperatureSetpoint ट्रेट के SetHeat कमांड का इस्तेमाल करें:
अनुरोध
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}
जवाब
{}
ईको मोड के सेटपॉइंट
ThermostatEco ट्रेट से मिले heatCelsius और coolCelsius सेटपॉइंट, उपयोगकर्ता सेट करता है. इन्हें SDM API के ज़रिए बदला नहीं जा सकता.
पंखा चालू या बंद करना
अगर थर्मोस्टैट में पंखे की सुविधा है, तो उसे चालू या बंद करने के लिए, पंखे की सुविधा के SetTimer निर्देश का इस्तेमाल करें. चालू करते समय, यह तय किया जा सकता है कि पंखा कितने सेकंड तक चलेगा.
उदाहरण के लिए, एक घंटे के लिए पंखा चलाने के लिए:
अनुरोध
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.Fan.SetTimer",
  "params" : {
    "timerMode" : "ON",
    "duration" : "3600s"
  }
}
जवाब
{}
अगर duration फ़ील्ड को शामिल नहीं किया जाता है, तो पंखा डिफ़ॉल्ट रूप से 15 मिनट तक चलेगा.
डिवाइस के कनेक्ट होने की स्थिति देखना
अगर डिवाइस, निर्देशों का जवाब नहीं दे रहा है या इवेंट नहीं भेज रहा है या आपको डिवाइस से जुड़े एपीआई से गड़बड़ियां मिल रही हैं, तोकनेक्टिविटी ट्रेट का इस्तेमाल करके, डिवाइस के ऑफ़लाइन होने की स्थिति में उसकी कनेक्टिविटी की जांच करें. डिवाइस के इंटरनेट कनेक्शन की जांच करें. साथ ही, पक्का करें कि Nest सेवा चालू हो.
अगर आपने इवेंट चालू किए हैं, तो आपको संसाधन इवेंट भी मिला होगा. इससे पता चलता है कि डिवाइस ऑफ़लाइन हो गया है:
पेलोड
{
  "eventId" : "e909ba38-281f-41f4-8f32-e926f5fd7713",
  "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"
  ]
}डिवाइस के इवेंट पर प्रतिक्रिया देना
किसी भी ट्रेट फ़ील्ड में बदलाव होने पर, एक इवेंट जनरेट होता है.
 उदाहरण के लिए, अगर थर्मोस्टैट के एचवीएसी का स्टेटस बदलकर HEATING हो जाता है, तो आपको यह resourceUpdate इवेंट मिलेगा:
पेलोड
{
  "eventId" : "ff02d705-d650-4172-878f-5d9e2e67850e",
  "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"
  ]
}इस डिवाइस टाइप से जुड़ी सभी विशेषताओं के लिए इवेंट ट्रिगर किए जाते हैं. अगर आपको इंटिग्रेशन के हिस्से के तौर पर, किसी इवेंट पर कोई कार्रवाई करनी है, तो इवेंट चालू करें.
इवेंट का समय
ध्यान दें कि एचवीएसी की स्थिति में बदलाव से जुड़ा इवेंट, थर्मोस्टैट मोड में बदलाव से जुड़े इवेंट के साथ डिलीवर नहीं किया जा सकता.
उदाहरण के लिए, एचवीएसी सिस्टम को सुरक्षित रखने के लिए, कभी-कभी थर्मोस्टैट के हीटिंग या कूलिंग मोड को चालू होने में देरी होती है. इस स्थिति में, थर्मोस्टैट का मोड बदलने पर, शुरू में सिर्फ़ ThermostatMode और ThermostatTemperatureSetpoint ट्रेट में हुए बदलावों के इवेंट भेजे जा सकते हैं. साथ ही, सिस्टम के चालू होने के बाद, ThermostatHvac ट्रेट में हुए बदलाव का इवेंट अलग से भेजा जाएगा. अगर एचवीएसी सिस्टम को चालू करने में कोई देरी नहीं हुई, तो तीनों इवेंट एक ही समय पर भेजे जाएंगे.
गड़बड़ियां
इस डिवाइस से जुड़ी ये गड़बड़ियां हो सकती हैं:
| गड़बड़ी का मैसेज | RPC | समस्या का हल | 
|---|---|---|
| कूल वैल्यू, हीट वैल्यू से ज़्यादा होनी चाहिए. | INVALID_ARGUMENT | 
    पक्का करें कि आपके निर्देश में heatCelsius           फ़ील्ड की वैल्यू, coolCelsius फ़ील्ड की वैल्यू से कम हो. | 
  
| थर्मोस्टैट के मौजूदा मोड में, इस कमांड का इस्तेमाल नहीं किया जा सकता. | FAILED_PRECONDITION | 
    ThermostatMode trait के मुताबिक, थर्मोस्टैट के बंद होने पर, कुछ थर्मोस्टैट मॉडल में ईको मोड को नहीं बदला जा सकता. ईको मोड बदलने से पहले, थर्मोस्टैट का मोड बदलकर HEAT, COOL या HEATCOOL पर सेट करना ज़रूरी है. | 
| थर्मोस्टैट का फ़ैन उपलब्ध नहीं है. | FAILED_PRECONDITION | 
    थर्मोस्टैट में फ़ैन की सुविधा नहीं है. इस डिवाइस के लिए, पंखे से जुड़ी विशेषताएँ और निर्देश इस्तेमाल नहीं किए जा सकते. | 
| थर्मोस्टैट के MANUAL_ECO मोड में होने पर, इस कमांड का इस्तेमाल नहीं किया जा सकता. | FAILED_PRECONDITION | 
    थर्मोस्टैट के मैन्युअल ईको मोड में होने पर, तापमान सेटपॉइंट सेट नहीं किया जा सकता. | 
एपीआई वाली गड़बड़ियों के कोड की पूरी सूची देखने के लिए, एपीआई वाली गड़बड़ियों के कोड का रेफ़रंस देखें.