Akıllı Evlerde Dağıtım Özelliği Şeması

action.devices.traits.Dispense: Bu özellik, belirli bir miktarda bir veya daha fazla fiziksel öğe dağıtmayı destekleyen cihazlara aittir.

Bu özellik, ön ayar dağıtmayı da destekler. Örneğin, evcil hayvan besleme cihazı için "kedi mama kabı" veya musluk için "bardak" gibi.

Cihaz ÖZELLİKLERİ

Bu özelliğe sahip cihazlar, SYNC işlemi kapsamında aşağıdaki özellikleri bildirebilir. SYNC amaçlarını ele alma hakkında daha fazla bilgi edinmek için Amacın karşılanması başlıklı makaleyi inceleyin.

Özellikler Tür Açıklama
supportedDispenseItems Array

Cihazın dağıtabileceği tüm öğeler hakkında bilgi içerir.

[item, ...] Nesne

Vazgeçilebilir öğe.

item_name String

Zorunludur.

Dağıtılan öğenin dahili adı. Bu durum kullanıcı dostu olmayabilir ve tüm dillerde geçerlidir.

item_name_synonyms Array

Zorunludur.

Her desteklenen dilde dağıtılan ilaçların eş anlamlı adları.

[item, ...] Nesne

Verilen dilde dağıtılan öğenin eş anlamlı adları. Dil yedeklemesi sağlamak için lang değeri en olan en az bir öğe gereklidir.

synonyms Array

Zorunludur.

Dağıtılan öğenin eş anlamlı adları. Eş anlamlılar, uygun olduğunda hem tekil hem de çoğul biçimleri içermelidir. Bu listedeki ilk dize, söz konusu dildeki öğenin çoğul biçimi olmalıdır.

[item, ...] String

Eş anlamlı kelime adı. Dil yedeklemesi sağlamak için lang değeri en olan en az bir öğe gereklidir.

lang String

Zorunludur.

Dil kodu (ISO 639-1). Desteklenen dilleri görün.

supported_units Array

Zorunludur.

Cihazın bu öğe için desteklediği birimler grubu.

[item, ...] String

Desteklenen birimler.

Desteklenen değerler:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
default_portion Nesne

Zorunludur.

Öğenin dağıtılabilecek tipik miktarı.

amount Tamsayı

Zorunludur.

Verilen tutar.

unit String

Zorunludur.

Dağıtılan birim.

supportedDispensePresets Array

Cihaz tarafından desteklenen ön ayarlar.

[item, ...] Nesne

Hazır ayar.

preset_name String

Zorunludur.

Hazır ayarın dahili adı. Bu ad, kullanıcı dostu olmayabilir ve tüm dillerde paylaşılır.

preset_name_synonyms Array

Zorunludur.

Hazır ayarın desteklenen her dildeki eş anlamlı adları.

[item, ...] Nesne

Belirli bir dildeki hazır ayar için eş anlamlı adlar.

synonyms Array

Zorunludur.

Hazır ayarın eş anlamlı adları. Eş anlamlılar, uygun olduğunda hem tekil hem de çoğul biçimleri içermelidir.

[item, ...] String

Eş anlamlı ad

lang String

Zorunludur.

Dil kodu (ISO 639-1). Desteklenen dilleri görün.

Örnekler

Sıvı birimlerini destekleyen, önceden ayarlanmış su sebili.

{
  "supportedDispenseItems": [
    {
      "item_name": "Water",
      "item_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Water"
          ]
        }
      ],
      "supported_units": [
        "TEASPOONS",
        "TABLESPOONS",
        "FLUID_OUNCES",
        "CUPS",
        "PINTS",
        "QUARTS",
        "GALLONS",
        "MILLILITERS",
        "LITERS",
        "DECILITERS"
      ],
      "default_portion": {
        "amount": 2,
        "unit": "CUPS"
      }
    }
  ],
  "supportedDispensePresets": [
    {
      "preset_name": "cat_bowl",
      "preset_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Cat water bowl",
            "Cat water dish",
            "Cat water cup"
          ]
        }
      ]
    },
    {
      "preset_name": "glass_1",
      "preset_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Glass of water",
            "Glass"
          ]
        }
      ]
    }
  ]
}

Ön ayarları olmayan evcil hayvan mama kabı.

{
  "supportedDispenseItems": [
    {
      "item_name": "Treat",
      "item_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Treats",
            "Dog treats",
            "Treat",
            "Dog treat"
          ]
        }
      ],
      "supported_units": [
        "NO_UNITS"
      ],
      "default_portion": {
        "amount": 1,
        "unit": "NO_UNITS"
      }
    }
  ]
}

Cihaz DURUMLARI

Bu özelliğe sahip öğeler, QUERY işlemi kapsamında aşağıdaki durumları bildirebilir. QUERY amaçlarını ele alma hakkında daha fazla bilgi edinmek için Amacın karşılanması başlıklı makaleyi inceleyin.

Eyaletler Tür Açıklama
dispenseItems Array

Cihazın dağıtabileceği öğelerin durumları.

[item, ...] Nesne

Belirli bir öğenin durumu.

itemName String

item_name özelliğindeki öğenin adı.

amountRemaining Nesne

Cihazda kalan öğe miktarı. Cihaz şu anda dağıtım yapıyorsa kalan miktarı veya dağıtım tamamlandığında miktarın ne olacağını bildirir.

amount Number

Kalan tutar

unit String

supported_units özelliğindeki amount için birim.

amountLastDispensed Nesne

Cihazın en son verdiği öğenin miktarı. Cihaz şu anda dağıtım yapıyorsa bu, mevcut dağıtım miktarından önce dağıtılan miktarı bildirmelidir.

amount Number

Kalan tutar

