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

1. परिचय

f154e30306882c74.png

Home API क्या हैं?

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

3e11583c779a2cec.png

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

Home API में ये शामिल हैं:

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

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

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

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

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

2. अपना होम सेट अप करना

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

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

Google Home Playground में साइन इन करने के लिए निर्देशों का पालन करें. इसके बाद, Google Home ऐप्लिकेशन में खाता लिंक करने की प्रोसेस पूरी करें. ऐसा करने के बाद, आपको 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 में मौजूद है. यह ऐप्लिकेशन का मुख्य एंट्री पॉइंट है. यह SDK टूल को कॉन्फ़िगर और शुरू करता है. साथ ही, प्राइमरी यूज़र इंटरफ़ेस को सेट अप करता है.
  • 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), और अन्य सुविधाओं के लिए हेल्पर कोड शामिल होता है.

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

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

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

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

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

SDK टूल सेट अप करना

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

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

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

bd56b7080037e38a.png 9c0f08a3f4197a77.png

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

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

होम को शुरू करना

iOS के लिए किसी भी Home API का इस्तेमाल करने से पहले, आपको अपने ऐप्लिकेशन में Home को शुरू करना होगा. Home, SDK टूल की टॉप-लेवल एंट्री है. साथ ही, यह उपयोगकर्ता के स्ट्रक्चर में मौजूद सभी इकाइयों का ऐक्सेस देता है. किसी खास टाइप की सभी इकाइयों का अनुरोध करने पर, एपीआई एक 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 के एपीआई इस्तेमाल करने की अनुमति

ऐप्लिकेशन चलाने पर, सहमति वाली स्क्रीन दिखेगी. 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 ढूंढें और 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() फ़ंक्शन, OnOffPlugInUnitControl क्लास में मौजूद होता है. यह OnOffPluginUnitDeviceType से दिखाए गए स्मार्ट प्लग या किसी भी डिवाइस की चालू/बंद स्थिति को टॉगल करता है.

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

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

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

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 हब, इंटरनेट से कनेक्ट हो और उस पर पहुंचा जा सके. अगर आपके पास कोई Matter डिवाइस नहीं है, तो इसके बजाय Matter Virtual Device ऐप्लिकेशन का इस्तेमाल करें.

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

Commissioning API की मदद से, आपके ऐप्लिकेशन को उपयोगकर्ता के होम और 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 में डिवाइस जोड़ें को चुनें. यह आपके रूम में Matter डिवाइस जोड़ने के लिए, MatterAddDeviceRequest का इस्तेमाल करता है. रूम और डिवाइस का नाम चुनने के बाद, डिवाइस "डिवाइस" स्क्रीन पर दिखता है.

adf6cbb531787aaf.png f002bd6320bc480d.png

7. ऑटोमेशन

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

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

cc6d50f72f812c24.png

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

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

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

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 दस्तावेज़ देखें.

बहुत खूब!