Android पर Automation API की खास जानकारी

ऑटोमेशन की मदद से, घर में टास्क और डिवाइस की सेटिंग को ऑटोमेट किया जा सकता है. Google Home के इकोसिस्टम में, ऑटोमेशन की सुविधा Google Home app (GHA) में रूटीन के तौर पर उपलब्ध है. इसके अलावा, इसे automation script editor पर मौजूद Google Home for web की मदद से भी इस्तेमाल किया जा सकता है.

अब Google Home के इकोसिस्टम में, ऑटोमेशन की सुविधा Android के लिए Home API की मदद से भी उपलब्ध है. इनमें GHA रूटीन और script editor में इस्तेमाल किए जाने वाले बुनियादी सिद्धांतों का इस्तेमाल किया जाता है. हालांकि, इनमें बेहतर सुविधाएं और क्षमताएं होती हैं. ये सुविधाएं और क्षमताएं सिर्फ़ Home API की मदद से उपलब्ध होती हैं. इनमें ये शामिल हैं:

  • किसी डिवाइस के लिए, सभी Matter स्टैंडर्ड और smart home प्रॉपर्टी को ऐक्सेस करना. ये प्रॉपर्टी, Home API में दिखती हैं.
  • सीक्वेंशियल, पैरलल, और चुनिंदा एक्ज़ीक्यूशन फ़्लो के लिए सहायता.

ऑटोमेशन, Automation DSL का इस्तेमाल करके लिखे जाते हैं. यह खास तौर पर डोमेन के लिए बनी लैंग्वेज है, जिसे Kotlin में ऑटोमेशन बनाने के लिए डिज़ाइन किया गया है.

डिवाइस और स्ट्रक्चर या Automation API की मदद से, अपने ऐप्लिकेशन में इस्तेमाल की जाने वाली सभी प्रॉपर्टी और टाइप को, शुरू में ही रजिस्टर करना होगा. Android पर होम को शुरू करने का तरीका देखें .

उपयोगकर्ता के सभी अनुमतियां वापस लेने पर दिशा-निर्देश

अगर उपयोगकर्ता सभी अनुमतियां वापस ले लेता है, तो मौजूदा सभी ऑटोमेशन काम करना बंद कर देंगे. इसके अलावा, अगर उपयोगकर्ता कुछ डिवाइसों के लिए ऐक्सेस वापस ले लेता है, तो उन डिवाइसों से जुड़े स्टार्टर, शर्तें, और कार्रवाइयां काम करना बंद कर देंगी.

हर बार ऐप्लिकेशन शुरू होने पर, यह पक्का करें कि अनुमतियां अब भी लागू हैं. अगर अनुमतियां वापस ले ली गई हैं, तो यह पक्का करें कि पिछला सारा डेटा हटा दिया गया है. इसमें ऐप्लिकेशन में कैश किया गया डेटा भी शामिल है.

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

डेवलपर का अनुभव

Automation API, डेवलपमेंट के बड़े अनुभव का एक हिस्सा है. इसे स्ट्रक्चर और डिवाइस API को इंटिग्रेट करने के बाद इस्तेमाल किया जाता है, ताकि यह पक्का किया जा सके कि उपयोगकर्ता जब चाहें, तब ऑटोमेशन का इस्तेमाल कर सकें.

  1. डेवलपर, अपने ऑटोमेशन की योजना बनाता है और Automation DSL का इस्तेमाल करके इसे तय करता है.
  2. डेवलपर, ऑटोमेशन की परिभाषा को Kotlin Android ऐप्लिकेशन में एम्बेड करता है.
  3. ऐप्लिकेशन, उपयोगकर्ताओं को उनके डिवाइसों के बारे में जानकारी के आधार पर ऑटोमेशन दिखाता है. इसमें प्रॉपर्टी, एट्रिब्यूट, कमांड, और इवेंट शामिल हैं. यह जानकारी, Discovery API या Device API का इस्तेमाल करके इकट्ठा की जाती है.
    1. Discovery API की मदद से, ऐप्लिकेशन, ऑटोमेशन का ड्राफ़्ट जनरेट कर सकता है. इसे उपयोगकर्ता के स्ट्रक्चर में मौजूद डिवाइस के टाइप और प्रॉपर्टी के हिसाब से बनाया जाता है. इसके लिए, उपयोगकर्ता की इनपुट की ज़रूरत पड़ भी सकती है और नहीं भी.
    2. Device API, Discovery API के जैसी ही ज़्यादातर जानकारी दे सकता है. हालांकि, इसे ऑटोमेशन के इस्तेमाल के लिए ऑप्टिमाइज़ नहीं किया गया है. ज़्यादा जानकारी के लिए, Device API और Discovery API की तुलना देखें.
  4. ऐप्लिकेशन, असली ऑटोमेशन बनाता है. इसे चुने गए स्ट्रक्चर के हिसाब से बनाया जाता है.
  5. ऑटोमेशन अब उपयोगकर्ता के स्ट्रक्चर में उपलब्ध है. इसे स्ट्रक्चर API के तरीकों का इस्तेमाल करके, एक्ज़ीक्यूट या मिटाया जा सकता है.

