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

THERMOSTAT

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" : {}
  }'

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

THERMOSTAT

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

{}

מצלמה

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

שגיאות אחרות

כאן אפשר למצוא את הרשימה המלאה של קודי השגיאה של Device Access .