Schema für Smart-Home-Spenden

action.devices.traits.Dispense: Diese Eigenschaft gilt für Geräte, auf denen die Abgabe einer bestimmten Menge eines oder mehrerer physischer Artikel unterstützt wird.

Mit dieser Eigenschaft wird auch die Abgabe einer Voreinstellung ermöglicht, z. B. eine „Katzenschale“ für einen Futterspender oder ein „Glas“ für einen Wasserhahn.

Geräte-ATTRIBUTE

Geräte mit diesem Merkmal können im Rahmen des SYNC-Vorgangs die folgenden Attribute melden. Weitere Informationen zum Verarbeiten von SYNC-Intents finden Sie unter Intent-Auftragsausführung.

Attribute Typ Beschreibung
supportedDispenseItems Array

Enthält Informationen zu allen Artikeln, die vom Gerät ausgegeben werden können

[item, ...] Objekt

Gibt den Artikel aus.

item_name String

Erforderlich.

Interner Name für den ausgegebenen Artikel. Das Spiel kann nicht nutzerfreundlich sein und wird in allen Sprachen verwendet.

item_name_synonyms Array

Erforderlich.

Synonyme für die Ausgaben in jeder unterstützten Sprache.

[item, ...] Objekt

Synonyme für den ausgegebenen Artikel in einer bestimmten Sprache.

synonyms Array

Erforderlich.

Synonyme für den ausgegebenen Artikel. Sie sollten sowohl die Singular- als auch die Pluralform enthalten, sofern zutreffend. Der erste String in dieser Liste muss das Plural des Artikels in dieser Sprache sein.

[item, ...] String

Synonym name

lang String

Erforderlich.

Sprachcode (ISO 639-1). Siehe unterstützte Sprachen

supported_units Array

Erforderlich.

Einheiten, die vom Gerät für diesen Artikel unterstützt werden

[item, ...] String

Unterstützte Einheiten.

Unterstützte Werte:

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

Erforderlich.

Typische Menge des Artikels, der möglicherweise ausgegeben wird.

amount Ganzzahl

Erforderlich.

Der Betrag wird ausgegeben.

unit String

Erforderlich.

Dosierte Einheit.

supportedDispensePresets Array

Voreinstellungen, die vom Gerät unterstützt werden

[item, ...] Objekt

Voreinstellung.

preset_name String

Erforderlich.

Interner Name für die Voreinstellung. Dieser Name ist für Nutzer unter Umständen nicht nutzerfreundlich und wird in allen Sprachen verwendet.

preset_name_synonyms Array

Erforderlich.

Synonyme für die Voreinstellung in jeder unterstützten Sprache.

[item, ...] Objekt

Synonyme für die Voreinstellung in einer bestimmten Sprache.

synonyms Array

Erforderlich.

Synonyme für die Voreinstellung. Die Synonyme sollten sowohl die Singular- als auch die Pluralform enthalten, sofern zutreffend.

[item, ...] String

Synonym name

lang String

Erforderlich.

Sprachcode (ISO 639-1). Siehe unterstützte Sprachen

Beispiele

Wasserspender, der Flüssigkeiten mit Voreinstellungen unterstützt.

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

Der Futterspender für Tiere ohne Voreinstellungen.

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

Gerätestatus

Entitäten mit diesem Merkmal können im Rahmen des QUERY-Vorgangs die folgenden Status melden: Weitere Informationen zum Verarbeiten von QUERY-Intents finden Sie unter Intent-Auftragsausführung.

Bundesstaaten Typ Beschreibung
dispenseItems Array

Status der Geräte, die das Gerät ausgeben kann.

[item, ...] Objekt

Status eines bestimmten Elements.

itemName String

Name des Artikels aus dem Attribut item_name.

amountRemaining Objekt

Menge dieses Artikels auf dem Gerät. Wenn die Ausgaben des Geräts gerade ausgegeben werden, wird der verbleibende Betrag oder der entsprechende Betrag angezeigt, sobald der Betrag ausgegeben wurde.

amount Number

Verbleibender Betrag

unit String

Einheit für die amount aus dem Attribut supported_units.

amountLastDispensed Objekt

Menge des Artikels, der zuletzt vom Gerät ausgegeben wurde. Wenn das Gerät gerade Inhalte ausgibt, sollte der Betrag ausgegeben werden, der vor dem aktuellen Betrag ausgegeben wurde.

amount Number

Verbleibender Betrag

unit String

Einheit für die amount aus dem Attribut supported_units.

isCurrentlyDispensing Boolesch

Gibt an, ob das Gerät diesen Artikel gerade ausgibt.

Beispiele

Wie viele Hundeleckerli sind in meinem Spender übrig?

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