उपयोगकर्ता, किसी भी समय ऑटोमेशन के नए इंस्टेंस बना सकता है. इसके लिए, वह कोई दूसरा स्ट्रक्चर चुन सकता है या ऐप्लिकेशन के लॉजिक के हिसाब से, डिवाइसों का कोई दूसरा सेट चुन सकता है. ऐसा करने पर, ऐप्लिकेशन, ऑटोमेशन का नया इंस्टेंस जनरेट करता है.

सबसे बुनियादी स्थिति में, अपने उपयोगकर्ताओं को पहले से तय किया गया ऐसा ऑटोमेशन सुझाया जा सकता है जो अपेक्षाकृत बुनियादी टास्क करता हो. इसके अलावा, ऑटोमेशन का ऐसा ढांचा दिखाया जा सकता है जिसे उपयोगकर्ता अपनी ज़रूरत के हिसाब से बना सके. या फिर, ऐसा ओपन-एंडेड ऑटोमेशन एडिटर लिखा जा सकता है जिसकी मदद से उपयोगकर्ता, Automation API में उपलब्ध सभी बिल्डिंग ब्लॉक का इस्तेमाल करके, जटिल ऑटोमेशन बना सके.

ऑटोमेशन के सुझाव

Home API, Structure के लिए ऑटोमेशन के सुझाव दे सकता है. ये सुझाव, स्पेस में मौजूद डिवाइस के टाइप जैसे फ़ैक्टर के आधार पर दिए जाते हैं.

ऑटोमेशन के सुझावों को AutomationSuggestion क्लास से दिखाया जाता है.

Structure इंटरफ़ेस में HasSuggestions इंटरफ़ेस शामिल होता है. यह suggestions() फ़ंक्शन उपलब्ध कराता है. यह फ़ंक्शन, ऑटोमेशन के सुझावों का कलेक्शन दिखाता है.

The likeSuggestion() और dislikeSuggestion() तरीकों को, और यूज़र इंटरफ़ेस (यूआई) कंट्रोल से जोड़ा जाता है. उपयोगकर्ता, सुझाव/राय देने के लिए इन पर टैप कर सकता है.

तीसरा तरीका, clearSuggestionFeedback(), है. इसकी मदद से, उपयोगकर्ता, सुझाए गए ऑटोमेशन के लिए अपनी राय हटा सकता है.

उपयोगकर्ता की राय के आधार पर, आने वाले समय में सुझाव दिए जाते हैं.

इस उदाहरण में बताया गया है कि किसी Structure के लिए, उपलब्ध ऑटोमेशन के सुझाव कैसे वापस पाएं, सुझाव का आईडी कैसे निकालें, और likeSuggestion(), clearSuggestionFeedback(), और dislikeSuggestion() का इस्तेमाल करके, उपयोगकर्ता की राय कैसे रिकॉर्ड करें.

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.home.Structure
import kotlinx.coroutines.launch

class AutomationSuggestionsViewModel(private val structure: Structure) : ViewModel() {

  fun loadAndGiveFeedback() {
    viewModelScope.launch {
      // 1. Fetch suggestions from structure
      val suggestions = structure.suggestions()
      val firstSuggestion = suggestions.firstOrNull() ?: return@launch

      // Extract string suggestion ID
      val suggestionId: String = firstSuggestion.id.id

      // 2. Like the suggestion (thumbs up)
      val liked = structure.likeSuggestion(suggestionId)

      // 3. Clear previous feedback if the user toggled it off
      if (liked) {
        structure.clearSuggestionFeedback(suggestionId)
      }

      // 4. Dislike the suggestion (thumbs down)
      structure.dislikeSuggestion(suggestionId)
    }
  }
}

संसाधन की सीमाएं

Home API में ऑटोमेशन पर ये सीमाएं लागू होती हैं:

टेबल: Automation API के संसाधन की सीमाएं
मेट्रिक सीमा
हर स्ट्रक्चर के लिए, ऑटोमेशन की ज़्यादा से ज़्यादा संख्या 64
हर ऑटोमेशन के लिए, नोड की ज़्यादा से ज़्यादा संख्या 128
हर ऑटोमेशन के लिए, एक्सप्रेशन नोड की ज़्यादा से ज़्यादा संख्या 64
हर स्ट्रक्चर के लिए, ऑटोमेशन के इंस्टेंस की ज़्यादा से ज़्यादा संख्या 1024
हर स्ट्रक्चर के लिए, हर डेवलपर के लिए ऑटोमेशन के इंस्टेंस की ज़्यादा से ज़्यादा संख्या 64
हर स्ट्रक्चर के लिए, हर दिन एक्ज़ीक्यूशन की ज़्यादा से ज़्यादा संख्या 1024
हर स्ट्रक्चर के लिए, हर डेवलपर के लिए हर दिन एक्ज़ीक्यूशन की ज़्यादा से ज़्यादा संख्या 128