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 (örneğin, 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 verebilir.
Bu tür, cihazın Güvenlik Sistemi simgesinin yanı sıra ilgili bazı eş anlamlıları 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 zorunludur. 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ğinizle en iyi şekilde eşleşmesi için mevcut tüm özellikleri karıştırabilir ve eşleştirebilirsiniz.
Kalite gereksinimleri
- Gecikme: 2.000 ms'den az veya bu değere 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, yukarıdaki cihaz türüne ve özelliklere göre ortak bir "Güvenlik Sistemi"ni temsil eden örnek amaç yükleri yer alır. Uygulamanıza özellik ekler veya uygulamanızdaki özellikleri kaldırırsanız yanıtlarınızı bu değişiklikleri yansıtacak şekilde değiştirin.
Örnek SENKRONİZASYON 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ı
Devre Dışı Bırakma
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 ERRORS
Hataların ve istisnaların tam listesine bakın.Raporlama kurma istisnaları
Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken StatusReport özelliğiyle bildirdiğiniz istisna kodları üzerinden ek bağlam sağlayabilirsiniz. İstisnalar, engelleyen veya engellemeyen olarak bildirilebilir.
- "BAŞARILI" durumuyla bildirilen engellenmeyen istisnalar, istisnanın devre dışı bırakmayı veya devre dışı bırakmayı engellemediğini gösterir.
- "EXCEPTIONS" 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ıladığında (ancak kapı mı yoksa pencere mi olduğunu anlayamaz).
Örnek: Engellemeyen istisna
Bu örnekte, bir pencerenin açık olarak bildirilmiş olmasına rağmen güvenlik sisteminin etkinleştirildiği, engellenmeyen 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 (ör. bir pencere veya kapı açık olduğunda) sistemi etkinleştirmeye devam etmek isteyip istemediklerini onaylamanız gerekir.
Bu senaryo, hem PIN hem de parola girişi ve ardından bir onay gerektirebilir.
Örnek: Onaylama sorgulaması
Bu örnekte, bir ön kapının açık olarak algılandığı halde güvenlik sistemini etkinleştirmeye çalışan bir kullanıcı gösterilmektedir. Kullanıcı, ön kapı açık olsa bile güvenlik sisteminin etkinleştirileceğini kabul eder.
Kullanıcı | Güvenlik sistemini etkinleştir. |
Google Asistan | Ön kapı açık. Güvenlik sistemini etkinleştirmek istediğinizden emin misiniz? |
Kullanıcı | Evet. |
Google Asistan | Tamam, güvenlik sistemi etkinleştiriliyor. |
İlk turda 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 bir güvenlik sistemini etkinleştirmeye çalışan bir kullanıcı gösterilmektedir. Sistem, ön ve arka pencerelerin açık olduğunu algılayıp kullanıcıdan kurulumun devam etmesi gerektiğini onaylamasını ister.
Kullanıcı | Kolu dışarıda bırak. |
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 etkinleştirmeye devam etmek istediğinizden emin misiniz? |
Kullanıcı | Evet. |
Google Asistan | Tamam, güvenlik sistemi dışarıda olarak etkinleştiriliyor |
İlk turda 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 seviyesi 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 bir sonraki istek yalnızca ack
sonucunu içerir, ilk aşamada 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 } } ] } }