スマートホームの Dispense トレイトのスキーマ

action.devices.traits.Dispense - このトレイトは、1 つ以上の物理的なアイテムを指定された量だけ供給できるデバイスに使用します。

このトレイトは、ペット用フィーダー用の「キャットフード ボウル」や蛇口用の「グラス」などのプリセットの供給もサポートします。

デバイスの属性

このトレイトを持つデバイスは、SYNC オペレーションの一部として次の属性をレポートできます。SYNC インテントの処理方法については、インテントのフルフィルメントをご覧ください。

属性 種類 説明
supportedDispenseItems 配列

デバイスが供給できるすべてのアイテムに関する情報が含まれています。

[item, ...] 温度計

使い捨てのアイテム。

item_name 文字列

必須

供給されるアイテムの内部名。これは、すべての言語に共通で、ユーザー フレンドリーにはならない可能性があります。

item_name_synonyms 配列

必須

サポートされている各言語での供給の同義名。

[item, ...] 温度計

指定された言語で、供給されるアイテムの同義名です。

synonyms 配列

必須

供給されるアイテムの同義名。該当する場合、シノミームには単数形と複数形の両方を含める必要があります。このリストの最初の文字列は、その言語のアイテムの複数形にする必要があります。

[item, ...] 文字列

類義語

lang 文字列

必須

言語コード(ISO 639-1)。サポートされている言語をご覧ください。

supported_units 配列

必須

そのアイテムに対してデバイスがサポートする単位のセット。

[item, ...] 文字列

サポートされている単位。

サポートされている値:

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

必須

供給される商品アイテムの一般的な量。

amount 整数

必須

支払額。

unit 文字列

必須

分注ユニット。

supportedDispensePresets 配列

デバイスでサポートされているプリセット。

[item, ...] 温度計

プリセット。

preset_name 文字列

必須

プリセットの内部名。この名前はすべての言語で共有され、ユーザー フレンドリーにならない可能性があります。

preset_name_synonyms 配列

必須

サポートされている各言語のプリセットの同義名。

[item, ...] 温度計

所定の言語でのプリセットの同義名です。

synonyms 配列

必須

プリセットの同義名。該当する場合は、類義語には単数形と複数形の両方を含める必要があります。

[item, ...] 文字列

類義語

lang 文字列

必須

言語コード(ISO 639-1)。サポートされている言語をご覧ください。

プリセット付きの液体のユニットをサポートするウォーター サーバー。

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

プリセットなしのペットフード ディスペンサー。

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

デバイスのステータス

このトレイトを持つエンティティは、QUERY オペレーションの一部として次の状態をレポートできます。QUERY インテントの処理方法については、インテントのフルフィルメントをご覧ください。

状態 種類 説明
dispenseItems 配列

デバイスが供給できるアイテムの状態。

[item, ...] 温度計

特定のアイテムの状態。

itemName 文字列

item_name 属性から取得したアイテムの名前。

amountRemaining 温度計

デバイス内のアイテムの残量。デバイスが現在供給中の場合は、残量またはデバイスが供給完了後の量を報告します。

amount 番号

残額

unit 文字列

supported_units 属性による amount の単位。

amountLastDispensed 温度計

デバイスから最後に給付されたアイテムの分量。デバイスが現在供給中の場合は、現在の供給量の前に供給された量を報告します。

amount 番号

残額

unit 文字列

supported_units 属性による amount の単位。

isCurrentlyDispensing ブール値

デバイスが現在このアイテムを供給中かどうかを示します。

ディスペンサーに残っている犬のおやつは何個ありますか?

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

ウォーター クーラーに残っている水の量は?

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

以前にどのくらいの量のキャットフードをあげたか

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

蛇口からまだ水が出ている状態ですか?

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

amountRemainingamountLastDispensed は、1 つの測定単位のみで報告する必要があります。

dispenseItems 配列内で複数のアイテムを指定できます。各アイテム名は一意でなければならず、supportedDispenseItems 属性内のアイテムに対応している必要があります。

デバイスのコマンド

このトレイトを持つデバイスは、EXECUTE オペレーションの一部として次のコマンドに応答できます。EXECUTE インテントの処理方法については、インテントのフルフィルメントをご覧ください。

action.devices.commands.Dispense

アイテムを配布する。

パラメータ

ペイロードには、次のいずれかが含まれています。

分注します。

パラメータ 種類 説明
item 文字列

供給する商品アイテムの名前(item_name 属性)。

amount 番号

必須

注入する量。

unit 文字列

必須

supported_units 属性による amount の単位。

プリセットごとに供給します。

パラメータ 種類 説明
presetName 文字列

必須

供給するプリセットの名前(preset_name 属性)。

パラメータなしで供給します。

パラメータ 種類 説明

プロパティがありません

水を 1 杯教えて。

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

猫用ウォーターボウルに水を入れる。

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

水を注ぎます。

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

デバイスエラー

エラーと例外の全リストをご覧ください。
  • dispenseAmountRemainingExceeded: ユーザーが、十分な量の残量がないデバイスからアイテムまたは分量の供給を試みた。
  • dispenseAmountAboveLimit: ユーザーが 1 つのクエリで要求できる制限を超える量の供給を試みました。これは、誤って過剰な量(たとえば 500,000 カップの水)が供給されるのを防ぐためです。
  • dispenseAmountBelowLimit: ユーザーが、供給できる最小量を下回るアイテムまたは分量をデバイスに供給しようとしました。
  • dispenseFractionalAmountNotSupported: ユーザーが、デバイスが分割できない分数個のアイテムを供給しようとしました(たとえば、犬のおやつなどのカウント可能なアイテムはデバイスで割り切れない可能性があります)。
  • genericDispenseNotSupported: ユーザーがアイテムまたはプリセットを指定せずにデバイスから供給しようとしましたが、デバイスがそのような機能(デフォルトの供給アクションなど)をサポートしていません。
  • dispenseUnitNotSupported: ユーザーが、そのケースでサポートされていないユニットの供給を試みた(例: アイテムが指定されていないため supported_unit validation がスキップされた)。
  • dispenseFractionalUnitNotSupported: ユーザーが、指定された特定の単位では分割できない、分割可能な少量のアイテムの供給を試みた(たとえば、蛇口が 2.7 カップは供給できるが 2.7 mL は供給できない)。
  • deviceCurrentlyDispensing: ユーザーがアイテムの供給を要求しましたが、デバイスはすでに供給中です。
  • deviceClogged: ユーザーがアイテムを供給しようとしましたが、デバイスが詰まっています。
  • deviceBusy: ユーザーがアイテムの供給を試みたが、デバイスはビジー状態(汎用)です。

デバイスの例外

これらの例外は、レスポンスの states オブジェクトで exceptionCode として報告される場合があります。

  • amountRemainingLow - ユーザーがデバイスからアイテムまたは分量を供給して、残量が低レベルになります。「低」レベルを定義する責任はユーザーにあります。
  • userNeedsToWait - リクエストされたアイテムや量が正常に供給されるまで待たなければならない場合(たとえば、蛇口からお湯を出しても、水が温まるのを待ってから、給水を開始する必要があるなど)。