Skema Smart Home Dispense Trait

action.devices.traits.Dispense - Sifat ini dimiliki oleh perangkat yang mendukung pengeluaran satu atau beberapa item fisik dalam jumlah yang ditentukan.

Sifat ini juga mendukung pemberian preset, misalnya sebagai "mangkuk makanan kucing" untuk tempat makan hewan peliharaan atau "gelas" untuk keran.

ATRIBUT Perangkat

Perangkat dengan karakteristik ini dapat melaporkan atribut berikut sebagai bagian dari operasi SYNC. Untuk mempelajari lebih lanjut cara menangani intent SYNC, lihat Fulfillment intent.

Atribut Jenis Deskripsi
supportedDispenseItems Array

Berisi informasi tentang semua item yang dapat dikeluarkan perangkat.

[item, ...] Objek

Item yang dapat dihapus.

item_name String

Wajib.

Nama internal untuk item yang dikeluarkan. Hal ini dapat menjadi tidak mudah digunakan, dan dibagikan di semua bahasa.

item_name_synonyms Array

Wajib.

Nama sinonim untuk yang diberikan dalam setiap bahasa yang didukung.

[item, ...] Objek

Nama sinonim untuk item yang dikeluarkan dalam bahasa tertentu.

synonyms Array

Wajib.

Nama sinonim untuk item yang dikeluarkan. Sinonim harus mencakup bentuk tunggal dan jamak, jika berlaku. String pertama dalam daftar ini harus berupa bentuk jamak dari item dalam bahasa tersebut.

[item, ...] String

Nama sinonim

lang String

Wajib.

Kode bahasa (ISO 639-1). Lihat bahasa yang didukung.

supported_units Array

Wajib.

Kumpulan satuan yang didukung perangkat untuk item tersebut.

[item, ...] String

Unit yang didukung.

Nilai yang didukung:

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

Wajib.

Jumlah item standar yang dapat dikeluarkan.

amount Bilangan Bulat

Wajib.

Jumlah yang dikeluarkan.

unit String

Wajib.

Unit yang dikeluarkan.

supportedDispensePresets Array

Preset yang didukung oleh perangkat.

[item, ...] Objek

Preset.

preset_name String

Wajib.

Nama internal untuk preset. Nama ini mungkin tidak mudah digunakan, dan digunakan di semua bahasa.

preset_name_synonyms Array

Wajib.

Nama sinonim untuk preset dalam setiap bahasa yang didukung.

[item, ...] Objek

Nama sinonim untuk preset dalam bahasa tertentu.

synonyms Array

Wajib.

Nama sinonim untuk preset. Sinonim harus mencakup bentuk tunggal dan jamak, jika berlaku.

[item, ...] String

Nama sinonim

lang String

Wajib.

Kode bahasa (ISO 639-1). Lihat bahasa yang didukung.

Contoh

Dispenser air yang mendukung unit untuk cairan dengan preset.

{
  "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"
          ]
        }
      ]
    }
  ]
}

Pemberi makan hewan peliharaan tanpa preset.

{
  "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"
      }
    }
  ]
}

Status PERANGKAT

Entitas dengan karakteristik ini dapat melaporkan status berikut sebagai bagian dari operasi QUERY. Untuk mempelajari penanganan intent QUERY lebih lanjut, lihat fulfillment intent.

Negara bagian Jenis Deskripsi
dispenseItems Array

Status item yang dapat dikeluarkan perangkat.

[item, ...] Objek

Status item tertentu.

itemName String

Nama item dari atribut item_name.

amountRemaining Objek

Jumlah item tersebut yang tersisa di perangkat. Jika perangkat saat ini mengeluarkan produk, laporan ini akan menampilkan jumlah yang tersisa atau jumlah yang akan dikeluarkan setelah perangkat selesai mengeluarkan produk.

amount Number

Jumlah yang tersisa

unit String

Unit untuk amount dari atribut supported_units.

amountLastDispensed Objek

Jumlah item yang dikeluarkan perangkat baru-baru ini. Jika perangkat sedang mengeluarkan, ini akan melaporkan jumlah yang dikeluarkan sebelum jumlah pengeluaran saat ini.

amount Number

Jumlah yang tersisa

unit String

Unit untuk amount dari atribut supported_units.

isCurrentlyDispensing Boolean

Menunjukkan apakah perangkat saat ini mengeluarkan item ini.

