ترموستات

همه مدل‌های ترموستات Google Nest در API مدیریت دستگاه هوشمند (SDM) پشتیبانی می‌شوند. این دستگاه‌ها نوع دستگاه THERMOSTAT را برمی‌گردانند:

sdm.devices.types.THERMOSTAT

صفات

مرجع

صفات، دستورات یا رویدادهای زیر مربوط به این گروه است:

صفت توضیحات دستورات
قابلیت اتصال این ویژگی متعلق به هر دستگاهی است که اطلاعات اتصال را داشته باشد.
فن این ویژگی متعلق به هر دستگاهی است که توانایی سیستم کنترل فن را داشته باشد. SetTimer
رطوبت این ویژگی متعلق به هر دستگاهی است که دارای سنسور اندازه گیری رطوبت باشد.
اطلاعات این ویژگی به هر وسیله ای برای اطلاعات مربوط به دستگاه تعلق دارد.
تنظیمات این ویژگی به هر دستگاهی برای اطلاعات تنظیمات مربوط به دستگاه تعلق دارد.
دما این ویژگی متعلق به هر دستگاهی است که دارای سنسور اندازه گیری دما باشد.
ترموستات اکو این ویژگی متعلق به انواع دستگاه ترموستات است که از حالت های ECO پشتیبانی می کند. SetMode
ترموستات Hvac این ویژگی متعلق به انواع دستگاه ترموستات است که می تواند جزئیات HVAC را گزارش کند.
حالت ترموستات این ویژگی متعلق به انواع دستگاه ترموستات است که از حالت های مختلف ترموستات پشتیبانی می کند. SetMode
ترموستاتTemperatureSetpoint این ویژگی متعلق به انواع دستگاه ترموستات است که از تنظیم دمای هدف و محدوده دما پشتیبانی می کند. تنظیم گرما
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 می تواند دما را در درجه سانتیگراد یا فارنهایت نمایش دهد، اما مقیاس را نمی توان با SDM API تنظیم کرد. برای تعیین مقیاس دمایی که در حال حاضر توسط کاربر تنظیم شده است، ازتنظیمات صفت

حالت را تغییر دهید

حالت ترموستات توسط دو ویژگی مختلف مدیریت می شود:حالت ترموستات وترموستات اکو.

حالت های استاندارد

برای تغییر حالت ترموستات به HEAT، COOL یا HEATCOOL، از دستور SetMode از ویژگی ThermostatMode استفاده کنید.

از این دستور می توان برای خاموش کردن حالت ترموستات نیز استفاده کرد. نمی توان از آن برای روشن کردن حالت Eco استفاده کرد.

به عنوان مثال، برای تغییر یکی از حالت های استاندارد ترموستات:

درخواست کنید

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatMode.SetMode",
  "params" : {
    "mode" : "HEAT"
  }
}

پاسخ

{}

حالت اکو

برای روشن کردن حالت Eco، از MANUAL_ECO به عنوان حالت با دستور SetMode از ویژگی ThermostatEco استفاده کنید:

درخواست کنید

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatEco.SetMode",
  "params" : {
    "mode" : "MANUAL_ECO"
  }
}

پاسخ

{}

این دستور بر روی سایر ویژگی‌ها، بر اساس وضعیت فعلی یا تغییر در حالت Eco، تأثیر می‌گذارد:

  • اگر حالت Eco خاموش باشد، حالت ترموستات به آخرین حالت استاندارد (HEAT، COOL، HEATCOOL یا OFF) که فعال بوده است، پیش‌فرض می‌شود.
  • اگر حالت Eco MANUAL_ECO است:

تنظیمات دما را تغییر دهید

نقطه تنظیم دما را فقط زمانی می توان تغییر داد که ترموستات در حالت HEAT، COOL، یا HEATCOOL باشد و نقاط تنظیم مجاز مطابق با حالت فعلی ترموستات باشد. هنگامی که حالت خاموش است یا هنگامی که حالت Eco روی MANUAL_ECO تنظیم شده است، نقاط تنظیم دما را نمی توان تغییر داد.

