iOS पर Home के एपीआई का इस्तेमाल करके मोबाइल ऐप्लिकेशन बनाना

1. परिचय

f154e30306882c74.png

Home API क्या हैं?

Google Home API, डेवलपर के लिए लाइब्रेरी का एक सेट उपलब्ध कराते हैं. इससे डेवलपर, Google Home के ईकोसिस्टम का इस्तेमाल कर पाते हैं. Home API की मदद से, डेवलपर ऐसे ऐप्लिकेशन बना सकते हैं जो स्मार्ट होम डिवाइसों को आसानी से चालू और कंट्रोल कर सकें.

3e11583c779a2cec.png

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

Home APIs के कॉम्पोनेंट

होम एपीआई में ये शामिल हैं:

  • डिवाइस और स्ट्रक्चर एपीआई: किसी उपयोगकर्ता के घर से इंटरैक्ट करें. ऐप्लिकेशन, इन एपीआई का इस्तेमाल करके डिवाइसों, कमरों, और स्ट्रक्चर के बारे में जानकारी पढ़ सकते हैं. उदाहरण के लिए, थर्मोस्टैट का मौजूदा तापमान देखना. साथ ही, डिवाइसों को कंट्रोल कर सकते हैं. उदाहरण के लिए, थर्मोस्टैट का सेटपॉइंट बदलना.
  • कमीशनिंग एपीआई: इसकी मदद से, कम समय में फ़ैब्रिक में नए Matter डिवाइसों को कमीशन (सेट अप) किया जा सकता है.
  • ऑटोमेशन एपीआई: इसकी मदद से, उपयोगकर्ता के घर में चल रहे ऑटोमेशन बनाए, मिटाए, और उनसे जुड़ी क्वेरी की जा सकती हैं.

ज़रूरी शर्तें

  • Xcode का सबसे नया स्टेबल वर्शन.
  • ऐसा Google खाता जिसमें होम में कम से कम एक स्ट्रक्चर हो.
  • iOS 16.4 या इसके बाद के वर्शन पर काम करने वाला iOS डिवाइस, जिसे टेस्ट खाते से सेट अप किया गया हो.
  • प्रोविज़निंग प्रोफ़ाइल जनरेट करने के लिए, Apple Developer Program में रजिस्टर किया गया Apple ID.
  • Google हब, जो Home API के साथ काम करता हो.

आपको क्या सीखने को मिलेगा

  • सबसे सही तरीकों का इस्तेमाल करके, Home API की मदद से iOS ऐप्लिकेशन बनाने का तरीका.
  • स्मार्ट होम को कंट्रोल करने और उसे दिखाने के लिए, डिवाइस और स्ट्रक्चर एपीआई का इस्तेमाल कैसे करें.
  • Google Home के ईकोसिस्टम में डिवाइसों को जोड़ने के लिए, Commissioning API का इस्तेमाल कैसे करें.
  • ऑटोमेशन एपीआई का इस्तेमाल करके, बुनियादी ऑटोमेशन बनाने का तरीका.

2. 'आपका घर' सेक्शन सेट अप करना

डिवाइसों को तैयार करना

Google Home Playground में, पहले से बनाए गए कई स्मार्ट होम डिवाइसों को इम्यूलेट करने की सुविधा मिलती है. हमारा सुझाव है कि आप इसका इस्तेमाल करें, ताकि Home API की पूरी क्षमता का पता लगाया जा सके. खास तौर पर, अगर आपके घर में कम डिवाइस हैं, तो इसका इस्तेमाल करना फ़ायदेमंद होगा.

Google Home ऐप्लिकेशन में, Google Home Playground में साइन इन करने और खाता लिंक करने की प्रोसेस पूरी करने के लिए दिए गए निर्देशों का पालन करें. इसके बाद, आपको Google Home ऐप्लिकेशन के "डिवाइस" टैब में डिवाइस दिखने चाहिए.

c892afce113abe8f.png

3. सेट अप करना

सैंपल ऐप्लिकेशन का कोड पाना

GitHub से सोर्स कोड क्लोन करके शुरू करें:

git clone https://github.com/google-home/google-home-api-sample-app-ios.git

