Schéma du trait de distribution pour la maison connectée

action.devices.traits.Dispense : ce trait appartient aux appareils qui permettent de distribuer une quantité spécifiée d'un ou de plusieurs articles physiques.

Cette caractéristique permet également de distribuer une quantité prédéfinie, par exemple une "gamelle pour chat" pour un distributeur de nourriture pour animaux ou un "verre" pour un robinet.

ATTRIBUTS de l'appareil

Les appareils dotés de ce trait peuvent signaler les attributs suivants dans le cadre de l'opération SYNC. Pour en savoir plus sur la gestion des intents SYNC, consultez Fulfillment d'intent.

Attributs Type Description
supportedDispenseItems Array

Contient des informations sur tous les articles que l'appareil peut distribuer.

[item, ...] Objet

Élément dispensable.

item_name String

Obligatoire.

Nom interne de l'élément distribué. Cette méthode peut être peu conviviale et est partagée dans toutes les langues.

item_name_synonyms Array

Obligatoire.

Noms de synonymes pour les médicaments distribués dans chaque langue acceptée.

[item, ...] Objet

Noms de synonymes pour l'article distribué dans une langue donnée. Au moins un élément avec une valeur lang de en est requis pour fournir une langue de secours.

synonyms Array

Obligatoire.

Noms de synonymes pour l'article distribué. Les synonymes doivent inclure les formes au singulier et au pluriel, le cas échéant. La première chaîne de cette liste doit être la forme plurielle de l'élément dans cette langue.

[item, ...] String

Nom du synonyme. Au moins un élément avec une valeur lang de en est requis pour fournir une langue de secours.

lang String

Obligatoire.

Code de langue (ISO 639-1). Consultez la liste des langues disponibles.

supported_units Array

Obligatoire.

Ensemble d'unités acceptées par l'appareil pour cet article.

[item, ...] String

Unités acceptées.

Valeurs acceptées :

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

Obligatoire.

Quantité habituelle de l'article pouvant être distribuée.

amount Entier

Obligatoire.

Montant distribué.

unit String

Obligatoire.

Unité distribuée.

supportedDispensePresets Array

Préréglages pris en charge par l'appareil.

[item, ...] Objet

Préréglage.

preset_name String

Obligatoire.

Nom interne du préréglage. Ce nom peut ne pas être facile à retenir pour les utilisateurs et est partagé dans toutes les langues.

preset_name_synonyms Array

Obligatoire.

Noms de synonymes pour le préréglage dans chaque langue acceptée.

[item, ...] Objet

Noms de synonymes pour le préréglage dans une langue donnée.

synonyms Array

Obligatoire.

Noms de synonymes pour le préréglage. Les synonymes doivent inclure les formes au singulier et au pluriel, le cas échéant.

[item, ...] String

Nom du synonyme

lang String

Obligatoire.

Code de langue (ISO 639-1). Consultez la liste des langues disponibles.

Exemples

Distributeur d'eau compatible avec les unités pour les liquides avec des préréglages.

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

Distributeur de nourriture pour animaux sans préréglages.

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

ÉTATS des appareils

Les entités dotées de ce trait peuvent signaler les états suivants dans le cadre de l'opération QUERY. Pour en savoir plus sur la gestion des intents QUERY, consultez Fulfillment d'intent.

États Type Description
dispenseItems Array

États des articles que l'appareil peut distribuer.

[item, ...] Objet

État d'un article donné.

itemName String

Nom de l'article à partir de l'attribut item_name.

amountRemaining Objet

Quantité de cet article restant dans l'appareil. Si l'appareil est en train de distribuer un produit, cette valeur indique la quantité restante ou la quantité qui sera distribuée une fois la distribution terminée.

amount Number

Montant restant

unit String

Unité pour amount à partir de l'attribut supported_units.

amountLastDispensed Objet

Quantité de cet article distribuée par l'appareil lors de la dernière distribution. Si l'appareil est en train de distribuer des aliments, il doit indiquer la quantité distribuée avant la quantité en cours.

amount Number

Montant restant

unit String

Unité pour amount à partir de l'attribut supported_units.

isCurrentlyDispensing Valeur booléenne

Indique si l'appareil distribue actuellement cet article.

Exemples

