שימוש ב-API

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

הצגת רשימה של מבנים ומכשירים

אפשר להשתמש ב-curl כדי לבצע שיחת GET פשוטה לנקודת הקצה structures:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

קריאה מוצלחת מחזירה רשימה של מבנים עבור חשבונות שמקושרים לפרויקטDevice Access שלכם:

{
  "structures": [
    {
      "name": "enterprises/project-id/structures/structure-id",
      "traits": {
        "sdm.structures.traits.Info": {
          "customName": "structure-name"
        }
      }
    }
  ]
}

אם עדיין לא עשיתם זאת, יש לבצע קריאת GET לנקודת הקצה devices כדי לקבל רשימה של מכשירים:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

שיחה מוצלחת מחזירה רשימה של מכשירים שמקושרים לפרויקט Device Accessשלכם. לכל מכשיר יש רשימה ייחודית של תכונות זמינות:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

מעתיקים את device-id לכל מכשיר, אבל אפשר להשתמש בו כדי לבצע קריאות ל-API אחרות.

קבלת מידע על מכשיר

כדי לקבל מידע ממכשיר ספציפי, יש לבצע קריאת GET לנקודת הקצה device-id.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

התשובה צריכה להיות דומה לזו הקודמת, אבל רק למכשיר הספציפי:

{
  "name": "enterprises/project-id/devices/device-id",
  "type": "sdm.devices.types.device-type",
  "traits": { ... },
  "parentRelations": [
    {
      "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
      "displayName": "device-room-name"
    }
  ]
}

ביצוע פקודה

אחרי שמאמתים את הגישה באמצעות קריאת GET מוצלחת, מנסים להפעיל פקודה בהתאם לסוג המכשיר שאישרתם:

תרמוסטט

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.ThermostatMode.SetMode",
    "params" : {
      "mode" : "HEAT"
    }
  }'

מצלמה

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
    "params" : {}
  }'

אם השיחה תסתיים בהצלחה, יתקבלו התוצאות הבאות:

תרמוסטט

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

{}

מצלמה

תקבלו כתובת URL לשידור חי ואסימונים קשורים.

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

פתרון בעיות

לא מאומת

אסימוני הגישה של SDM API תקפים למשך שעה אחת בלבד. אם קיבלתם תגובה לא מאומתת, סביר להניח שתוקף האסימון פג. אסימון הרענון מאפשר לקבל אסימון גישה חדש.

שגיאות אחרות

רשימה מלאה של Device Access קודי השגיאות מופיעה בחומר העזר בנושא קודי שגיאה.