इस कोडलैब के लिए, सैंपल डायरेक्ट्री में दो ब्रांच, start और finished शामिल हैं.

  • start: इस प्रोजेक्ट के लिए स्टार्टर कोड, जिसमें आपको कोडलैब पूरा करने के लिए बदलाव करने होंगे.
  • finished: इस कोडलैब के लिए पूरा किया गया कोड, जिसका इस्तेमाल आपके काम की जांच करने के लिए किया जाता है.

'start' कोड के बारे में जानें

इस कोडलैब को शुरू करने के लिए, क्लोन की गई अपनी रिपॉज़िटरी की start शाखा पर स्विच करें:

git checkout start

इस ब्रांच में, प्रोजेक्ट के लिए स्टार्टर कोड मौजूद है. इस कोडलैब में, आपको इस कोड में बदलाव करना होगा, ताकि पूरी सुविधा लागू की जा सके. कोडलैब के सैंपल ऐप्लिकेशन में, Home APIs iOS SDK के साथ इंटरैक्ट करने के लिए, Swift में बनाया गया बेसिक स्ट्रक्चर दिया गया है. आइए, start प्रोजेक्ट में मौजूद मुख्य कॉम्पोनेंट पर एक नज़र डालें:

  • Main Entry (GoogleHomeAPISampleIOSApp): यह GoogleHomeAPISampleIOS/Main/GoogleHomeAPISampleIOS.swift में मौजूद है. यह ऐप्लिकेशन का मुख्य एंट्री पॉइंट है. यह एसडीके को कॉन्फ़िगर और शुरू करता है. साथ ही, प्राइमरी यूज़र इंटरफ़ेस सेट अप करता है.
  • Core Views (View/):
    • MainView.swift: यह ऐप्लिकेशन लॉन्च होने के बाद दिखने वाला रूट व्यू है. इसमें मुख्य NavigationView शामिल होता है. यह कुकी, चालू Google Home स्ट्रक्चर को चुनने और उससे जुड़ा StructureView दिखाने का काम करती है.
    • StructureView.swift: इससे, चुने गए स्ट्रक्चर का कॉन्टेंट दिखता है. डिवाइसों के ग्रिड और ऑटोमेशन की सूची के बीच स्विच करने के लिए, टैब का इस्तेमाल किया जाता है. इसमें कमरे या डिवाइस जोड़ने के लिए मेन्यू भी दिए गए हैं.
    • DeviceView.swift: यह StructureView ग्रिड में मौजूद किसी एक डिवाइस के लिए इंटरैक्टिव टाइल को दिखाता है.
    • AutomationsView.swift: इससे स्ट्रक्चर के लिए, मौजूदा ऑटोमेशन की सूची दिखती है. साथ ही, ऑटोमेशन की जानकारी बनाने या देखने के लिए नेविगेशन मिलता है.
  • ViewModels (ViewModel/): ये क्लास, व्यू के लिए स्टेट और लॉजिक को मैनेज करती हैं.
    • AccountViewModel.swift: यह Home ऑब्जेक्ट से कनेक्शन को हैंडल करता है और पुष्टि करने की स्थिति को मैनेज करता है.
    • MainViewModel.swift: यह उपलब्ध Structure ऑब्जेक्ट की सूची को मैनेज करता है और चुने गए स्ट्रक्चर को ट्रैक करता है.
    • StructureViewModel.swift: इससे चुने गए स्ट्रक्चर में कमरों और DeviceControl ऑब्जेक्ट को डिसप्ले किया जाता है.
    • AutomationList.swift, AutomationViewModel.swift वगैरह: यह ऑटोमेशन को फ़ेच करने, दिखाने, बनाने, और मैनेज करने का काम करता है.
  • Device Controls (ViewModel/Device/):
    • DeviceControl.swift: यह यूज़र इंटरफ़ेस (यूआई) में कंट्रोल किए जा सकने वाले डिवाइसों को दिखाने के लिए एक बेसिक क्लास है.
    • खास सबक्लास (LightControl.swift, FanControl.swift, OnOffPlugInUnitControl.swift वगैरह): डिवाइस की विशेषताओं के आधार पर, अलग-अलग तरह के डिवाइसों के लिए यूज़र इंटरफ़ेस (यूआई) लॉजिक, डिवाइस कंट्रोल, और स्टेट मैपिंग लागू करें.
    • DeviceControlFactory.swift: यह किसी दिए गए HomeDevice के लिए, सही DeviceControl सबक्लास बनाने के लिए ज़िम्मेदार है.
  • Commissioning (Commissioning/):
    • CommissioningManager.swift: इसमें Matter डिवाइस के कमीशनिंग फ़्लो को मैनेज करने का लॉजिक होता है.
  • Utilities & UX (Utils/, UX/, Storage/): इसमें यूज़र इंटरफ़ेस (यूआई) के एलिमेंट (रंग, डाइमेंशन), गड़बड़ी ठीक करने, डेटा स्टोरेज (SelectedStructureStorage.swift), और अन्य सुविधाओं के लिए हेल्पर कोड होता है.

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

