स्मार्ट होम सिक्योरिटी सिस्टम गाइड

action.devices.types.SECURITYSYSTEM - सुरक्षा सिस्टम को चालू और बंद किया जा सकता है. इन्हें सुरक्षा के कई लेवल पर चालू किया जा सकता है. जैसे, घर पर और बाहर. ये कुछ सेंसर के बारे में जानकारी दे सकते हैं. जैसे, मोशन का पता लगाने वाला सेंसर या खुली हुई खिड़की का सेंसर.

इस टाइप से पता चलता है कि डिवाइस को सुरक्षा सिस्टम का आइकॉन और इससे जुड़े कुछ समानार्थी शब्द और उपनाम मिलते हैं.

डिवाइस की क्षमताएं

लागू करने से जुड़ी जानकारी के लिए, संबंधित ट्रेट का दस्तावेज़ देखें. जैसे, आपकी सेवा को किन एट्रिब्यूट और स्थितियों के साथ काम करना चाहिए और EXECUTE और QUERY के जवाब कैसे बनाने चाहिए.

ज़रूरी ट्रेट

अगर ये आपके डिवाइस पर लागू होती हैं, तो इन ट्रेट और कमांड का इस्तेमाल करना ज़रूरी है. अगर आपके डिवाइस पर ये सुविधाएं काम नहीं करती हैं, तो QUERY या EXECUTE रिस्पॉन्स में functionNotSupported का गड़बड़ी कोड डालें. ज़्यादा जानकारी के लिए, गड़बड़ियां और अपवाद देखें.

अगर ये सुविधाएं आपके डिवाइस पर काम करती हैं, तो हम इन्हें इस्तेमाल करने का सुझाव देते हैं. हालांकि, आपके पास मौजूदा प्रॉडक्ट की सुविधाओं से सबसे ज़्यादा मेल खाने वाली सभी उपलब्ध विशेषताओं को मिलाकर इस्तेमाल करने का विकल्प होता है.

डिवाइस का उदाहरण: सामान्य सुरक्षा सिस्टम

इस सेक्शन में, डिवाइस टाइप और ऊपर दी गई विशेषताओं के आधार पर, "सुरक्षा सिस्टम" के सामान्य इंटेंट पेलोड के उदाहरण दिए गए हैं. अगर आपने अपने इंटिग्रेशन में कोई नई विशेषता जोड़ी है या किसी विशेषता को हटाया है, तो उन बदलावों को दिखाने के लिए, अपनी प्रतिक्रियाओं में बदलाव करें.

सिंक के जवाब का उदाहरण

अनुरोध करें
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
Response
{
  "requestId": "6894439706274654512",
  "payload": {
    "agentUserId": "user123",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.SECURITYSYSTEM",
        "traits": [
          "action.devices.traits.StatusReport",
          "action.devices.traits.ArmDisarm"
        ],
        "name": {
          "name": "Simple security system"
        },
        "willReportState": true,
        "attributes": {
          "availableArmLevels": {
            "levels": [
              {
                "level_name": "home_key",
                "level_values": [
                  {
                    "level_synonym": [
                      "Home and Guarding",
                      "level 1",
                      "home",
                      "SL1"
                    ],
                    "lang": "en"
                  }
                ]
              },
              {
                "level_name": "away_key",
                "level_values": [
                  {
                    "level_synonym": [
                      "Away and Guarding",
                      "level 2",
                      "away",
                      "SL2"
                    ],
                    "lang": "en"
                  }
                ]
              }
            ],
            "ordered": true
          }
        },
        "deviceInfo": {
          "manufacturer": "smart-home-inc",
          "model": "hs1234",
          "hwVersion": "3.2",
          "swVersion": "11.4"
        }
      }
    ]
  }
}

क्वेरी के जवाब का उदाहरण

अनुरोध करें
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
Response
{
  "requestId": "6894439706274654514",
  "payload": {
    "devices": {
      "123": {
        "status": "SUCCESS",
        "online": true,
        "isArmed": true,
        "currentArmLevel": "home_key",
        "currentStatusReport": [
          {
            "blocking": false,
            "deviceTarget": "123",
            "priority": 0,
            "statusCode": "lowBattery"
          }
        ]
      }
    }
  }
}

EXECUTE कमांड के उदाहरण

ArmDisarm

कमांड पैरामीटर के बारे में ज़्यादा जानने के लिए, action.devices.traits.ArmDisarm रेफ़रंस देखें.

अनुरोध
{
  "requestId": "6894439706274654516",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ArmDisarm",
                "params": {
                  "arm": true,
                  "armLevel": "away_key"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
Response
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "PENDING",
        "states": {
          "online": true,
          "isArmed": true,
          "currentArmLevel": "away_key"
        }
      }
    ]
  }
}

