תרמוסטט

כל הדגמים של Google Nest Thermostat נתמכים ב-Smart Device Management (SDM) API. המכשירים האלה מחזירים את סוג המכשיר THERMOSTAT:

sdm.devices.types.THERMOSTAT

תכונות

חומרי עזר

התכונות, הפקודות או האירועים הבאים קשורים לקבוצה הזו:

מאפייןתיאורפקודות
קישוריותהמאפיין הזה שייך לכל מכשיר שיש בו פרטי קישוריות.
Fanהמאפיין הזה נמצא בכל מכשיר שיש בו אפשרות לשלוט במאוורר.SetTimer
לחותהמאפיין הזה שייך לכל מכשיר שיש בו חיישן למדידת לחות.
פרטיםהמאפיין הזה שייך לכל מכשיר שמספק מידע שקשור למכשיר.
הגדרותהמאפיין הזה שייך לכל מכשיר שמספק מידע על הגדרות שקשורות למכשיר.
טמפרטורההמאפיין הזה נמצא בכל מכשיר שיש בו חיישן למדידת טמפרטורה.
ThermostatEcoהמאפיין הזה שייך לסוגי מכשירים של THERMOSTAT שתומכים במצבי ECO.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
    }
  }
}

טמפרטורה ולחות

כדי לקרוא את טמפרטורת החדר של התרמוסטט, משתמשים במאפיין Temperature . טמפרטורת הסביבה נמדדת במכשיר.

כדי לקרוא את הלחות הסביבתית של התרמוסטט, משתמשים במאפייןHumidity . הלחות בסביבה נמדדת במכשיר.

יחידות טמפרטורה

ב-Google Nest Thermostat אפשר להציג את הטמפרטורה במעלות צלזיוס או פרנהייט, אבל אי אפשר להגדיר את הסולם באמצעות SDM API. כדי לקבוע את סולם הטמפרטורה שהמשתמש הגדיר כרגע, משתמשים במאפייןSettings .

שינוי המצב

המצב של התרמוסטט מנוהל על ידי שתי תכונות שונות: ThermostatMode ו- ThermostatEco.

מצבים רגילים

כדי לשנות את מצב התרמוסטט לחימום, קירור או חימום וקירור, משתמשים בפקודה 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:

שינוי הטמפרטורה לשמירה

אפשר לשנות את הטמפרטורות לשמירה רק כשהתרמוסטט במצב HEAT (חימום), COOL (קירור) או HEATCOOL (חימום וקירור), והטמפרטורות לשמירה שניתן להגדיר תואמות למצב הנוכחי של התרמוסטט. אי אפשר לשנות את נקודות ההגדרה של הטמפרטורה כשהמצב הוא OFF או כשהמצב Eco מוגדר ל-MANUAL_ECO.

התרמוסטט צריך להיות במצב שמתאים לפקודה שמופעלת לפני שינוי הטמפרטורות לשמירה. הפקודה והשדות לשינוי הטמפרטורות לשמירה משתנים בהתאם למצב התרמוסטט.

לדוגמה, כדי להוציא את הפקודה SetHeat, התרמוסטט צריך להיות קודם במצב חימום:

מצב פקודה שדות
חום SetHeat heatCelsius
COOL 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 של מאפיין המאוורר כדי להפעיל או להשבית אותו. כשמפעילים את המאוורר, אפשר לציין את משך הזמן שרוצים שהוא יפעל, בשניות.

לדוגמה, כדי להפעיל את המאוורר למשך שעה:

בקשה

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

תשובה

{}

אם לא מציינים את השדה duration, המאוורר יפעל למשך 15 דקות כברירת מחדל.

בדיקת הקישוריות של המכשיר

אם המכשיר לא מגיב לפקודות או לא שולח אירועים, או אם מתקבלות שגיאות מה-API שקשורות למכשיר, אפשר להשתמש במאפייןConnectivity כדי לבדוק את הקישוריות של המכשיר ולראות אם הסטטוס הוא OFFLINE. בודקים את החיבור של המכשיר לאינטרנט ומוודאים ששירות Nest פועל.

אם הפעלתם את האפשרות 'אירועים', אמור להתקבל גם אירוע משאב שמציין שהמכשיר עבר למצב אופליין:

מטען ייעודי

{
  "eventId" : "6ac04910-dab8-40c0-8d16-63645e9b801c",
  "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 הבא אם הסטטוס של מערכת החימום והקירור של התרמוסטט השתנה ל-HEATING:

מטען ייעודי

{
  "eventId" : "1dc5ae6d-7334-4a71-8bb1-3e50d452a322",
  "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 לא יועבר באותו זמן כמו אירועים של שינוי במצב התרמוסטט.

לדוגמה, לפעמים יש עיכוב בהפעלה של מצב החימום או הקירור בתרמוסטט כדי להגן על מערכת מיזוג האוויר. בתרחיש הזה, יכול להיות ששינוי מצב התרמוסטט ישלח בהתחלה רק אירועים של שינויים במאפיינים ThermostatMode ו- ThermostatTemperatureSetpoint , ושינוי המאפיין ThermostatHvac יישלח מאוחר יותר כאירוע נפרד אחרי שהמערכת תופעל בפועל. אם לא היה עיכוב בהפעלת מערכת בקרת האקלים, כל שלושת האירועים היו נשלחים בו-זמנית.

שגיאות

יכול להיות שהמערכת תחזיר את קודי השגיאה הבאים שקשורים למכשיר הזה:

הודעת השגיאה RPC פתרון בעיות
הערך של הקרירות חייב להיות גדול מהערך של החום. INVALID_ARGUMENT מוודאים שהערך בשדה heatCelsius קטן מהערך בשדה coolCelsius בפקודה.
אי אפשר להשתמש בפקודה במצב הנוכחי של התרמוסטט. FAILED_PRECONDITION חלק מדגמי התרמוסטטים לא תומכים בשינוי מצב החיסכון כשהתרמוסטט כבוי, בהתאם למאפיין ThermostatMode . צריך לשנות את מצב התרמוסטט לחימום, קירור או חימום וקירור לפני שמשנים את מצב החיסכון.
המאוורר של התרמוסטט לא זמין. FAILED_PRECONDITION לתרמוסטט אין אפשרות להפעלת מאוורר. אי אפשר להשתמש במכשיר הזה במאפיינים ובפקודות שקשורים למעריצים.
אי אפשר להשתמש בפקודה כשהתרמוסטט במצב MANUAL_ECO. FAILED_PRECONDITION אי אפשר להגדיר את נקודת הטמפרטורה כשהתרמוסטט נמצא במצב חיסכון ידני.

רשימה מלאה של קודי השגיאה של ה-API מפורטת בדף קודי השגיאה.