Akıllı Ev Güvenlik Sistemi Rehberi

action.devices.types.SECURITYSYSTEM - Güvenlik sistemleri etkinleştirilebilir ve devre dışı bırakılabilir. Bunlar birden fazla güvenlik seviyesinde (örneğin, evde ve dışarıda) etkinleştirilebilir ve hareket algılayan sensör veya açık pencere gibi belirli sensörlerle ilgili bilgileri rapor edebilir.

Bu tür, cihazın Güvenlik Sistemi simgesi ve bazı ilgili eşanlamları ve takma adlar vardır.

Cihaz özellikleri

Şu özellikler için ilgili özellik dokümanlarına bakın: hizmetinizin desteklemesi gereken özellikler ve eyaletler gibi uygulama ayrıntılarını EXECUTE ve QUERY yanıtları oluşturun.

Gerekli özellikler

Bu özellikler ve komutlar, mobil uygulama veya olanak tanır. Cihazınız bu özellikleri desteklemiyorsa Bir QUERY veya EXECUTE yanıtında functionNotSupported. Görüntüleyin Hatalar ve istisnalar başlıklı makaleden daha fazla bilgi edinebilirsiniz.

Bu özellikler (cihazınız için geçerliyse) önerilir. Ancak mevcut karakterlerinizle en iyi şekilde eşleşmesi için mevcut tüm özellikleri karıştırıp eşleştirebilirsiniz. fayda sağlar.

Kalite gereksinimleri

  • Gecikme: 2.000 ms'den az veya bu değere eşit olmalıdır.
  • Güvenilirlik: %97'den fazla veya buna eşit olmalıdır.

Örnek cihaz: Basit güvenlik sistemi

Bu bölüm, ortak bir "Güvenlik Sistemi"ni temsil eden örnek amaç yüklerini içerir. yukarıdaki cihaz türüne ve özelliklere göre değişir. Uygulamanızda özellikler ekler veya mevcut özellikleri kaldırırsanız ve yanıtlarınızı bu değişikliklere göre değiştirmeniz gerekir.

Örnek SYNC yanıtı

İstek
ziyaret edin.
{
  "requestId": "6894439706274654512",
  "inputs": [
    {
      "intent": "action.devices.SYNC"
    }
  ]
}
Yanıt
{
  "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"
        }
      }
    ]
  }
}

Örnek QUERY yanıtı

İstek
ziyaret edin.
{
  "requestId": "6894439706274654514",
  "inputs": [
    {
      "intent": "action.devices.QUERY",
      "payload": {
        "devices": [
          {
            "id": "123"
          }
        ]
      }
    }
  ]
}
Yanıt
{
  "requestId": "6894439706274654514",
  "payload": {
    "devices": {
      "123": {
        "status": "SUCCESS",
        "online": true,
        "isArmed": true,
        "currentArmLevel": "home_key",
        "currentStatusReport": [
          {
            "blocking": false,
            "deviceTarget": "123",
            "priority": 0,
            "statusCode": "lowBattery"
          }
        ]
      }
    }
  }
}

Örnek EXECUTE komutları

ArmDisarm

Komut parametreleriyle ilgili ek ayrıntılar için bkz. action.devices.traits.ArmDisarm bir referans noktası olarak kabul edilir.

İstek
ziyaret edin.
{
  "requestId": "6894439706274654516",
  "inputs": [
    {
      "intent": "action.devices.EXECUTE",
      "payload": {
        "commands": [
          {
            "devices": [
              {
                "id": "123"
              }
            ],
            "execution": [
              {
                "command": "action.devices.commands.ArmDisarm",
                "params": {
                  "arm": true,
                  "armLevel": "away_key"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}
Yanıt
{
  "requestId": "6894439706274654516",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "online": true,
          "isArmed": true,
          "currentArmLevel": "away_key"
        }
      }
    ]
  }
}

Cihaz ERRORS

Tam listeye göz atın: hataları ve istisnaları ortadan kaldırın.

Devre dışı bırakma istisnalarını bildir

Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken istisna kodları aracılığıyla bağlam StatusReport özelliğiyle bildirin. İstisnalar, engelleyen veya engellenmeyen durum olarak bildirilebilir.

  • "BAŞARILI" ile bildirilen engellemeyen istisnalar durum, bu durumun istisna, silahla veya devre dışı bırakmaya engel olmadı.
  • "EXCEPTIONS" değeriyle bildirilen engelleme istisnaları durum, güvenlik sistemini veya devre dışı bırakma işlemi bu istisnalar nedeniyle durduruldu.

Genellikle güvenlik sistemleriyle ilişkilendirilen istisna kodları şunlardır:

  • doorOpen: Bir kapı açık.
  • windowOpen: Bir pencere açık.
  • isOpen: Sensör bir şeyin açık olduğunu algılar (ancak bunu bilmiyor). yapın.
ziyaret edin.

Örnek: Engellemeyen istisna

Bu örnekte, güvenlik sisteminin güvenli olduğu durumlarda engellenmeyen bir istisna gösterilmektedir bir pencere açık olarak bildirilse bile etkinleştirilmelidir.

Kullanıcı Güvenlik sistemini yüksek güvenliğe ayarla.
Google Asistan Tamam, ön pencere açık. Güvenlik sistemi yüksek güvenlik modunda etkinleştiriliyor.
İstek
ziyaret edin.
{
    "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"
            }
          }]
        }]
      }
    }]
  }