unit String

supported_units özelliğindeki amount için birim.

isCurrentlyDispensing Boole

Cihazın şu anda bu öğeyi dağıtıp dağıtmadığını gösterir.

Örnekler

Mama kabımda kaç tane köpek ödülü kaldı?

{
  "dispenseItems": [
    {
      "itemName": "Dog treats",
      "amountRemaining": {
        "amount": 83,
        "unit": "NO_UNITS"
      },
      "amountLastDispensed": {
        "amount": 2,
        "unit": "NO_UNITS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Su sebili ne kadar dolu?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "amountRemaining": {
        "amount": 6.2,
        "unit": "GALLONS"
      },
      "amountLastDispensed": {
        "amount": 1,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Daha önce ne kadar kedi maması vermiştim?

{
  "dispenseItems": [
    {
      "itemName": "cat_food",
      "amountRemaining": {
        "amount": 16.5,
        "unit": "CUPS"
      },
      "amountLastDispensed": {
        "amount": 2.5,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Musluktan hâlâ su akıyor mu?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "isCurrentlyDispensing": true
    }
  ]
}

amountRemaining ve amountLastDispensed yalnızca tek bir ölçüm birimi kullanılarak raporlanmalıdır.

dispenseItems dizisinde birden fazla öğe sağlanabilir. Her öğe adı benzersiz olmalı ve supportedDispenseItems özelliğindeki bir öğeye karşılık gelmelidir.

Cihaz KOMUTLARI

Bu özelliğe sahip cihazlar, EXECUTE işlemi kapsamında aşağıdaki komutlara yanıt verebilir. EXECUTE amaçlarını ele alma hakkında daha fazla bilgi edinmek için Amacın karşılanması başlıklı makaleyi inceleyin.

action.devices.commands.Dispense

Öğeleri dağıtma

Parametreler

Yük aşağıdakilerden birini içeriyor:

Tutara göre dağıtma.

Parametreler Tür Açıklama
item String

item_name özelliğinden alınarak dağıtılacak öğenin adı.

amount Number

Zorunludur.

Verilecek tutar.

unit String

Zorunludur.

supported_units özelliğinden alınan amount için birim.

Hazır ayara göre dağıtma.

Parametreler Tür Açıklama
presetName String

Zorunludur.

preset_name özelliğinden dağıtılacak hazır ayarın adı.

Parametre olmadan dağıtın.

Parametreler Tür Açıklama

Özellik yok

Örnekler

Bana 1 bardak su ver. (Give me 1 cup of water.)

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "amount": 1,
    "unit": "CUPS",
    "item": "Water"
  }
}

Kedinin su kabını doldurun.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "presetName": "cat_bowl"
  }
}

Su dağıtma.

{
  "command": "action.devices.commands.Dispense",
  "params": {}
}

Cihaz HATALARI

Hata ve istisnaların tam listesini inceleyin.
  • dispenseAmountRemainingExceeded: Kullanıcı, yeterli miktarda bakiye kalmamış bir cihazdan öğe veya tutar dağıtmaya çalıştı.
  • dispenseAmountAboveLimit: Kullanıcı, tek bir sorguda isteyebileceği miktarın sınırlarını aşan bir miktar dağıtmaya çalıştı. Bu, yanlışlıkla aşırı miktarda (örneğin,500.000 bardak su) dağıtılmasını önlemek içindir.
  • dispenseAmountBelowLimit: Kullanıcı, cihazdan dağıtılabilecek minimum tutarın altında bir öğe veya tutar dağıtmaya çalıştı.
  • dispenseFractionalAmountNotSupported: Kullanıcı, cihazın bölemediği bir öğenin bir kısmını dağıtmaya çalıştı (örneğin, köpek ödülleri gibi sayılabilir öğeler cihaz tarafından bölünemeyebilir).
  • genericDispenseNotSupported: Kullanıcı, bir öğe veya hazır ayar belirtmeden bir cihazdan dağıtım yapmaya çalışıyor ancak cihaz bu işlevi desteklemiyor (ör. varsayılan dağıtım işlemi).
  • dispenseUnitNotSupported: Kullanıcı, bu durum için desteklenmeyen bir birime sahip cihazdan dağıtım yapmaya çalışıyor (ör. öğe sağlanmadığı için supported_unit validation atlandı).
  • dispenseFractionalUnitNotSupported: Kullanıcı, bölünebilen ancak belirtilen birim için bölünemeyen bir öğenin kesirli bir miktarını dağıtmaya çalıştı (örneğin, bir musluk 2,7 bardak dağıtabilir ancak 2,7 ml dağıtamaz).
  • deviceCurrentlyDispensing: Kullanıcı bir öğe dağıtmaya çalışıyor ancak cihaz zaten dağıtım yapıyor.
  • deviceClogged: Kullanıcı bir öğeyi dağıtmaya çalışır ancak cihaz tıkanmıştır.
  • deviceBusy: Kullanıcı bir öğe dağıtmaya çalışıyor ancak cihaz meşgul (genel).

Cihazla ilgili İSTİSNALAR

Bu istisnalar, yanıtınızın states nesnesinde exceptionCode olarak bildirilebilir:

  • amountRemainingLow - Kullanıcı, cihazdan bir öğe veya tutar dağıtıyor. Bu işlem, kalan tutarı düşük bir seviyeye getiriyor. "Düşük" seviyenin ne olduğunu tanımlamak sizin sorumluluğunuzdadır.
  • userNeedsToWait - Kullanıcının, istenen öğe veya miktar başarıyla dağıtılmadan önce beklemesi gerektiğinde (örneğin, musluk sıcak su dağıtır ancak kullanıcının dağıtmaya başlamadan önce suyun ısınmasını beklemesi gerekir).