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 simgesi ve bazı ilgili eşanlamları ve takma adlar vardır.
Cihaz özellikleri
Şu özellikler için ilgili özellik dokümanlarına bakın: hizmetinizin desteklemesi gereken özellikler ve eyaletler gibi uygulama ayrıntılarını EXECUTE ve QUERY yanıtları oluşturun.
Gerekli özellikler
Bu özellikler ve komutlar, mobil uygulama veya
olanak tanır. Cihazınız bu özellikleri desteklemiyorsa
Bir QUERY veya EXECUTE yanıtında functionNotSupported
. Görüntüleyin
Hatalar ve istisnalar başlıklı makaleden daha fazla bilgi edinebilirsiniz.
Önerilen özellikler
Bu özellikler (cihazınız için geçerliyse) önerilir. Ancak mevcut karakterlerinizle en iyi şekilde eşleşmesi için mevcut tüm özellikleri karıştırıp eşleştirebilirsiniz. fayda sağlar.
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üm, ortak bir "Güvenlik Sistemi"ni temsil eden örnek amaç yüklerini içerir. yukarıdaki cihaz türüne ve özelliklere göre değişir. Uygulamanızda özellikler ekler veya mevcut özellikleri kaldırırsanız ve yanıtlarınızı bu değişikliklere göre değiştirmeniz gerekir.
Ö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 parametreleriyle ilgili ek ayrıntılar için
bkz.
action.devices.traits.ArmDisarm
bir referans noktası olarak kabul edilir.
{ "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
Tam listeye göz atın: hataları ve istisnaları ortadan kaldırın.Devre dışı bırakma istisnalarını bildir
Sistemi etkinleştirmeye veya devre dışı bırakmaya çalışırken istisna kodları aracılığıyla bağlam StatusReport özelliğiyle bildirin. İstisnalar, engelleyen veya engellenmeyen durum olarak bildirilebilir.
- "BAŞARILI" ile bildirilen engellemeyen istisnalar durum, bu durumun istisna, silahla veya devre dışı bırakmaya engel olmadı.
- "EXCEPTIONS" değeriyle bildirilen engelleme istisnaları durum, güvenlik sistemini veya devre dışı bırakma işlemi bu istisnalar nedeniyle durduruldu.
Genellikle güvenlik sistemleriyle 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 bunu bilmiyor). yapın.
Örnek: Engellemeyen istisna
Bu örnekte, güvenlik sisteminin güvenli olduğu durumlarda engellenmeyen bir istisna gösterilmektedir bir pencere açık olarak bildirilse bile etkinleştirilmelidir.
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 | Bir hata oluştu ve güvenlik sistemini kontrol ediyor. Ö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 işleminiz, kullanıcıların bir PIN kullanarak PIN girmesini gerektiriyorsa iki faktörlü kimlik doğrulama iletişim kutusu etkin durumdayken sistemi etkinleştirmeye devam etmek isteyip istemediklerini istisnalar (örneğin, bir pencere veya kapı açık olduğunda).
Bu senaryoda PIN veya parola girişi her ikisi için onay ve ardından onay gerekebilir.
Örnek: Onay görevi
Bu örnekte, güvenlik sistemini etkinleştirmeye çalışan ancak ön kapının açık olarak algılandı. Kullanıcı, güvenlik bilgilerinin ön kapı açık olsa bile sistemin tekrar etkinleştirilmesi gerekir.
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. |
İ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 onay ister emin olmanız gerekir.
Kullanıcı | Uzakta moduna geç. |
Google Asistan | PIN kodunuz nedir? |
Kullanıcı | 1234. |
Google Asistan | Galiba ve arka pencerelerin açık olduğundan emin olun. Devam etmek istediğinizden emin misiniz? güvenlik sistemini dışarıda mı bırakıyorum? |
Kullanıcı | Evet. |
Google Asistan | Tamam, sistemi etkinleştiriyorum güvenlik sistemini dışarıda |
İlk aşamada standart 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" } }] } }
Daha sonra Google, sağlanan PIN'i içeren bir taleple ilgilenir. Paydaşlarla birlikte
ikinci dönüşte ackNeeded
meydan okuması ile yanıt vermelisiniz.
ve şu bilgileri içeren mevcut durum raporu gibi ek bilgilere yer verin:
engelleme istisnaları.
{ "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 yer alır.
değil, ilk işlemde sağlanan PIN değil.
{ "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 } } ] } }