Yanıt
{
    "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"
              }
            ]
          }
        }
      ]
    }
  }

Örnek: Engelleme istisnası

Kullanıcı Güvenlik sistemini yüksek güvenliğe ayarla.
Google Asistan Bir hata oluştu ve güvenlik sistemini kontrol ediyor. Ön pencere açık.
İstek
ziyaret edin.
{
    "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"
            }
          }]
        }]
      }
    }]
  }
Yanıt 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"
              }
            ]
          }
        }
      ]
    }
  }

İki faktörlü kimlik doğrulama ile etkinleştirme

Etkinleştirme işleminiz, kullanıcıların bir PIN kullanarak PIN girmesini gerektiriyorsa iki faktörlü kimlik doğrulama iletişim kutusu etkin durumdayken sistemi etkinleştirmeye devam etmek isteyip istemediklerini istisnalar (örneğin, bir pencere veya kapı açık olduğunda).

Bu senaryoda PIN veya parola girişi her ikisi için onay ve ardından onay gerekebilir.

Örnek: Onay görevi

Bu örnekte, güvenlik sistemini etkinleştirmeye çalışan ancak ön kapının açık olarak algılandı. Kullanıcı, güvenlik bilgilerinin ön kapı açık olsa bile sistemin tekrar etkinleştirilmesi gerekir.

Kullanıcı Güvenlik sistemini etkinleştirin.
Google Asistan Ön kapı açık. Güvenlik sistemini etkinleştirmek istediğinizden emin misiniz?
Kullanıcı Evet.
Google Asistan Tamam, güvenlik sistemi.

İlk adımda ackNeeded meydan okumasıyla yanıt vermelisiniz.

1. İstek
ziyaret edin.
{
    "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
            }
          }]
        }]
      }
    }]
  }
Yanıt 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'ın size ilettiği bu sonraki istekte ack sonucu yer alır.

2. İstek
ziyaret edin.
{
    "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
            }
          }]
        }]
      }
    }]
  }
Yanıt
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
      "commands": [
        {
          "ids": [
            "123"
          ],
          "status": "SUCCESS",
          "states": {
            "isArmed": true
          }
        }
      ]
    }
  }

Örnek: PIN ve onay görevi

Bu örnekte, güvenlik sistemini etkinleştirmeye çalışan ve PIN girilmesini zorunlu kılan bir kullanıcı gösterilmektedir. Sistem, ön ve arka pencerelerin açık olduğunu algılar ve kullanıcıdan onay ister emin olmanız gerekir.

Kullanıcı Uzakta moduna geç.
Google Asistan PIN kodunuz nedir?
Kullanıcı 1234.
Google Asistan Galiba ve arka pencerelerin açık olduğundan emin olun. Devam etmek istediğinizden emin misiniz? güvenlik sistemini dışarıda mı bırakıyorum?
Kullanıcı Evet.
Google Asistan Tamam, sistemi etkinleştiriyorum güvenlik sistemini dışarıda

İlk aşamada standart pinNeeded meydan okumasıyla yanıt vermelisiniz.

1. İstek
ziyaret edin.
{
  "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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["456"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Daha sonra Google, sağlanan PIN'i içeren bir taleple ilgilenir. Paydaşlarla birlikte ikinci dönüşte ackNeeded meydan okuması ile yanıt vermelisiniz. ve şu bilgileri içeren mevcut durum raporu gibi ek bilgilere yer verin: engelleme istisnaları.

2. İstek
ziyaret edin.
{
  "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"
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "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'ın size ilettiği bu sonraki istekte yalnızca ack sonucu yer alır. değil, ilk işlemde sağlanan PIN değil.

İstek 3
ziyaret edin.
{
  "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
          }
        }]
      }]
    }
  }]
}
Yanıt
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "isArmed": true
        }
      }
    ]
  }
}