Apple के डिप्लॉयमेंट कॉन्फ़िगरेशन की फ़ाइलें बनाना

App Attest को कॉन्फ़िगर करने के लिए, Apple की डिप्लॉयमेंट कॉन्फ़िगरेशन फ़ाइलें बनाने से जुड़े निर्देशों का पालन करें. ध्यान दें कि सेटअप के बाद, ऐप्लिकेशन को सिर्फ़ किसी असली डिवाइस पर डिप्लॉय किया जा सकता है, न कि सिम्युलेटर में.

पुष्टि करने की सुविधा सेट अप करना

OAuth क्लाइंट आईडी पाने और Home API चालू करने के लिए, सबसे पहले Google Cloud में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें. इसके बाद, OAuth क्लाइंट आईडी जनरेट करने और Home API चालू करने के लिए दिए गए निर्देशों का पालन करें. साथ ही, अपने खाते को अनुमति वाली सूची में जोड़ें.

एसडीके टूल सेट अप करना

Home APIs iOS SDK पाएं और इसे कॉन्फ़िगर करें. इसके लिए, एसडीके सेट अप करें में दिए गए सेटअप निर्देशों का पालन करें. HOME_API_TODO_ADD_APP_GROUP को अपने ऐप्लिकेशन ग्रुप से बदलना न भूलें.

प्रोजेक्ट को बिल्ड और रन करना

start ब्रांच की मदद से प्रोजेक्ट बनाने और उसे चलाने के बाद, TODO डायलॉग और "साइन इन करना ज़रूरी है" मैसेज वाली स्क्रीन दिखनी चाहिए. Home APIs के साथ इंटरैक्ट करने की सुविधा, इन सेक्शन में लागू की जाएगी.

bd56b7080037e38a.png 9c0f08a3f4197a77.png

ध्यान दें: उस कोड का पता लगाएं जिसे बदलना है. इसके लिए, प्रोजेक्ट में उस टेक्स्ट को खोजें जो डायलॉग बॉक्स में दिखता है. उदाहरण के लिए, "TODO: initialize Home" खोजें.

4. डेटा लेयर में इवेंट बनाने की प्रोसेस

Home को शुरू करना

iOS के लिए Home API का इस्तेमाल करने से पहले, आपको अपने ऐप्लिकेशन में Home को शुरू करना होगा. Home, एसडीके में सबसे ऊपर की एंट्री है. इससे उपयोगकर्ता के स्ट्रक्चर में मौजूद सभी इकाइयों का ऐक्सेस मिलता है. किसी खास तरह की सभी इकाइयों का अनुरोध करने पर, एपीआई एक Query ऑब्जेक्ट दिखाता है. इससे यह चुना जा सकता है कि आपको नतीजे कैसे चाहिए. होम इनिशियलाइज़ेशन लागू करने के लिए, GoogleHomeAPISampleIOS/Accounts/AccountViewModel.swift में जाकर connect() में मौजूद टिप्पणी और सूचना हटाएं.

  /// TODO: initialize Home
  /// Remove comments to initialize Home and handling permission.
  private func connect() {
    Task {
      do {
        self.home = try await Home.connect()
      } catch {
        Logger().error("Auth error: \(error).")
      }
    }
  }

Home API इस्तेमाल करने की अनुमति

ऐप्लिकेशन चलाने पर, सहमति लेने वाली स्क्रीन दिखेगी. Google Home स्ट्रक्चर चुनें और वह खाता चुनें जो आपके Google Cloud प्रोजेक्ट की अनुमति वाली सूची में शामिल है.

