Akıllı Ev Güvenlik Sistemi Rehberi
action.devices.types.SECURITYSYSTEM
: Güvenlik sistemleri etkinleştirilebilir ve devre dışı bırakılabilir. Bu cihazlar birden fazla güvenlik düzeyinde (ör. evde ve dışarıda) etkinleştirilebilir ve hareket algılayan bir sensör veya açık bir pencere gibi belirli sensörler hakkında bilgi bildirebilir.
Bu tür, cihazın Güvenlik Sistemi simgesinin yanı sıra bazı eş anlamlı kelimeleri ve takma adları aldığını belirtir.
Cihaz özellikleri
Hizmetinizin desteklemesi gereken özellikler ve durumlar ile EXECUTE ve QUERY yanıtlarının nasıl oluşturulacağı gibi uygulama ayrıntıları için ilgili özellik belgelerine bakın.
Gerekli özellikler
Bu özellikler ve komutlar, cihazınız için geçerliyse gereklidir. Cihazınız bu özellikleri desteklemiyorsa bir QUERY veya EXECUTE yanıtına functionNotSupported
hata kodunu girin. Daha fazla bilgi için Hatalar ve istisnalar bölümüne bakın.
Önerilen özellikler
Cihazınız için geçerliyse bu özellikler önerilir. Bununla birlikte, mevcut ürün işlevselliğinize en iyi şekilde uyması için mevcut tüm özellikleri bir arada kullanabilirsiniz.
Kalite gereksinimleri
- Gecikme: En fazla 2000 ms olmalıdır.
- Güvenilirlik: En az %97 olmalıdır.
Örnek cihaz: Basit güvenlik sistemi
Bu bölümde, cihaz türüne ve yukarıdaki özelliklere göre ortak bir "Güvenlik Sistemi"ni temsil eden örnek amaç yükleri yer alır. Uygulamanızda özellik ekler veya kaldırırsanız yanıtlarınızı bu değişiklikleri yansıtacak şekilde değiştirin.
Örnek Senkronizasyon yanıtı
{ "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" } } ] } }
Örnek QUERY yanıtı
{ "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" } ] } } } }
Örnek EXECUTE komutları
ArmDisarm
Komut parametreleri hakkında daha ayrıntılı bilgi için
action.devices.traits.ArmDisarm
referansına bakın.
{ "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" } } ] } }
Cihaz ERRORS
Hataların ve istisnaların tam listesini inceleyin.Rapor kurma istisnaları
Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken StatusReport özelliğiyle bildirdiğiniz istisna kodları üzerinden bağlamla ilgili ek bilgiler sağlayabilirsiniz. İstisnalar, engelleyen veya engellemeyen olarak bildirilebilir.
- "BAŞARILI" durumuyla bildirilen engellemeyen istisnalar, istisnanın devre dışı bırakmayı veya devre dışı bırakmayı engellemediğini gösterir.
- "İSTİSNALAR" durumuyla bildirilen engelleme istisnaları, etkinleştirme veya devre dışı bırakmanın bu istisnalar nedeniyle durdurulduğunu gösterir.
Güvenlik sistemleriyle yaygın olarak 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 kapı mı yoksa pencere mi olduğunu anlayamaz).
Örnek: Engellemeyen istisna
Bu örnekte, bir pencere açık olarak bildirilse bile güvenlik sisteminin etkinleştirildiği engellemeyen bir istisna gösterilmektedir.
Kullanıcı | Güvenlik sistemini yüksek güvenliğe ayarlayın. |
Google Asistan | Tamam, ön pencere açık. Güvenlik sistemi yüksek güvenlikte etkinleştiriliyor. |
{ "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" } ] } } ] } }
Örnek: Engelleme istisnası
Kullanıcı | Güvenlik sistemini yüksek güvenliğe ayarlayın. |
Google Asistan | Güvenlik sistemi kontrol edilirken bir hata oluştu. Ön pencere açık. |
{ "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": false, "currentArmLevel": "L2", "currentStatusReport": [ { "blocking": true, "priority": 0, "statusCode": "windowOpen", "deviceTarget": "sensor_id1" } ] } } ] } }
İki faktörlü kimlik doğrulama ile etkinleştirme
Etkinleştirme akışınız, kullanıcıların iki faktörlü kimlik doğrulama iletişim kutusu üzerinden PIN girmesini gerektiriyorsa etkin istisnalar olduğunda (örneğin, bir pencere veya kapı açık olduğunda) sistemi etkinleştirmeye devam etmek isteyip istemediklerini onaylamanız gerekir.
Bu senaryoda, bir PIN veya parola girişiyle hem onay istenmesi gerekebilir.
Örnek: Onaylama sorgulaması
Bu örnekte, bir kullanıcı güvenlik sistemini etkinleştirmeye çalışırken bir ön kapının açık olduğu algılanmıştır. Kullanıcı, ön kapı açık olsa bile güvenlik sisteminin etkinleştirileceğini kabul eder.
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 sistemini etkinleştiriyorum. |
İlk dönüşte ackNeeded
meydan okumasıyla yanıt vermelisiniz.
{ "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": [ "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 gönderdiği sonraki istek ack
sonucunu içerir.
{ "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 } } ] } }
Örnek: PIN ve onay sorgulaması
Bu örnekte, PIN girişi gerektiren güvenlik sistemini etkinleştirmeye çalışan bir kullanıcı gösterilmektedir. Sistem, ön ve arka pencerelerin açık olduğunu tespit eder ve kullanıcıdan kurulumun devam etmesi gerektiğini onaylamasını ister.
Kullanıcı | Kolu uzakta olarak ayarla. |
Google Asistan | PIN'iniz nedir? |
Kullanıcı | 1234. |
Google Asistan | Ön ve arka camların açık olduğu anlaşılıyor. Güvenlik sistemini dışarıda olarak devre dışı bırakmaya devam etmek istediğinizden emin misiniz? |
Kullanıcı | Evet. |
Google Asistan | Tamam, güvenlik sistemini dışarıda olarak etkinleştiriyorum |
İlk dönüşte standart bir pinNeeded
sorusuyla yanıt vermelisiniz.
{ "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" } }] } }
Bunun ardından Google, sağlanan PIN'i içeren bir istek gönderir. İkinci dönüşü desteklemek için ackNeeded
sorgulamasıyla, hedef kol düzeyi ve engelleme istisnaları içeren geçerli durum raporu gibi ek bilgilerle yanıt vermeniz gerekir.
{ "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'dan size gönderilen bir sonraki istek, yalnızca ack
sonucunu içerir, ilk turda sağlanan PIN kodunu içermez.
{ "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 } } ] } }