מדריך לתרמוסטט לבית החכם

action.devices.types.THERMOSTAT – תרמוסטטים הם מכשירים לניהול הטמפרטורה, עם נקודות ומצבים מוגדרים. הפעולה הזו מפרידה ביניהם לבין תנורי חימום ויחידות מיזוג אוויר, שעשויים לכלול רק מצבים והגדרות (לדוגמה, גבוהה/נמוכה) לעומת יעד טמפרטורה.

הסוג הזה מציין שהמכשיר מקבל את סמל התרמוסטט וגם כמה מילים נרדפות וכינויים קשורים.

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

יכולות המכשיר

עיינו בתיעוד של ה-trait כדי לקבל את פרטי ההטמעה, כמו מאפיינים ומצבים שהשירות צריך לתמוך בהם, ואיך ליצור תשובות EXECUTE ו-QUERY.

ה-traits הנדרשות

התכונות והפקודות האלה נדרשות, אם זה רלוונטי למכשיר שלכם. אם המכשיר שלך לא תומך בתכונות האלה, יש להזין את קוד השגיאה functionNotSupported בתגובה מסוג QUERY או EXECUTE. מידע נוסף זמין בקטע שגיאות וחריגים.

לעיתים קרובות פקודות התרמוסטט כרוכות בשרשרת באובייקטים מסוג EXECUTE Intent. אם משתמש אומר *הגדרת החימום ל-72*, הוא יפיק פקודת מצב ולאחר מכן תקבע את הטמפרטורה הרצויה.

דרישות איכות

  • זמן אחזור: חייב להיות קצר מ-700 אלפיות שנייה או שווה לו.
  • אמינות: צריכה להיות 97% ומעלה.

מכשיר לדוגמה: תרמוסטט פשוט

בקטע הזה יש דוגמאות של מטענים ייעודיים (payloads) של Intent שמייצגים 'תרמוסטט' נפוץ על סמך סוג המכשיר והתכונות שצוינו למעלה. אם מוסיפים או מסירים traits בהטמעה, צריך לשנות את התגובות בהתאם כדי לשקף את השינויים.

תגובת SYNC לדוגמה

בקשה
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
תשובה
{
  "requestId": "6894439706274654512",
  "payload": {
    "agentUserId": "user123",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.THERMOSTAT",
        "traits": [
          "action.devices.traits.TemperatureSetting"
        ],
        "name": {
          "name": "Simple thermostat"
        },
        "willReportState": true,
        "attributes": {
          "availableThermostatModes": [
            "off",
            "heat",
            "cool",
            "heatcool",
            "on"
          ],
          "thermostatTemperatureRange": {
            "minThresholdCelsius": 15,
            "maxThresholdCelsius": 30
          },
          "thermostatTemperatureUnit": "F"
        },
        "deviceInfo": {
          "manufacturer": "smart-home-inc",
          "model": "hs1234",
          "hwVersion": "3.2",
          "swVersion": "11.4"
        }
      }
    ]
  }
}

דוגמה לתשובה מסוג QUERY

בקשה
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
תשובה
{
  "requestId": "6894439706274654514",
  "payload": {
    "devices": {
      "123": {
        "status": "SUCCESS",
        "online": true,
        "thermostatMode": "cool",
        "thermostatTemperatureSetpoint": 23,
        "thermostatTemperatureAmbient": 25.1,
        "thermostatHumidityAmbient": 45.3
      }
    }
  }
}

פקודות EXECUTE לדוגמה

תרמוסטט טמפרטורה

פרטים נוספים על הפרמטרים של הפקודות זמינים בחומר העזר בנושא action.devices.traits.TemperatureSetting.

בקשה
{
  "requestId": "6894439706274654516",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatTemperatureSetpoint",
                "params": {
                  "thermostatTemperatureSetpoint": 22
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
תשובה
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "cool",
          "thermostatTemperatureSetpoint": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

ThermostatTemperatureSetRange

פרטים נוספים על הפרמטרים של הפקודות זמינים בחומר העזר בנושא action.devices.traits.TemperatureSetting.

בקשה
{
  "requestId": "6894439706274654518",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatTemperatureSetRange",
                "params": {
                  "thermostatTemperatureSetpointHigh": 26,
                  "thermostatTemperatureSetpointLow": 22
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
תשובה
{
  "requestId": "6894439706274654518",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "heatcool",
          "thermostatTemperatureSetpointHigh": 26,
          "thermostatTemperatureSetpointLow": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

תרמוסטטSetMode

פרטים נוספים על הפרמטרים של הפקודות זמינים בחומר העזר בנושא action.devices.traits.TemperatureSetting.

בקשה
{
  "requestId": "6894439706274654520",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ThermostatSetMode",
                "params": {
                  "thermostatMode": "heatcool"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
תשובה
{
  "requestId": "6894439706274654520",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "thermostatMode": "heatcool",
          "thermostatTemperatureSetpointHigh": 26,
          "thermostatTemperatureSetpointLow": 22,
          "thermostatTemperatureAmbient": 25.1
        }
      }
    ]
  }
}

מכשיר ERRORS

כדאי לעיין ברשימה המלאה של שגיאות וחריגים.
  • inHeatOrCool – הפקודות של חימום/קירור/טווח נכשלו כי המכשיר נמצא בחימום או קירור מפורשים.
  • inHeatCool – פקודות החימום או הקירור נכשלו כי המכשיר חם או קירור.
  • lockedToRange - המכשיר נעול לטווח או למצב טמפרטורות, ולא ניתן לבצע את השינוי המבוקש.
  • rangeTooClose - נקודות הטמפרטורה בטווח קירור החימום קרובות מדי זו לזו.