47310f458c0094d9.png 4a571dbd9979a88c.png e29c75891a3a67af.png

5. डिवाइस और स्ट्रक्चर

कमरे और डिवाइसों की जानकारी पाना

GoogleHomeAPISampleIOS/ViewModel/StructureViewModel.swift में जाकर, टिप्पणी और सूचना को हटा दें. इसके बाद, getRoomsAndDevices() में जाकर, चुने गए स्ट्रक्चर में मौजूद रूम और डिवाइसों को home.rooms() और home.devices() के साथ जोड़ें.

  /// TODO: get rooms and devices
  /// Remove comments to get the rooms and devices from home entry
  private func getRoomsAndDevices(){
    self.home.rooms().batched()
      .combineLatest(self.home.devices().batched())
      .receive(on: DispatchQueue.main)
      .catch { error in
        Logger().error("Failed to load rooms and devices: \(error)")
        return Just((Set<Room>(), Set<HomeDevice>()))
      }
      .map { [weak self] rooms, devices in
        guard let self = self else { return [] }
        self.hasLoaded = true
        return self.process(rooms: rooms, devices: devices)
      }
      /// receive from .map and .assign() to publisher entries
      .assign(to: &self.$entries)
  }

process() फ़ंक्शन, यह पक्का करता है कि डिवाइस एक ही कमरे में हों. इसके बाद, DeviceControl और DeviceControlFactory का इस्तेमाल करके, डिवाइसों को HomeDevices के तौर पर इंटरैक्ट करने की अनुमति देता है.

4c677c4c294e67ca.png

ध्यान दें: अगर आपका डिवाइस DeviceControlFactory में शामिल नहीं है, तो यह "काम नहीं करता" के तौर पर दिखेगा. किन डिवाइसों पर यह सुविधा काम करती है, इस बारे में ज़्यादा जानने के लिए iOS पर काम करने वाले डिवाइसों के टाइप पेज देखें.

किसी डिवाइस के साथ इंटरैक्ट करना

डिवाइसों पर टैप करने या स्लाइड करने पर, प्लग outlet1 शुरू में बंद रहता है. इसके साथ इंटरैक्ट करने की सुविधा चालू करने के लिए, GoogleHomeAPISampleIOS/ViewModel/Device/OnOffPlugInUnitControl.swift ढूंढें. इसके बाद, GoogleHomeAPISampleIOS/ViewModel/Device/OnOffPlugInUnitControl.swift फ़ंक्शन में मौजूद टिप्पणी और सूचना को हटाएं.primaryAction()

  /// TODO: primary action of OnOffPlug
  /// Toggles the plug; usually provided as the `action` callback on a Button.
  public override func primaryAction() {
    self.updateTileInfo(isBusy: true)
    Task { @MainActor [weak self] in
      guard
        let self = self,
        let onOffPluginUnitDeviceType = self.onOffPluginUnitDeviceType,
        let onOffTrait = onOffPluginUnitDeviceType.matterTraits.onOffTrait
      else { return }

      do {
        try await onOffTrait.toggle()
      } catch {
        Logger().error("Failed to to toggle OnOffPluginUnit on/off trait: \(error)")
        self.updateTileInfo(isBusy: false)
      }
    }
  }

primaryAction() क्लास में मौजूद primaryAction() फ़ंक्शन, स्मार्ट प्लग या OnOffPluginUnitDeviceType से दिखाए गए किसी भी डिवाइस को चालू या बंद करता है.OnOffPlugInUnitControl

GoogleHomeAPISampleIOS/ViewModel/Device में, डिवाइस कंट्रोल करने के अतिरिक्त उदाहरण उपलब्ध हैं.

एक नया रूम बनाना

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

GoogleHomeAPISampleIOS/ViewModel/StructureViewModel.swift में जाकर, टिप्पणी और addRoom() में जाकर सूचना हटाएं.

  /// TODO: add room
  /// Add a new room in a given structure.
  func addRoom(name: String, structure: Structure) {
    Task {
      do {
        // The view will be updated with the values from the devices publisher.
        _ = try await structure.createRoom(name: name)
      } catch {
        Logger().error("Failed to create room: \(error)")
      }
    }
  }

