स्मार्ट होम डिस्पेंस ट्रेट स्कीमा
action.devices.traits.Dispense - यह विशेषता उन डिवाइसों के लिए है जो एक या उससे ज़्यादा फ़िज़िकल आइटम की तय की गई मात्रा को डिस्पेंस करने की सुविधा देते हैं.
इस विशेषता की मदद से, प्रीसेट भी दिया जा सकता है. उदाहरण के लिए, पालतू जानवरों को खाना खिलाने वाले डिवाइस के लिए "बिल्ली के खाने का कटोरा" या नल के लिए "गिलास".
डिवाइस की ATTRIBUTES
इस ट्रेट वाले डिवाइस, SYNC ऑपरेशन के तहत इन एट्रिब्यूट की जानकारी दे सकते हैं. SYNC इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट फ़ुलफ़िलमेंट देखें.
| विशेषताएं | टाइप | ब्यौरा | 
|---|---|---|
| supportedDispenseItems | ऐरे | इसमें उन सभी आइटम के बारे में जानकारी होती है जिन्हें डिवाइस से निकाला जा सकता है. | 
| [item, ...] | ऑब्जेक्ट | डिस्पेंस किया जा सकने वाला आइटम. | 
| item_name | String | ज़रूरी है. डिस्पेंस किए गए आइटम का इंटरनल नाम. यह उपयोगकर्ता के लिए आसान नहीं होता. साथ ही, इसे सभी भाषाओं में शेयर किया जाता है. | 
| item_name_synonyms | ऐरे | ज़रूरी है. हर भाषा में, दवा के नाम के समानार्थी शब्द. | 
| [item, ...] | ऑब्जेक्ट | किसी भाषा में दिए गए आइटम के लिए मिलते-जुलते नाम. भाषा फ़ॉलबैक की सुविधा देने के लिए, कम से कम एक ऐसा आइटम होना चाहिए जिसकी  | 
| synonyms | ऐरे | ज़रूरी है. डिस्पेंस किए गए आइटम के लिए समानार्थी शब्द. अगर लागू हो, तो समानार्थी शब्दों में एकवचन और बहुवचन, दोनों शामिल होने चाहिए. इस सूची में पहली स्ट्रिंग, उस भाषा में आइटम का प्लुरल फ़ॉर्म होना चाहिए. | 
| [item, ...] | String | समानार्थी शब्द का नाम. भाषा फ़ॉलबैक की सुविधा देने के लिए, कम से कम एक ऐसा आइटम होना चाहिए जिसकी  | 
| lang | String | ज़रूरी है. भाषा कोड (ISO 639-1). यह सुविधा देने वाली भाषाएं देखें. | 
| supported_units | ऐरे | ज़रूरी है. यह उन इकाइयों का सेट होता है जिनमें डिवाइस, उस आइटम के लिए काम करता है. | 
| [item, ...] | String | इस्तेमाल की जा सकने वाली इकाइयां. इस्तेमाल की जा सकने वाली वैल्यू: 
 | 
| default_portion | ऑब्जेक्ट | ज़रूरी है. इस प्रॉपर्टी का इस्तेमाल, यह बताने के लिए किया जाता है कि किसी प्रॉडक्ट को कितनी मात्रा में बेचा जा सकता है. | 
| amount | Integer | ज़रूरी है. दवा की मात्रा. | 
| unit | String | ज़रूरी है. डिस्पेंस की गई यूनिट. | 
| supportedDispensePresets | ऐरे | डिवाइस पर काम करने वाले प्रीसेट. | 
| [item, ...] | ऑब्जेक्ट | प्रीसेट. | 
| preset_name | String | ज़रूरी है. प्रीसेट का इंटरनल नाम. यह नाम, उपयोगकर्ता के हिसाब से सही नहीं हो सकता. साथ ही, इसे सभी भाषाओं में शेयर किया जाता है. | 
| preset_name_synonyms | ऐरे | ज़रूरी है. हर भाषा में, प्रीसेट के लिए मिलते-जुलते नाम. | 
| [item, ...] | ऑब्जेक्ट | किसी भाषा में प्रीसेट के लिए समानार्थी नाम. | 
| synonyms | ऐरे | ज़रूरी है. प्रीसेट के लिए समानार्थी नाम. समानार्थी शब्दों में, एकवचन और बहुवचन, दोनों रूप शामिल होने चाहिए. | 
| [item, ...] | String | समानार्थी शब्द का नाम | 
| lang | String | ज़रूरी है. भाषा कोड (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 | String | 
 | 
| amountRemaining | ऑब्जेक्ट | डिवाइस में मौजूद उस आइटम की मात्रा. अगर डिवाइस से दवा निकल रही है, तो इससे दवा की बची हुई मात्रा या दवा निकलने की प्रोसेस पूरी होने के बाद दवा की मात्रा का पता चलता है. | 
| amount | Number | बची हुई रकम | 
| unit | String | 
 | 
| amountLastDispensed | ऑब्जेक्ट | डिवाइस ने हाल ही में उस आइटम की कितनी मात्रा दी है. अगर डिवाइस से दवा निकल रही है, तो इस वैल्यू में, दवा निकलने की मौजूदा मात्रा से पहले निकली दवा की मात्रा की जानकारी होनी चाहिए. | 
| amount | Number | बची हुई रकम | 
| unit | String | 
 | 
| 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 एट्रिब्यूट में मौजूद किसी सामान से मेल खाना चाहिए.
डिवाइस के लिए उपलब्ध COMMANDS
इस सुविधा वाले डिवाइस, EXECUTE ऑपरेशन के तहत इन कमांड का जवाब दे सकते हैं. EXECUTE इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट फ़ुलफ़िलमेंट देखें.
action.devices.commands.Dispense
सामान देना.
पैरामीटर
पेलोड में इनमें से कोई एक जानकारी शामिल होती है:
रकम के हिसाब से पैसे निकालें.
| पैरामीटर | टाइप | ब्यौरा | 
|---|---|---|
| item | String | 
 | 
| amount | Number | ज़रूरी है. डिस्पेंस की जाने वाली रकम. | 
| unit | String | ज़रूरी है. 
 | 
प्रीसेट के हिसाब से दवा देना.
| पैरामीटर | टाइप | ब्यौरा | 
|---|---|---|
| presetName | String | ज़रूरी है. 
 | 
बिना पैरामीटर के डिस्पेंस करें.
| पैरामीटर | टाइप | ब्यौरा | 
|---|---|---|
| कोई प्रॉपर्टी नहीं | ||
उदाहरण
मुझे एक कप पानी दो.
{
  "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: उपयोगकर्ता किसी आइटम को डिस्पेंस करने की कोशिश करता है, लेकिन डिवाइस व्यस्त है (सामान्य).
डिवाइस से जुड़ी गड़बड़ियां
इन अपवादों की जानकारी, आपके जवाब के exceptionCode ऑब्जेक्ट में exceptionCode के तौर पर दी जा सकती है:states
- amountRemainingLow- उपयोगकर्ता, डिवाइस से कोई आइटम या रकम निकालता है. इससे डिवाइस में बची हुई रकम कम हो जाती है. "कम" लेवल की परिभाषा तय करने की ज़िम्मेदारी आपकी है.
- userNeedsToWait- जब उपयोगकर्ता को अनुरोध किए गए आइटम या रकम के लिए इंतज़ार करना पड़े. उदाहरण के लिए, नल से गर्म पानी निकलता है, लेकिन उपयोगकर्ता को पानी गर्म होने तक इंतज़ार करना पड़ता है.