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

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

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

डिवाइस के एट्रिब्यूट

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

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

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

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

ऐसा आइटम जिसे बेचा जा सकता है.

item_name String

ज़रूरी है.

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

item_name_synonyms कलेक्शन

ज़रूरी है.

काम करने वाली हर भाषा में, डिस्पेंस किए जाने वाले प्रॉडक्ट के लिए, मिलते-जुलते नाम.

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

किसी भाषा में, डिस्पेंस किए गए आइटम के लिए, मिलते-जुलते नाम.

synonyms कलेक्शन

ज़रूरी है.

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

[item, ...] String

समानार्थी शब्द का नाम

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

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

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

डिवाइस से जुड़े अपवाद

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

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