כל הדגמים של 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:
- הפקודות עבור המאפיין ThermostatTemperatureSetpoint נדחות.
- טמפרטורות היעד לא מוחזרות על ידי מאפיין ThermostatTemperatureSetpoint .
שינוי הטמפרטורה לשמירה
אפשר לשנות את הטמפרטורות לשמירה רק כשהתרמוסטט במצב 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 מפורטת בדף קודי השגיאה.