ترموستات باید در حالتی باشد که با فرمانی که قبل از تغییر تنظیمات دما فراخوانی می شود مطابقت دارد. فرمان و فیلد(های) تغییر نقطه(های) تنظیم بر اساس حالت ترموستات متفاوت است.

به عنوان مثال، برای صدور دستور SetHeat، ابتدا ترموستات باید در حالت HEAT باشد:

حالت فرمان زمینه(های)
گرما تنظیم گرما heatCelsius
باحال SetCool coolCelsius
HEATCOOL SetRange heatCelsius ، coolCelsius

توجه داشته باشید که دستورات نقطه تنظیم فقط درجه سانتیگراد را به عنوان پارامتر در نظر می گیرند، اگرچه ترموستات Google Nest می تواند دما را در درجه سانتیگراد یا فارنهایت نمایش دهد.

به عنوان مثال، برای تغییر نقطه تنظیم دما هنگامی که ترموستات در حالت HEAT است، از دستور 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 از ویژگی Fan برای روشن یا خاموش کردن آن استفاده کنید. هنگام روشن کردن، می‌توانید مدت زمانی را که می‌خواهید فن کار کند، بر حسب ثانیه مشخص کنید.

به عنوان مثال، برای روشن کردن فن به مدت یک ساعت:

درخواست کنید

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.Fan.SetTimer",
  "params" : {
    "timerMode" : "ON",
    "duration" : "3600s"
  }
}

پاسخ

{}

اگر قسمت duration حذف شود، فن برای مدت زمان پیش فرض 15 دقیقه کار می کند.

اتصال دستگاه را بررسی کنید

اگر دستگاه به دستورات یا رویدادها پاسخ نمی‌دهد، یا خطاهایی از API مربوط به دستگاه دریافت می‌کنید، ازقابلیت اتصال ویژگی بررسی اتصال دستگاه برای وضعیت آفلاین. اتصال دستگاه به اینترنت را بررسی کنید و مطمئن شوید که Nest Service فعال است.

اگر رویدادها را فعال کرده‌اید، باید یک رویداد منبع نیز دریافت کرده باشید که نشان می‌دهد دستگاه آفلاین شده است:

بار

{
  "eventId" : "9cd3ae0d-1fbf-4c16-9ddc-7e15f1123f32",
  "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 زیر را دریافت خواهید کرد:

بار

{
  "eventId" : "d903cad8-0175-4951-980b-57e728b302b2",
  "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 وجود دارد. در این سناریو، تغییر حالت ترموستات ممکن است فقط در ابتدا رویدادهایی را برای آن ارسال کند حالت ترموستات و ترموستاتTemperatureSetpoint تغییر صفت، با ترموستات Hvac هنگامی که سیستم واقعاً روشن شد، تغییر صفت بعداً به عنوان یک رویداد جداگانه ارسال می شود. اگر تاخیری در روشن کردن سیستم HVAC وجود نداشت، هر سه رویداد همزمان ارسال می‌شدند.

خطاها

ممکن است کد(های) خطای زیر در رابطه با این دستگاه برگردانده شود:

پیغام خطا RPC عیب یابی
مقدار خنک کننده باید بیشتر از مقدار حرارت باشد. INVALID_ARGUMENT مطمئن شوید که فیلد heatCelsius کمتر از قسمت coolCelsius در دستور شما باشد.
فرمان در حالت ترموستات فعلی مجاز نیست. FAILED_PRECONDITION با توجه به حالت ترموستات صفت قبل از تغییر حالت Eco، حالت ترموستات باید به HEAT، COOL یا HEATCOOL تغییر یابد.
فن ترموستات در دسترس نیست. FAILED_PRECONDITION ترموستات قابلیت فن ندارد. برای این دستگاه نمی توان از ویژگی ها و دستورات مربوط به فن استفاده کرد.
هنگام ترموستات در حالت MANUAL_ECO، فرمان مجاز نیست. FAILED_PRECONDITION زمانی که ترموستات در حالت Eco دستی است، نقطه تنظیم دما را نمی توان تنظیم کرد.

برای لیست کامل کدهای خطای API به مرجع کد خطای API مراجعه کنید.