structure.createRoom() की मदद से नया कमरा बनाने के लिए, सबसे ऊपर बाईं ओर कोने में जाएं. इसके बाद, "+" आइकॉन > कमरा जोड़ें को चुनें. चैट रूम का नया नाम डालें और "चैट रूम बनाएं" पर क्लिक करें. नया रूम कुछ सेकंड बाद दिखेगा.

b122ae6642b7da1c.png a45f785e1d51938e.png 7753b56cbdcff8d6.png

डिवाइस को किसी दूसरे कमरे में ले जाना

GoogleHomeAPISampleIOS/ViewModel/StructureViewModel.swift में जाकर, टिप्पणी और moveDevice() में जाकर सूचना हटाएं.

  /// TODO: move device
  /// Move a device into a different room.
  func moveDevice(device deviceID: String, to roomID: String, structure: Structure) {
    Task {
      do {
        _ = try await structure.move(device: deviceID, to: roomID)
      } catch {
        Logger().error("Failed to move to room: \(error)")
      }
    }
  }

structure.move() की मदद से डिवाइस की जगह बदलने के लिए, उसे दबाकर रखें. इसके बाद, "किसी दूसरे कमरे में ले जाएं" को चुनें और नया कमरा चुनें.

f9627592af44163d.png fd126fabb454f2bf.png 813e1e23e50cd9f6.png

खाली रूम मिटाना

GoogleHomeAPISampleIOS/ViewModel/StructureViewModel.swift में जाकर, टिप्पणी और removeRoom() में जाकर सूचना हटाएं.

  /// TODO: delete room
  /// Delete an empty room in a given structure.
  func removeRoom(id: String, structure: Structure) {
    Task {
      do {
        // The view will be updated with the values from the devices publisher.
        _ = try await structure.deleteRoom(id: id)
      } catch {
        Logger().error("Failed to remove room: \(error)")
      }
    }
  }

structure.deleteRoom() वाले खाली रूम को मिटाने के लिए, रूम के नाम के दाईं ओर मौजूद ट्रैश आइकॉन पर क्लिक करें. इसके बाद, कार्रवाई की पुष्टि करें. ध्यान दें कि सिर्फ़ खाली कमरों को मिटाया जा सकता है.

4f129262ad67f564.png

ध्यान दें: डिवाइस को वापस ले जाकर, खाली कमरा बनाएं.

6. डिवाइस को सेट अप करना

ध्यान दें: इस सेक्शन के लिए, Google hub और Matter डिवाइस की ज़रूरत होती है. पक्का करें कि आपके स्ट्रक्चर में मौजूद Google Hub ऑनलाइन हो और उस तक पहुंचा जा सके. अगर आपके पास Matter डिवाइस नहीं है, तो इसके बजाय Matter Virtual Device ऐप्लिकेशन का इस्तेमाल करें.

Matter डिवाइस जोड़ना

कमीशनिंग एपीआई की मदद से, आपका ऐप्लिकेशन उपयोगकर्ता के होम और Google खाते में नए Matter डिवाइस जोड़ सकता है. इससे आपको अपने ऐप्लिकेशन में सीधे तौर पर आसानी से सेटअप करने का अनुभव मिलता है.

GoogleHomeAPISampleIOS/Commissioning/CommissioningManager.swift में जाकर, टिप्पणी और addMatterDevice() में जाकर सूचना हटाएं.

  /// TODO: add Matter Device
  /// Starts the Matter device commissioning flow to add the device to the user's home.
  /// - Parameters:
  ///   - structure: The structure to add the device to.
  ///   - add3PFabricFirst: Whether to add the device to a third party fabric first.
  public func addMatterDevice(to structure: Structure, add3PFabricFirst: Bool) {
    self.isCommissioning = true

    /// pass if it's 1p or 3p commissioning
    let userDefaults = UserDefaults(
      suiteName: CommissioningManager.appGroup)
    userDefaults?.set(
    add3PFabricFirst, forKey: CommissioningUserDefaultsKeys.shouldPerform3PFabricCommissioning)

    Task {
      do {
        try await structure.prepareForMatterCommissioning()
      } catch {
        Logger().error("Failed to prepare for Matter Commissioning: \(error).")
        self.isCommissioning = false
        return
      }

      // Prepare the Matter request by providing the ecosystem name and home to be added to.
      let topology = MatterAddDeviceRequest.Topology(
        ecosystemName: "Google Home",
        homes: [MatterAddDeviceRequest.Home(displayName: structure.name)]
      )
      let request = MatterAddDeviceRequest(topology: topology)

      do {
        Logger().info("Starting MatterAddDeviceRequest.")
        try await request.perform()
        Logger().info("Completed MatterAddDeviceRequest.")
        let commissionedDeviceIDs = try structure.completeMatterCommissioning()
        Logger().info("Commissioned device IDs: \(commissionedDeviceIDs).")
      } catch let error {
        structure.cancelMatterCommissioning()
        Logger().error("Failed to complete MatterAddDeviceRequest: \(error).")
      }

      self.isCommissioning = false
    }
  }

