Akıllı Ev Güvenliği Sistemi Kılavuzu
action.devices.types.SECURITYSYSTEM
- Güvenlik sistemleri etkinleştirilebilir veya devre dışı bırakılabilir. Birden çok güvenlik düzeyinde (örneğin, evde ve dışarıda) etkinleştirilebilirler ve hareket algılayan bir sensör veya bir açık pencere gibi belirli sensörlerle ilgili bilgileri raporlayabilirler.
Bu tür, cihazın Güvenlik Sistemi simgesini ve ilgili eş anlamlıları ve takma adları aldığını gösterir.
Cihaz özellikleri
Hizmetinizin desteklemesi gereken özellikler ve durumlar, ayrıca EXECUTE ve QUERY yanıtlarının nasıl oluşturulacağı gibi uygulama ayrıntıları için ilgili özellik dokümanlarına bakın.
Zorunlu özellikler
Cihazınız için geçerliyse bu özellikler ve komutlar gerekir.
Önerilen özellikler
Cihazınız için geçerliyse bu özellikler önerilir. Ancak mevcut ürün işlevlerinizle en iyi eşleşmeyi sağlamak için mevcut tüm özelliklerle karıştırabilir ve eşleştirebilirsiniz.
Kalite gereksinimleri
- Gecikme: 2.000 ms'den küçük veya buna eşit olmalıdır.
- Güvenilirlik: %97'den fazla veya bu değere eşit olmalıdır.
Örnek cihaz: Basit güvenlik sistemi
Bu bölümde, cihaz türüne ve yukarıdaki özelliklere dayalı olarak ortak bir "Güvenlik Sistemi"ni temsil eden amaç yükü örnekleri yer alır. Uygulamanıza özellikler ekler veya mevcut özellikleri kaldırırsanız yanıtlarınızı bu değişiklikleri yansıtacak şekilde değiştirin.
Örnek SYNC 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ı
Silahlanma
Komut parametreleri hakkında daha fazla 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 HATALARI
Hataların ve istisnaların tam listesini inceleyin.Rapora ekleme istisnalarını bildirme
Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken Durum Raporu özelliği aracılığıyla bildirdiğiniz istisna kodları aracılığıyla ek bağlam sunabilirsiniz. İstisnalar, engelleme veya engelleme olarak bildirilebilir.
- "BAŞARILI" durumu ile bildirilen engelleme dışı istisnalar, istisnanın silahlandırmayı veya devre dışı bırakılmasını engellemediğini gösterir.
- "İSTİSNALAR" durumu ile bildirilen engelleme istisnaları, bu istisnalar nedeniyle etkinleştirme veya devre dışı bırakma işleminin durdurulduğunu gösterir.
Genellikle güvenlik sistemleriyle ilişkili istisna kodları şunlardır:
doorOpen
: Kapı açık.windowOpen
: Pencere açılır.isOpen
: Sensör, bir şeyin açık olduğunu algılar (ancak kapı veya pencere olup olmadığını bilmez).
Örnek: Engel koymayan istisna
Bu örnekte, bir pencere açık olarak bildirilse bile güvenlik sisteminin etkinleştirildiği ve engelleyici olmayan 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üvenliğe 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
Güvenlik akışınız kullanıcıların iki faktörlü kimlik doğrulama iletişim kutusu aracılığıyla PIN girmesini gerektiriyorsa etkin istisnalar olduğunda sistemi etkinleştirmeye devam etmek isteyip istemediklerini (örneğin, pencere veya kapı açık olduğunda) onaylamanız gerekir.
Bu senaryoda her ikisi de PIN veya parola girişi, ardından bir onay gerekebilir.
Örnek: Onay görevi
Bu örnekte, güvenlik sistemini etkinleştirmeye çalışan bir kullanıcı gösterilse de ön kapı açık olarak algılanmıştır. Kullanıcı, ön kapı açık olsa bile güvenlik sisteminin etkinleştirilmesi gerektiğ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ştiriyoruz. |
İ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 yapacağı 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 yarışması
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 güvenlik işleminin devam etmesi gerektiğini onaylamasını ister.
Kullanıcı | Uzakta tutun. |
Google Asistan | PIN'iniz nedir? |
Kullanıcı | 1234. |
Google Asistan | Ön ve arka pencerelerin açık olduğu anlaşılıyor. Güvenlik sistemini devre dışı bırakmaya devam etmek istediğinizden emin misiniz? |
Kullanıcı | Evet. |
Google Asistan | Tamam, güvenlik sistemi dışarıda bırakılıyor |
İlk dönüşte standart bir pinNeeded
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": ["456"], "status": "ERROR", "errorCode": "challengeNeeded", "challengeNeeded": { "type": "pinNeeded" } }] } }
Ardından Google, sağlanan PIN'i içeren bir istek gönderir. İkinci dönüşü desteklemek için hedef kol düzeyi ve engelleme istisnaları içeren mevcut durum raporu dahil olmak üzere ek bilgiler içeren bir ackNeeded
sorgulaması ile 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'ın size gönderdiği sonraki istek, yalnızca ack
sonucunu içerir ve ilk dönüşte sağlanan PIN'i 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 } } ] } }