שימוש ב-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 קודי השגיאה מופיעה בחומר העזר בנושא קוד שגיאה.