structure.prepareForMatterCommissioning() की मदद से नया रूम बनाने के लिए, सबसे ऊपर बाईं ओर जाएं और "+" आइकॉन > Google Fabric में डिवाइस जोड़ें को चुनें. यह MatterAddDeviceRequest का इस्तेमाल करके, Matter डिवाइस को आपके रूम में जोड़ता है. कमरे और डिवाइस का नाम चुनने के बाद, डिवाइस "डिवाइस" स्क्रीन पर दिखता है.

adf6cbb531787aaf.png f002bd6320bc480d.png

7. ऑटोमेशन

स्ट्रक्चर में मौजूद सभी ऑटोमेशन देखना

सबसे नीचे मौजूद नेविगेशन बार में, ऑटोमेशन पर टैप करें. इसमें, structure.listAutomations() के साथ आपकी स्ट्रक्चर में मौजूद सभी ऑटोमेशन की सूची दिखेगी.

cc6d50f72f812c24.png

ध्यान दें: अगर आपने होम ऑटोमेशन सेट अप नहीं किया है, तो आपको "शुरू करने के लिए, कोई ऑटोमेशन जोड़ें." मैसेज दिखेगा.

ऑटोमेशन बनाना

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

GoogleHomeAPISampleIOS/ViewModel/Automation/AutomationsRepository.swift में जाकर, टिप्पणी, सूचना, और lightAutomation() में मौजूद खाली ऑटोमेशन को हटाएं.

  /// TODO: create automation
  /// - Parameter devices: devices in current selected structure
  /// - Returns: the automation object to be created
  /// This automation will turn off the light after 5 seconds.
  public func lightAutomation(devices: Set<HomeDevice>) async throws -> any DraftAutomation {
    let light = devices.first { $0.name == "light2" }
    
    guard let light else {
      Logger().error("Unable to find light device with name light2")
      throw HomeError.notFound("No devices support OnOffLightDeviceType")
    }
    
    return automation(
      name: "Turn off light after 5 seconds",
      description:
        """
        Turns off light2 after it has been on for 5 seconds.
        """
    ) {
      let onOffStarter = starter(light, OnOffLightDeviceType.self, OnOffTrait.self)
      onOffStarter
      condition {
        onOffStarter.onOff.equals(true)
      }
      delay(for: Duration.seconds(5))
      action(light, OnOffLightDeviceType.self) {
        OnOffTrait.off()
      }
    }
  }

अगर आपको ऐसा ऑटोमेशन बनाना है जिससे लाइट चालू होने के पांच सेकंड बाद बंद हो जाए, तो ऑटोमेशन व्यू पर जाएं और "+ जोड़ें" बटन पर क्लिक करें. इसके बाद, "पांच सेकंड बाद लाइट बंद करो" को चुनें. ऑटोमेशन की जानकारी दिखेगी. इसमें starter, condition, और action शामिल हैं. structure.createAutomation() के हिसाब से ऑटोमेशन बनाने के लिए, "सेव करें" पर क्लिक करें.

21c1f8ea2a29134b.png 4bd36f6ed9c5f6e9.png

ध्यान दें: उपलब्ध ऑटोमेशन, आपके घर में मौजूद डिवाइसों पर निर्भर करते हैं. अगर आपको कोई भी उपलब्ध ऑटोमेशन नहीं दिखता है, तो अपने लाइट डिवाइस का नाम बदलकर "light2" करें.

