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

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

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

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

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

ज़रूरी विशेषताएं

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

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

क्वालिटी के लिए ज़रूरी शर्तें

  • इंतज़ार का समय: 2,000 मि॰से॰ या उससे कम होना चाहिए.
  • भरोसेमंद: 97% या उससे ज़्यादा होना चाहिए.

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

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

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

अनुरोध करें
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
रिस्पॉन्स
{
  "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"
        }
      }
    ]
  }
}

QUERY उत्तर का नमूना

अनुरोध करें
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
रिस्पॉन्स
{
  "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"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
रिस्पॉन्स
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "isArmed": true,
          "currentArmLevel": "away_key"
        }
      }
    ]
  }
}

डिवाइस ERRORS

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

सुरक्षा से जुड़े अपवादों की शिकायत करें

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

  • ब्लॉक नहीं किए जाने वाले अपवाद को "सफल" के तौर पर रिपोर्ट किया गया स्थिति बताती है कि हालांकि, इस अपवाद ने ऐप्लिकेशन को चालू या बंद नहीं किया.
  • ब्लॉक करने के अपवादों को "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"
            }
          }]
        }]
      }
    }]
  }
रिस्पॉन्स
{
    "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 ठीक है, CANNOT TRANSLATE सुरक्षा सिस्टम.

पहले बारी में, आपको ackNeeded चैलेंज का जवाब देना होगा.

पहला अनुरोध
{
    "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 का नतीजा शामिल होगा.

दूसरा अनुरोध
{
    "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
            }
          }]
        }]
      }
    }]
  }
रिस्पॉन्स
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "SUCCESS",
          "states": {
            "isArmed": true
          }
        }
      ]
    }
  }

उदाहरण: पिन और स्ट्राइक स्वीकार करने का चैलेंज

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

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

पहले जवाब में, आपको pinNeeded से जुड़े स्टैंडर्ड चैलेंज का जवाब देना होगा.

पहला अनुरोध
{
  "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
          }
        }]
      }]
    }
  }]
}
रिस्पॉन्स
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["456"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

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

दूसरा अनुरोध
{
  "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"
          }
        }]
      }]
    }
  }]
}
रिस्पॉन्स
{
  "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 नतीजा शामिल होगा, और पहली बारी में दिया गया पिन नहीं है.

तीसरा अनुरोध
{
  "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
          }
        }]
      }]
    }
  }]
}
रिस्पॉन्स
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "isArmed": true
        }
      }
    ]
  }
}