Contoh

Berapa banyak camilan yang tersisa di dispenser saya?

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

Berapa banyak air yang tersisa di dispenser air saya?

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

Berapa banyak makanan kucing yang saya berikan sebelumnya?

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

Apakah keran masih mengeluarkan air?

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

amountRemaining dan amountLastDispensed hanya perlu dilaporkan menggunakan satu unit pengukuran.

Beberapa item dapat disediakan dalam array dispenseItems. Setiap nama item harus unik dan harus sesuai dengan item dalam atribut supportedDispenseItems.

Perangkat COMMANDS

Perangkat dengan karakteristik ini dapat merespons perintah berikut sebagai bagian dari operasi EXECUTE. Untuk mempelajari lebih lanjut cara menangani intent EXECUTE, lihat Fulfillment intent.

action.devices.commands.Dispense

Mendistribusikan item.

Parameter

Payload berisi salah satu hal berikut:

Dispense by amount.

Parameter Jenis Deskripsi
item String

Nama item yang akan dikeluarkan, dari atribut item_name.

amount Number

Wajib.

Jumlah yang akan dikeluarkan.

unit String

Wajib.

Unit untuk amount, dari atribut supported_units.

Dispense menurut preset.

Parameter Jenis Deskripsi
presetName String

Wajib.

Nama preset yang akan dikeluarkan, dari atribut preset_name.

Mendistribusikan tanpa parameter.

Parameter Jenis Deskripsi

Tidak ada properti

Contoh

Beri aku 1 gelas air.

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

Isi mangkuk air kucing.

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

Keluarkan air.

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

Perangkat ERRORS

Lihat daftar lengkap error dan pengecualian.
  • dispenseAmountRemainingExceeded: Pengguna mencoba mengeluarkan item atau jumlah dari perangkat yang tidak memiliki jumlah yang tersisa.
  • dispenseAmountAboveLimit: Pengguna mencoba mengeluarkan jumlah yang melebihi batas yang dapat mereka minta dalam satu kueri. Hal ini untuk mencegah penumpahan air secara tidak sengaja (misalnya, 500.000 gelas air).
  • dispenseAmountBelowLimit: Pengguna mencoba mengeluarkan item atau jumlah dari perangkat yang berada di bawah jumlah minimum yang dapat dikeluarkan.
  • dispenseFractionalAmountNotSupported: Pengguna mencoba mengeluarkan jumlah pecahan item yang tidak dapat dibagi oleh perangkat (misalnya, item yang dapat dihitung seperti camilan mungkin tidak dapat dibagi oleh perangkat).
  • genericDispenseNotSupported: Pengguna mencoba mengeluarkan dari perangkat tanpa menentukan item atau preset, tetapi perangkat tidak mendukung fungsi tersebut (misalnya, tindakan pengeluaran default).
  • dispenseUnitNotSupported: Pengguna mencoba mengeluarkan dari perangkat dengan unit yang tidak didukung untuk kasus tersebut (misalnya, item tidak disediakan sehingga supported_unit validation dilewati).
  • dispenseFractionalUnitNotSupported: Pengguna mencoba mengeluarkan jumlah pecahan item yang dapat dibagi, tetapi tidak untuk unit tertentu yang ditentukan (misalnya, keran mungkin dapat mengeluarkan 2,7 cangkir, tetapi tidak 2,7 mL).
  • deviceCurrentlyDispensing: Pengguna mencoba mengeluarkan item, tetapi perangkat sudah mengeluarkannya.
  • deviceClogged: Pengguna mencoba mengeluarkan item, tetapi perangkat tersumbat.
  • deviceBusy: Pengguna mencoba mengeluarkan item, tetapi perangkat sibuk (generik).

PENGECUALIAN Perangkat

Pengecualian ini dapat dilaporkan sebagai exceptionCode dalam objek states respons Anda:

  • amountRemainingLow - Pengguna mengeluarkan item atau jumlah dari perangkat yang membuat jumlah yang tersisa menjadi rendah. Anda bertanggung jawab untuk menentukan apa yang dimaksud dengan level "rendah".
  • userNeedsToWait - Saat pengguna harus menunggu sebelum item atau jumlah yang diminta berhasil dikeluarkan (misalnya, keran akan mengeluarkan air panas, tetapi pengguna perlu menunggu air menjadi panas sebelum mulai mengeluarkan air).