डिवाइस से जुड़ी गड़बड़ियां

गड़बड़ियों और अपवादों की पूरी सूची देखें.

हथियार चलाने की अनुमति से जुड़ी गड़बड़ियों की शिकायत करना

सिस्टम को चालू या बंद करने की कोशिश करते समय, अपवाद कोड के ज़रिए ज़्यादा जानकारी दी जा सकती है. इन कोड की जानकारी StatusReport ट्रेट के ज़रिए दी जाती है. अपवादों की शिकायत, ब्लॉक करने वाली या ब्लॉक न करने वाली समस्याओं के तौर पर की जा सकती है.

  • "SUCCESS" स्टेटस के साथ रिपोर्ट किए गए नॉन-ब्लॉकिंग अपवादों से पता चलता है कि अपवाद की वजह से, आर्म या डिसआर्म करने की प्रोसेस नहीं रुकी.
  • "EXCEPTIONS" स्टेटस के साथ रिपोर्ट किए गए ब्लॉक करने से जुड़े अपवाद से पता चलता है कि इन अपवादों की वजह से, आर्मिंग या डिसआर्मिंग की प्रोसेस रोक दी गई थी.

सुरक्षा सिस्टम से जुड़े सामान्य अपवाद कोड में ये शामिल हैं:

  • doorOpen: कोई दरवाज़ा खुला है.
  • windowOpen: एक विंडो खुली है.
  • isOpen: सेंसर को पता चलता है कि कुछ खुला है. हालांकि, उसे यह नहीं पता कि वह दरवाज़ा है या खिड़की.

उदाहरण: नॉन-ब्लॉकिंग अपवाद

इस उदाहरण में, बिना किसी रुकावट के काम करने वाली एक ऐसी गड़बड़ी दिखाई गई है जिसमें सुरक्षा सिस्टम चालू है. ऐसा तब होता है, जब किसी विंडो के खुले होने की सूचना दी जाती है.

उपयोगकर्ता सुरक्षा सिस्टम को हाई सिक्योरिटी पर सेट करें.
Google Assistant ठीक है, सामने की खिड़की खुली है. सुरक्षा सिस्टम को हाई सिक्योरिटी पर चालू कर रही हूँ.
अनुरोध करें
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [{
          "devices": [{
            "id": "123"
          }],
          "execution": [{
            "command": "action.devices.commands.ArmDisarm",
            "params": {
              "arm": true,
              "armLevel": "L2"
            }
          }]
        }]
      }
    }]
  }
Response
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "SUCCESS",
          "states": {
            "online": true,
            "isArmed": true,
            "currentArmLevel": "L2",
            "currentStatusReport": [
              {
                "blocking": false,
                "priority": 0,
                "statusCode": "windowOpen",
                "deviceTarget": "sensor_id1"
              }
            ]
          }
        }
      ]
    }
  }

उदाहरण: ब्लॉक करने से जुड़ी छूट

उपयोगकर्ता सुरक्षा सिस्टम को हाई सिक्योरिटी पर सेट करें.
Google Assistant सुरक्षा सिस्टम को कंट्रोल करने में कोई गड़बड़ी हुई. सामने की खिड़की खुली है.
अनुरोध करें
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [{
          "devices": [{
            "id": "123"
          }],
          "execution": [{
            "command": "action.devices.commands.ArmDisarm",
            "params": {
              "arm": true,
              "armLevel": "L2"
            }
          }]
        }]
      }
    }]
  }
जवाब 2
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "EXCEPTIONS",
          "states": {
            "online": true,
            "isArmed": false,
            "currentArmLevel": "L2",
            "currentStatusReport": [
              {
                "blocking": true,
                "priority": 0,
                "statusCode": "windowOpen",
                "deviceTarget": "sensor_id1"
              }
            ]
          }
        }
      ]
    }
  }

दो तरीकों से पुष्टि करने की सुविधा चालू करना

अगर आर्मिंग फ़्लो के लिए, लोगों को दो तरीकों से पुष्टि वाले डायलॉग के ज़रिए पिन डालना पड़ता है, तो आपको यह पुष्टि करनी होगी कि क्या वे सिस्टम को आर्म करना जारी रखना चाहते हैं, जबकि चालू अपवाद मौजूद हैं. उदाहरण के लिए, जब कोई खिड़की या दरवाज़ा खुला हो.

इस स्थिति में, आपको पिन या पासफ़्रेज़ डालना पड़ सकता है. इसके बाद, आपको इसकी पुष्टि करनी होगी.

उदाहरण: स्वीकार किए जाने से जुड़ी चुनौती

