Akıllı Ev Güvenlik Sistemi Kılavuzu
action.devices.types.SECURITYSYSTEM - Güvenlik sistemleri etkinleştirilebilir ve devre dışı bırakılabilir. Birden fazla güvenlik seviyesinde (ör. evde ve dışarıda) etkinleştirilebilirler ve hareket algılayan sensör veya açık pencere gibi belirli sensörler hakkında bilgi bildirebilirler.
Bu tür, cihazın Güvenlik Sistemi simgesini ve bazı ilgili eş anlamlı kelimeleri ve diğer 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 dokümanlarına bakın.
Zorunlu özellikler
Bu özellikler ve komutlar, cihazınız için geçerliyse gereklidir. Cihazınız bu özellikleri desteklemiyorsa 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
Bu özellikler, cihazınız için geçerliyse önerilir. Ancak mevcut ürün işlevselliğinize en iyi şekilde uymak için mevcut tüm özelliklerden dilediğinizi karıştırıp eşleştirebilirsiniz.
Örnek cihaz: Basit güvenlik sistemi
Bu bölümde, yukarıdaki cihaz türüne ve özelliklerine dayalı olarak yaygın bir "Güvenlik Sistemi"ni temsil eden örnek amaç yükleri yer almaktadır. Uygulamanıza özellik ekler veya özellik kaldırırsanız yanıtlarınızı bu değişiklikleri yansıtacak şekilde düzenleyin.
Ö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 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.Silahlandırma istisnalarını bildirme
Sistemi kurmaya veya devre dışı bırakmaya çalışırken StatusReport özelliği üzerinden bildirdiğiniz istisna kodları aracılığıyla ek bağlam sağlayabilirsiniz. İstisnalar, engelleyici veya engelleyici olmayan olarak bildirilebilir.
- "BAŞARILI" durumuyla bildirilen engelleyici olmayan istisnalar, istisnanın silahlandırmayı veya silahsızlandırmayı engellemediğini gösterir.
- "İSTİSNALAR" durumuyla bildirilen engelleme istisnaları, bu istisnalar nedeniyle silahlandırma veya silahsızlandırma işleminin 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çıktır.isOpen: Bir sensör, bir şeyin açık olduğunu algılıyor (ancak bunun kapı mı yoksa pencere mi olduğunu bilmiyor).
Örnek: Engellemeyen istisna
Bu örnekte, bir pencere açık olarak bildirilmesine rağmen güvenlik sisteminin etkinleştirildiği, 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 ayarlanıyor. |
{
"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": "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 koruma
Kurma akışınızda kullanıcıların iki faktörlü kimlik doğrulama iletişim kutusu aracılığıyla PIN girmesi gerekiyorsa etkin istisnalar (ör. bir pencere veya kapı açıkken) olduğunda sistemin kurulmasına devam etmek isteyip istemediklerini onaylamanız gerekir.
Bu senaryoda, onaylamanın ardından hem PIN veya parola girişi yapılması gerekebilir.
Örnek: Onaylama zorluğu
Bu örnekte, güvenlik sistemini etkinleştirmeye çalışan bir kullanıcı gösterilmektedir ancak ön kapının açık olduğu algılanı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 sistemi etkinleştiriliyor. |
İlk turda ackNeeded zorluğuyla 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öndereceği 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 onaylama zorluğu
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 algılar ve kullanıcıdan alarmın kurulması gerektiğini onaylamasını ister.
| Kullanıcı | Dışarıda modunda etkinleştirin. |
| Google Asistan | PIN kodunuz nedir? |
| Kullanıcı | 1234. |
| Google Asistan | Ön ve arka pencereler açık görünüyor. Güvenlik sistemini "uzakta" modunda kurmaya devam etmek istediğinizden emin misiniz? |
| Kullanıcı | Evet. |
| Google Asistan | Tamam, güvenlik sistemini evde değil modunda etkinleştir |
İ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" } }] } }
Google daha sonra, sağlanan PIN'i içeren bir istek gönderir. İkinci dönüşü desteklemek için hedef kol seviyesi ve engelleme istisnalarını içeren mevcut durum raporu gibi ek bilgilerle birlikte ackNeeded zorluğuyla yanıt vermelisiniz.
{ "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öndereceği sonraki istekte yalnızca ack sonucu yer alır. İlk turda sağlanan PIN yer almaz.
{ "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 } } ] } }