Wie viel Wasser verbleibt in meinem Wasserkühler?

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

Wie viel Katzenfutter habe ich vorher gegeben?

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

Wird der Wasserhahn immer noch Wasser ausgegeben?

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

Die Messwerte amountRemaining und amountLastDispensed müssen nur mit einer einzigen Maßeinheit angegeben werden.

Im dispenseItems-Array können mehrere Elemente angegeben werden. Jeder Elementname muss eindeutig sein und muss einem Element im Attribut supportedDispenseItems entsprechen.

BEISPIELE für Geräte

Geräte mit diesem Merkmal können im Rahmen des EXECUTE-Vorgangs auf die folgenden Befehle reagieren. Weitere Informationen zum Verarbeiten von EXECUTE-Intents finden Sie unter Intent-Auftragsausführung.

action.devices.commands.Dispense

Artikel ausgeben.

Parameter

Die Nutzlast enthält eine der folgenden Optionen:

Ausgaben:

Parameter Typ Beschreibung
item String

Der Name des Artikels, der über das Attribut item_name ausgegeben werden soll.

amount Number

Erforderlich.

Ausgaben.

unit String

Erforderlich.

Einheit für die amount aus dem Attribut supported_units.

Gibt standardmäßig aus.

Parameter Typ Beschreibung
presetName String

Erforderlich.

Name der Voreinstellung, die mit dem Attribut preset_name ausgegeben werden soll.

Ohne Parameter ausgeben.

Parameter Typ Beschreibung

Keine Attribute

Beispiele

Gib mir eine Tasse Wasser.

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

Fülle den Wassernapf für die Katze.

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

Wasser ausgeben.

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

Gerät ERRORS

Hier finden Sie die vollständige Liste der Fehler und Ausnahmen.
  • dispenseAmountRemainingExceeded: Der Nutzer hat versucht, einen Artikel oder ein Betrag von einem Gerät auszugeben, auf dem nicht genug Guthaben vorhanden ist.
  • dispenseAmountAboveLimit: Der Nutzer hat versucht, einen Betrag auszugeben, der über die Anforderungen in einer einzelnen Abfrage hinausgeht. So wird verhindert, dass versehentlich eine übermäßige Menge ausgegeben wird (z. B. 500.000 Tassen Wasser).
  • dispenseAmountBelowLimit: Der Nutzer hat versucht, einen Artikel oder einen Betrag vom Gerät auszugeben, das unter dem Mindestbetrag liegt.
  • dispenseFractionalAmountNotSupported: Der Nutzer hat versucht, einen Bruchteil eines Artikels auszugeben, den das Gerät nicht teilen kann (z. B. wenn zählbare Elemente wie Hundeleckerli vom Gerät nicht teilbar sind).
  • genericDispenseNotSupported: Der Nutzer versucht, ein Gerät auszugeben, ohne ein Element oder eine Voreinstellung anzugeben, aber das Gerät unterstützt eine solche Funktion nicht (z. B. eine Standardaktion).
  • dispenseUnitNotSupported: Der Nutzer versucht, von einem Gerät auszugeben, dessen Einheit nicht für diesen Fall unterstützt wird. Das Element wurde beispielsweise nicht bereitgestellt, sodass supported_unit validation übersprungen wurde.
  • dispenseFractionalUnitNotSupported: Der Nutzer hat versucht, einen Bruchteil eines Artikels auszugeben, der aufgeteilt werden kann, jedoch nicht für die angegebene Einheit (z.B.kann ein Wasserhahn 2,7 Tassen und nicht 2,7 ml ausgeben).
  • deviceCurrentlyDispensing: Der Nutzer versucht, einen Artikel auszugeben, aber das Gerät gibt ihn bereits aus.
  • deviceClogged: Der Nutzer versucht, einen Artikel auszugeben, aber das Gerät ist verstopft.
  • deviceBusy: Der Nutzer versucht, einen Artikel zu verteilen, aber das Gerät ist nicht bereit.

AUSNAHMEN FÜR DAS Gerät

Diese Ausnahmen können als exceptionCode im states-Objekt deiner Antwort gemeldet werden:

  • amountRemainingLow: Der Nutzer gibt einen Artikel oder einen Betrag vom Gerät aus, wodurch der verbleibende Betrag auf ein niedriges Niveau gebracht wird. Sie sind dafür verantwortlich, eine „niedrige“ Ebene zu definieren.
  • userNeedsToWait: Wenn der Nutzer warten muss, bis das angeforderte Element oder die Menge erfolgreich ausgegeben werden kann (z. B. gibt ein Wasserhahn Warmwasser ab, muss aber warten, bis das Wasser erhitzt ist, bevor er beginnt).