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

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

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

डिवाइस की ATTRIBUTES

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

विशेषताएं टाइप ब्यौरा
supportedDispenseItems ऐरे

इसमें उन सभी आइटम के बारे में जानकारी होती है जिन्हें डिवाइस से निकाला जा सकता है.

[item, ...] ऑब्जेक्ट

डिस्पेंस किया जा सकने वाला आइटम.

item_name String

ज़रूरी है.

डिस्पेंस किए गए आइटम का इंटरनल नाम. यह उपयोगकर्ता के लिए आसान नहीं होता. साथ ही, इसे सभी भाषाओं में शेयर किया जाता है.

item_name_synonyms ऐरे

ज़रूरी है.

हर भाषा में, दवा के नाम के समानार्थी शब्द.

[item, ...] ऑब्जेक्ट

किसी भाषा में दिए गए आइटम के लिए मिलते-जुलते नाम. भाषा फ़ॉलबैक की सुविधा देने के लिए, कम से कम एक ऐसा आइटम होना चाहिए जिसकी lang वैल्यू en हो.

synonyms ऐरे

ज़रूरी है.

डिस्पेंस किए गए आइटम के लिए समानार्थी शब्द. अगर लागू हो, तो समानार्थी शब्दों में एकवचन और बहुवचन, दोनों शामिल होने चाहिए. इस सूची में पहली स्ट्रिंग, उस भाषा में आइटम का प्लुरल फ़ॉर्म होना चाहिए.

[item, ...] String

समानार्थी शब्द का नाम. भाषा फ़ॉलबैक की सुविधा देने के लिए, कम से कम एक ऐसा आइटम होना चाहिए जिसकी lang वैल्यू en हो.

lang String

ज़रूरी है.

भाषा कोड (ISO 639-1). यह सुविधा देने वाली भाषाएं देखें.

supported_units ऐरे

ज़रूरी है.

यह उन इकाइयों का सेट होता है जिनमें डिवाइस, उस आइटम के लिए काम करता है.

[item, ...] String

इस्तेमाल की जा सकने वाली इकाइयां.

इस्तेमाल की जा सकने वाली वैल्यू:

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

item_name एट्रिब्यूट की वैल्यू के तौर पर दिए गए आइटम का नाम.

amountRemaining ऑब्जेक्ट

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

amount Number

बची हुई रकम

unit String

supported_units एट्रिब्यूट की amount वैल्यू के लिए यूनिट.

amountLastDispensed ऑब्जेक्ट

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

amount Number

बची हुई रकम

unit String

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 एट्रिब्यूट में मौजूद किसी सामान से मेल खाना चाहिए.

डिवाइस के लिए उपलब्ध COMMANDS

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

action.devices.commands.Dispense

सामान देना.

पैरामीटर

पेलोड में इनमें से कोई एक जानकारी शामिल होती है:

रकम के हिसाब से पैसे निकालें.

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

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

amount Number

ज़रूरी है.

डिस्पेंस की जाने वाली रकम.

unit String

ज़रूरी है.

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

प्रीसेट के हिसाब से दवा देना.

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

ज़रूरी है.

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: उपयोगकर्ता किसी आइटम को डिस्पेंस करने की कोशिश करता है, लेकिन डिवाइस व्यस्त है (सामान्य).

डिवाइस से जुड़ी गड़बड़ियां

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

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