स्मार्ट होम डिस्पेंस ट्रेल स्कीमा

action.devices.traits.Dispense - यह विशेषता उन डिवाइस से जुड़ी है जो एक या ज़्यादा फ़िज़िकल आइटम देने की सुविधा देते हैं.

इस एट्रिब्यूट की मदद से प्रीसेट भी बनाया जा सकता है. जैसे, पालतू जानवरों के फ़ीड के लिए "बिल्ली का खाना" या नल के लिए "ग्लास".

डिवाइस की विशेषताएं

इस सुविधा का इस्तेमाल करने वाले डिवाइस, 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 Integer

ज़रूरी है.

रकम दी गई.

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 Number

बची हुई रकम

unit स्ट्रिंग

supported_units एट्रिब्यूट से ली गई amount के लिए यूनिट.

amountLastDispensed ऑब्जेक्ट

डिवाइस से हाल ही में दिए गए आइटम की संख्या. अगर डिवाइस फ़िलहाल दिया जा रहा है, तो इससे पहले दी गई रकम की जानकारी, उससे पहले दी गई रकम के बारे में होनी चाहिए.

amount Number

बची हुई रकम

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

amountRemaining और amountLastDispensed की परफ़ॉर्मेंस को मेज़र करने के लिए, मेज़रमेंट की एक ही यूनिट का इस्तेमाल करना होता है.

dispenseItems कलेक्शन में एक से ज़्यादा आइटम दिए जा सकते हैं. हर आइटम का नाम अलग होना चाहिए. साथ ही, यह supportedDispenseItems एट्रिब्यूट में दिए गए आइटम से मेल खाना चाहिए.

डिवाइस के निर्देश

इस सुविधा का इस्तेमाल करने वाले डिवाइस, EXECUTE की कार्रवाई के तहत, इन निर्देशों का पालन कर सकते हैं. EXECUTE इंटेंट को हैंडल करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना देखें.

action.devices.commands.Dispense

डिस्पेंस आइटम.

पैरामीटर

पेलोड में इनमें से कोई एक चीज़ होती है:

राशि के हिसाब से डिस्पेंस करें.

पैरामीटर टाइप ब्यौरा
item स्ट्रिंग

item_name एट्रिब्यूट से डिस्पेंस करने के लिए आइटम का नाम.

amount Number

ज़रूरी है.

बांटने की रकम.

unit स्ट्रिंग

ज़रूरी है.

supported_units एट्रिब्यूट से ली गई amount की यूनिट.

प्रीसेट से भेजें.

पैरामीटर टाइप ब्यौरा
presetName स्ट्रिंग

ज़रूरी है.

preset_name एट्रिब्यूट से, वैल्यू देने के लिए प्रीसेट का नाम.

बिना पैरामीटर के भेजें.

पैरामीटर टाइप ब्यौरा

कोई प्रॉपर्टी नहीं

उदाहरण

मुझे एक कप पानी दो.

{
  "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 उपयोगकर्ता ने एक ही क्वेरी करते समय, अपनी ओर से मांगी जाने वाली रकम की सीमा से ज़्यादा पैसे भेजने की कोशिश की है. ऐसा गलती से, बहुत ज़्यादा मात्रा में पानी निकालने से रोकने के लिए किया जाता है. उदाहरण के लिए, 5,00,000 कप पानी.
  • dispenseAmountBelowLimit उपयोगकर्ता ने डिवाइस या किसी ऐसे डिवाइस से आइटम या रकम देने की कोशिश की है जो डिवाइस से कम से कम दिया जा सकता हो.
  • dispenseFractionalAmountNotSupported: उपयोगकर्ता ने ऐसे आइटम को कुछ हद तक बांटने की कोशिश की है जिसे डिवाइस नहीं बांट सकता. उदाहरण के लिए, हो सकता है कि कुत्तों के लिए ट्रीट जैसे गिनती किए जा सकने वाले आइटम को डिवाइस से न बांटा जा सके.
  • genericDispenseNotSupported अगर उपयोगकर्ता किसी आइटम या प्रीसेट के बारे में बताने के बिना, डिवाइस से ऐप्लिकेशन को उपलब्ध कराने की कोशिश करता है, लेकिन डिवाइस पर ऐसी सुविधा काम नहीं करती (जैसे, कोई डिफ़ॉल्ट कार्रवाई).
  • (dispenseUnitNotSupported) उपयोगकर्ता किसी ऐसे डिवाइस से डिस्पले करने की कोशिश करता है जिस पर यह मामला काम नहीं करता. उदाहरण के लिए, आइटम उपलब्ध नहीं कराया गया है, इसलिए supported_unit validation को छोड़ दिया गया है.
  • dispenseFractionalUnitNotSupported उपयोगकर्ता ने ऐसे आइटम के लिए थोड़ी-थोड़ी मात्रा डाली है जिसे बांटा जा सकता है, लेकिन किसी खास यूनिट के लिए नहीं दिया जा सकता. उदाहरण के लिए, नल 2.7 कप दे सकता है, लेकिन 2.7 मि॰ली॰ नहीं.
  • deviceCurrentlyDispensing उपयोगकर्ता किसी आइटम को भेजने की कोशिश करते हैं, लेकिन डिवाइस पहले से ही दिया जा रहा है.
  • deviceClogged उपयोगकर्ता किसी आइटम को बांटने की कोशिश करते हैं, लेकिन डिवाइस में कुछ लगा होता है.
  • deviceBusy उपयोगकर्ता कोई आइटम भेजने की कोशिश करते हैं, लेकिन डिवाइस व्यस्त है (सामान्य).

डिवाइस छूट

इन अपवादों को आपके जवाब के states ऑब्जेक्ट में, exceptionCode के तौर पर रिपोर्ट किया जा सकता है:

  • amountRemainingLow - उपयोगकर्ता, डिवाइस से कोई आइटम या रकम बाहर निकाल देता है जो बची हुई रकम को नीचे के लेवल पर पहुंचा देती है. "खराब" लेवल तय करने की ज़िम्मेदारी आपकी है.
  • userNeedsToWait - जब अनुरोध किए गए आइटम या रकम के हटने से पहले उपयोगकर्ता को इंतज़ार करना पड़ता है (उदाहरण के लिए, किसी नल को गर्म पानी देना पड़ सकता है, लेकिन इंतज़ार करने से पहले उपयोगकर्ता को पानी गर्म होने का इंतज़ार करना होगा).