Combien de friandises pour chiens reste-t-il dans mon distributeur ?

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

Combien d'eau reste-t-il dans ma fontaine à eau ?

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

Quelle quantité de nourriture pour chat ai-je donnée avant ?

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

Le robinet continue-t-il de verser de l'eau ?

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

amountRemaining et amountLastDispensed ne doivent être signalés qu'avec une seule unité de mesure.

Vous pouvez fournir plusieurs éléments dans le tableau dispenseItems. Chaque nom d'article doit être unique et correspondre à un article de l'attribut supportedDispenseItems.

COMMANDES de l'appareil

Les appareils dotés de ce trait peuvent répondre aux commandes suivantes dans le cadre de l'opération EXECUTE. Pour en savoir plus sur la gestion des intents EXECUTE, consultez Fulfillment d'intent.

action.devices.commands.Dispense

Distribuer des articles.

Paramètres

La charge utile contient l'un des éléments suivants :

Distribuer par montant.

Paramètres Type Description
item String

Nom de l'article à distribuer, à partir de l'attribut item_name.

amount Number

Obligatoire.

Montant à distribuer.

unit String

Obligatoire.

Unité pour amount, à partir de l'attribut supported_units.

Distribuer selon un préréglage.

Paramètres Type Description
presetName String

Obligatoire.

Nom du préréglage à distribuer, à partir de l'attribut preset_name.

Distribution sans paramètres.

Paramètres Type Description

Aucune propriété

Exemples

Donne-moi une tasse d'eau.

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

Remplis le bol d'eau du chat.

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

Distribue de l'eau.

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

ERREURS liées à l'appareil

Consultez la liste complète des erreurs et exceptions.
  • dispenseAmountRemainingExceeded : l'utilisateur a essayé de distribuer un article ou un montant à partir d'un appareil dont le solde est insuffisant.
  • dispenseAmountAboveLimit : l'utilisateur a essayé de distribuer une quantité qui dépasse les limites de ce qu'il peut demander dans une seule requête. Cela permet d'éviter de distribuer accidentellement une quantité excessive (par exemple, 500 000 tasses d'eau).
  • dispenseAmountBelowLimit : l'utilisateur a essayé de distribuer un article ou un montant inférieur au montant minimal que l'appareil peut distribuer.
  • dispenseFractionalAmountNotSupported : l'utilisateur a essayé de distribuer une quantité fractionnaire d'un article que l'appareil ne peut pas diviser (par exemple, les articles dénombrables comme les friandises pour chiens ne peuvent pas être divisés par l'appareil).
  • genericDispenseNotSupported : l'utilisateur essaie de distribuer un article à partir d'un appareil sans spécifier d'article ni de préréglage, mais l'appareil ne prend pas en charge cette fonctionnalité (par exemple, une action de distribution par défaut).
  • dispenseUnitNotSupported : l'utilisateur tente de distribuer un article à partir d'un appareil dont l'unité n'est pas compatible avec ce cas (par exemple, l'article n'est pas fourni, donc supported_unit validation a été ignoré).
  • dispenseFractionalUnitNotSupported : l'utilisateur a essayé de distribuer une quantité fractionnée d'un élément qui peut être divisé, mais pas pour l'unité spécifiée (par exemple, un robinet peut distribuer 2,7 tasses, mais pas 2,7 ml).
  • deviceCurrentlyDispensing : l'utilisateur essaie de distribuer un article, mais l'appareil est déjà en train de le faire.
  • deviceClogged : l'utilisateur essaie de distribuer un article, mais l'appareil est bouché.
  • deviceBusy : l'utilisateur essaie de distribuer un article, mais l'appareil est occupé (générique).

EXCEPTIONS concernant les appareils

Ces exceptions peuvent être signalées en tant que exceptionCode dans l'objet states de votre réponse :

  • amountRemainingLow : l'utilisateur distribue un article ou une quantité à partir de l'appareil, ce qui réduit la quantité restante à un niveau bas. Il vous appartient de définir ce qui constitue un niveau "bas".
  • userNeedsToWait : lorsque l'utilisateur doit attendre avant que l'article ou le montant demandé puisse être distribué (par exemple, un robinet distribue de l'eau chaude, mais l'utilisateur doit attendre que l'eau chauffe avant qu'elle ne commence à couler).