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 simgesini ve bazı alakalı eş anlamlıları ve takma adları aldığını gösterir.
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 (varsa) cihazınız için gereklidir. Cihazınız bu özellikleri desteklemiyorsa bir QUERY veya EXECUTE yanıtında functionNotSupported
hata kodunu girin. Daha fazla bilgi için Hatalar ve istisnalar bölümüne bakın.
Önerilen özellikler
Bu özellikler (cihazınız için geçerliyse) önerilir. Bununla birlikte, mevcut ürün işlevselliğinizle en iyi şekilde eşleşmesi için mevcut tüm özellikleri karıştırıp 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 buna 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 almaktadı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ı
ArmDisarm
Komut parametreleri hakkında ek bilgiler 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.Devre dışı bırakma istisnalarını bildir
Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken StatusReport özelliğini kullanarak bildirdiğiniz istisna kodları aracılığıyla ek bağlam sağlayabilirsiniz. İstisnalar, engelleyen veya engellenmeyen durum 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ırakma işleminin bu istisnalar nedeniyle durdurulduğunu gösterir.
Genellikle güvenlik sistemleriyle ilişkilendirilen istisna kodları şunlardır:
doorOpen
: Bir kapı açık.windowOpen
: Bir pencere açık.isOpen
: Bir sensör, bir şeyin açık olduğunu algılar (ancak kapı mı yoksa pencere mi olduğunu anlamaz).
Ö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 ayarla. |
Google Asistan | Tamam, ön pencere açık. Güvenlik sistemi yüksek güvenlik modunda 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 ayarla. |
Google Asistan | Güvenlik sistemi kontrol edilirken 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": "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 akışınız, kullanıcıların iki faktörlü kimlik doğrulama iletişim kutusu aracılığıyla bir PIN girmelerini gerektiriyorsa etkin istisnalar olduğunda (örneğin, bir pencere veya kapı açık olduğunda) kullanıcıların sistemi etkinleştirmeye devam etmek isteyip istemediklerini onaylamanız gerekir.
Bu senaryoda PIN veya parola girişi her ikisi için onay ve ardından onay gerekebilir.
Örnek: Onay görevi
Bu örnekte, bir kullanıcının güvenlik sistemini etkinleştirmeye çalıştığı ancak bir ön kapının açık olduğu algılandığı gösterilmektedir. Kullanıcı, ön kapı açık olsa bile güvenlik sisteminin etkinleştirilmesi gerektiğini onaylar.
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 adımda 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 ilettiği bu sonraki istekte ack
sonucu yer alır.
{
"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 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 etkinleştirme işleminin devam etmesi gerektiğini onaylar.
Kullanıcı | Uzakta moduna geç. |
Google Asistan | PIN kodunuz nedir? |
Kullanıcı | 1234. |
Google Asistan | Ön ve arka pencerenin 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 sistemini dışarıda bırakıyorum |
İlk sırada standart pinNeeded
sorgulaması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" } }] } }
Daha sonra Google, sağlanan PIN'i içeren bir talebi takip eder. İ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 ilettiği bu sonraki istekte yalnızca ack
sonucu bulunacak,
ilk dönüşte sağlanan PIN istenmeyecektir.
{ "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 } } ] } }