"डिवाइस" टैब पर वापस जाएं और "light2" नाम की लाइट चालू करें. यह पांच सेकंड के बाद अपने-आप बंद हो जाएगा.

ऑटोमेशन के कॉम्पोनेंट ये हैं:

  • स्टार्टर: यह एक ऐसा इवेंट होता है जो ऑटोमेशन को शुरू करता है. इस उदाहरण में, OnOffTrait में बदलाव होने पर ऑटोमेशन शुरू हो जाएगा.
  • शर्त: इससे यह पता चलता है कि स्टार्टर डिवाइस, कुछ खास ज़रूरी शर्तों को पूरा करता है या नहीं. इस मामले में, लाइट चालू होने पर ऑटोमेशन लागू होगा.
  • ऐक्शन: यह वह ऑटोमेशन है जिसे आपको लागू करना है. हालांकि, ऐसा सिर्फ़ तब होगा, जब स्टार्टर ज़रूरी शर्तें पूरी करता हो. अगर शर्तें पूरी होती हैं, तो लाइट बंद हो जाएगी.

अन्य उदाहरणों के लिए, ऑटोमेशन के उदाहरण पेज देखें.

ऑटोमेशन मिटाना

structure.deleteAutomation() तरीके का इस्तेमाल तब किया जाता है, जब किसी मौजूदा ऑटोमेशन पर बाईं ओर स्वाइप किया जाता है और उसे अपने स्ट्रक्चर से हटाने के लिए, ट्रैश आइकॉन पर टैप किया जाता है.

dc678cd9e16f89a5.png

8. बधाई हो

बधाई हो! आपने iOS के लिए Home API का इस्तेमाल करके, स्मार्ट होम ऐप्लिकेशन बना लिया है.

आपने क्या-क्या उपलब्धियां हासिल की हैं:

  • शुरुआत: Home.connect() का इस्तेमाल करके, अपने ऐप्लिकेशन को Google Home के इकोसिस्टम से कनेक्ट करें.
  • अनुमतियां: यह कुकी, उपयोगकर्ता की पुष्टि करने और होम डेटा को ऐक्सेस करने की अनुमति देने के लिए इस्तेमाल की जाती है.
  • डिवाइस और स्ट्रक्चर: home.rooms() और home.devices() का इस्तेमाल करके, फ़ेच किए गए और दिखाए गए रूम और डिवाइस.
  • डिवाइस कंट्रोल: डिवाइस के साथ इंटरैक्ट करने की सुविधा लागू की गई है. जैसे, डिवाइस की खासियत के हिसाब से कमांड देकर, OnOffPluginUnitDeviceType की स्थिति को टॉगल करना.
  • होम मैनेजमेंट: नए रूम बनाने (structure.createRoom()), डिवाइसों को एक रूम से दूसरे रूम में ले जाने (structure.move()), और खाली रूम मिटाने (structure.deleteRoom()) की सुविधा जोड़ी गई है.
  • चालू करना: नए Matter डिवाइस (MatterAddDeviceRequest) जोड़ने के लिए, SDK टूल के चालू करने के फ़्लो को इंटिग्रेट किया गया है.
  • ऑटोमेशन: किसी स्ट्रक्चर में ऑटोमेशन को लिस्ट करने, बनाने (structure.createAutomation()) और मिटाने (structure.deleteAutomation()) का तरीका जानें.

अब आपको इस बारे में बुनियादी जानकारी मिल गई है कि iOS पर स्मार्ट होम को कंट्रोल करने के लिए, Home API का इस्तेमाल कैसे किया जाता है.

अगले चरण:

  • सैंपल ऐप्लिकेशन में दिए गए अन्य डिवाइस टाइप (लाइट, पंखे, पर्दे वगैरह) को कंट्रोल करने की सुविधा आज़माएं.
  • अलग-अलग डिवाइसों के लिए उपलब्ध अलग-अलग सुविधाओं और निर्देशों के बारे में ज़्यादा जानें.
  • अलग-अलग स्टार्टर, शर्तों, और कार्रवाइयों का इस्तेमाल करके, ज़्यादा जटिल ऑटोमेशन बनाने का एक्सपेरिमेंट करें.
  • ज़्यादा बेहतर सुविधाओं और जानकारी के लिए, Home APIs से जुड़ा दस्तावेज़ देखें.

बहुत खूब!