इस उदाहरण में, एक उपयोगकर्ता को सुरक्षा सिस्टम चालू करने की कोशिश करते हुए दिखाया गया है. हालांकि, इसमें सामने का दरवाज़ा खुला हुआ दिखता है. उपयोगकर्ता इस बात को स्वीकार करता है कि सामने का दरवाज़ा खुला होने पर भी सुरक्षा सिस्टम चालू रहना चाहिए.

उपयोगकर्ता सुरक्षा सिस्टम को चालू करो.
Google Assistant सामने का दरवाज़ा खुला है। क्या आपको वाकई सुरक्षा सिस्टम को चालू करना है?
उपयोगकर्ता हां.
Google Assistant ठीक है, सुरक्षा सिस्टम चालू किया जा रहा है.

पहले टर्न में, आपको ackNeeded चुनौती के साथ जवाब देना चाहिए.

Request 1
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [{
          "devices": [{
            "id": "123"
          }],
          "execution": [{
            "command": "action.devices.commands.ArmDisarm",
            "params": {
              "arm": true
            }
          }]
        }]
      }
    }]
  }
जवाब 2
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "ERROR",
          "errorCode": "challengeNeeded",
          "challengeNeeded": {
            "type": "ackNeeded"
          },
          "states": {
            "isArmed": true,
            "currentArmLevel": "L2",
            "currentStatusReport": [
              {
                "blocking": false,
                "priority": 0,
                "statusCode": "doorOpen",
                "deviceTarget": "456"
              }
            ]
          }
        }
      ]
    }
  }

इसके बाद, Google से आपको मिलने वाले अनुरोध में ack का नतीजा शामिल होगा.

Request 2
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [{
          "devices": [{
            "id": "123"
          }],
          "execution": [{
            "command": "action.devices.commands.ArmDisarm",
            "params": {
              "arm": true
            },
            "challenge": {
              "ack": true
            }
          }]
        }]
      }
    }]
  }
Response
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "SUCCESS",
          "states": {
            "isArmed": true
          }
        }
      ]
    }
  }

उदाहरण: पिन और पुष्टि करने की चुनौती

इस उदाहरण में, एक ऐसे उपयोगकर्ता को दिखाया गया है जो सुरक्षा सिस्टम को चालू करने की कोशिश कर रहा है. इसके लिए, पिन डालना ज़रूरी है. सिस्टम को पता चलता है कि सामने और पीछे की खिड़कियां खुली हैं. इसलिए, वह उपयोगकर्ता से पुष्टि करने के लिए कहता है कि अलार्म चालू किया जाना चाहिए.

उपयोगकर्ता 'अभी खुला नहीं है' मोड पर सेट करो.
Google Assistant आपका पिन क्या है?
उपयोगकर्ता 1234.
Google Assistant ऐसा लगता है कि आगे और पीछे की खिड़की खुली है. क्या आपको वाकई सुरक्षा सिस्टम को 'घर से बाहर' मोड पर सेट करना है?
उपयोगकर्ता हां.
Google Assistant ठीक है, सुरक्षा सिस्टम को चालू किया जा रहा है

पहले टर्न में, आपको स्टैंडर्ड pinNeeded चुनौती के साथ जवाब देना चाहिए.

Request 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.ArmDisarm",
          "params": {
            "arm": true
          }
        }]
      }]
    }
  }]
}
Response
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["456"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

इसके बाद, Google आपको दिए गए पिन के साथ एक अनुरोध भेजता है. दूसरी बारी में मदद पाने के लिए, आपको ackNeeded चुनौती देनी होगी. इसमें टारगेट आर्म लेवल और मौजूदा स्टेटस रिपोर्ट के साथ-साथ, ब्लॉक करने से जुड़ी अपवादों की जानकारी भी शामिल होनी चाहिए.

Request 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [...],
        "execution": [{
          "command": "action.devices.commands.ArmDisarm",
          "params": {
            "arm": true,
            "armLevel": "away"
          },
          "challenge": {
            "pin": "1234"
          }
        }]
      }]
    }
  }]
}
Response
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["456"],
      "status": "ERROR",
      "states": {
        "targetArmLevel": "away",
        "currentStatusReport": [{
            "blocking": true,
            "priority": 1,
            "deviceTarget": "front_window_id",
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "priority": 1,
            "deviceTarget": "back_window_id",
            "statusCode": "deviceOpen"
          }
        ]
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}

Google की ओर से किए गए अगले अनुरोध में, सिर्फ़ ack नतीजा होगा. इसमें पहले राउंड में दिया गया पिन नहीं होगा.

Request 3
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [...],
        "execution": [{
          "command": "action.devices.commands.ArmDisarm",
          "params": {
            "arm": true,
            "armLevel": "away"
          },
          "challenge": {
            "ack": true
          }
        }]
      }]
    }
  }]
}
Response
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "isArmed": true
        }
      }
    ]
  }
}