iOS-এ Home API ব্যবহার করে একটি মোবাইল অ্যাপ তৈরি করুন

1. ভূমিকা

f154e30306882c74.png

হোম এপিআই কি?

Google Home APIs ডেভেলপারদের Google Home ইকোসিস্টেমে ট্যাপ করার জন্য লাইব্রেরির একটি সেট প্রদান করে। হোম API-এর সাহায্যে, ডেভেলপাররা এমন অ্যাপ তৈরি করতে পারে যা নির্বিঘ্নে কমিশন এবং স্মার্ট হোম ডিভাইস নিয়ন্ত্রণ করে।

3e11583c779a2cec.png

হোম API-এর উপাদান

হোম API গুলি গঠিত:

  • ডিভাইস এবং স্ট্রাকচার API: ব্যবহারকারীর বাড়ির সাথে ইন্টারঅ্যাক্ট করুন। অ্যাপগুলি ডিভাইস, রুম এবং স্ট্রাকচার (উদাহরণস্বরূপ, বর্তমান থার্মোস্ট্যাট তাপমাত্রা দেখুন) এবং নিয়ন্ত্রণ ডিভাইস (উদাহরণস্বরূপ, থার্মোস্ট্যাট সেটপয়েন্ট পরিবর্তন) সম্পর্কে তথ্য পড়তে এই APIগুলি ব্যবহার করতে পারে।
  • কমিশনিং API : ন্যূনতম প্রচেষ্টার সাথে ফ্যাব্রিকের মধ্যে নতুন ম্যাটার ডিভাইস কমিশন (সেট আপ)।
  • অটোমেশন API : ব্যবহারকারীর বাড়িতে চলমান অটোমেশনগুলি তৈরি করুন, মুছুন এবং অনুসন্ধান করুন৷

পূর্বশর্ত

আপনি কি শিখবেন

  • সেরা অনুশীলন সহ হোম API ব্যবহার করে কীভাবে একটি iOS অ্যাপ তৈরি করবেন।
  • একটি স্মার্ট হোম প্রতিনিধিত্ব এবং নিয়ন্ত্রণ করতে ডিভাইস এবং কাঠামো APIs কিভাবে ব্যবহার করবেন।
  • Google Home ইকোসিস্টেমে ডিভাইস যোগ করতে কমিশনিং API কীভাবে ব্যবহার করবেন।
  • একটি মৌলিক অটোমেশন তৈরি করতে কিভাবে অটোমেশন API ব্যবহার করবেন।

2. আপনার বাড়ি সেট আপ করুন৷

ডিভাইসগুলি প্রস্তুত করুন

Google Home Playground বিভিন্ন ধরনের প্রি-বিল্ট ইমুলেটেড স্মার্ট হোম ডিভাইস অফার করে এবং হোম API-এর সম্পূর্ণ সম্ভাবনা অন্বেষণ করার জন্য সুপারিশ করা হয়, বিশেষ করে যদি আপনার বাড়িতে সীমিত সংখ্যক ডিভাইস থাকে।

Google Home প্লেগ্রাউন্ডে সাইন ইন করতে নির্দেশাবলী অনুসরণ করুন এবং 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 শাখায় স্যুইচ করে এই কোডল্যাবটি শুরু করুন:

git checkout start

এই শাখায় প্রকল্পের জন্য স্টার্টার কোড রয়েছে। সম্পূর্ণ কার্যকারিতা বাস্তবায়নের জন্য আপনি কোডল্যাব জুড়ে এই কোডটি পরিবর্তন করবেন। কোডল্যাব নমুনা অ্যাপটি হোম এপিআই iOS SDK-এর সাথে ইন্টারঅ্যাক্ট করার জন্য সুইফটে তৈরি একটি মৌলিক কাঠামো প্রদান করে। আসুন start প্রকল্পের মূল উপাদানগুলিকে দ্রুত দেখে নেওয়া যাক:

  • Main Entry (GoogleHomeAPISampleIOSApp) : GoogleHomeAPISampleIOS/Main/GoogleHomeAPISampleIOS.swift এ অবস্থিত, এটি হল মূল অ্যাপ এন্ট্রি পয়েন্ট। এটি SDK কনফিগার করে এবং শুরু করে এবং প্রাথমিক ব্যবহারকারী ইন্টারফেস সেট আপ করে।
  • Core Views (View/) :
    • MainView.swift : লঞ্চের পর রুট ভিউ, প্রধান NavigationView ধারণ করে। এটি সক্রিয় Google হোম কাঠামো নির্বাচন পরিচালনা করে এবং সংশ্লিষ্ট 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 : UI-তে নিয়ন্ত্রণযোগ্য ডিভাইসগুলিকে উপস্থাপন করার জন্য একটি বেস ক্লাস।
    • নির্দিষ্ট সাবক্লাস ( LightControl.swift , FanControl.swift , OnOffPlugInUnitControl.swift , এবং আরও অনেক কিছু): তাদের বৈশিষ্ট্যের উপর ভিত্তি করে বিভিন্ন ধরনের ডিভাইসের জন্য UI লজিক, ডিভাইস নিয়ন্ত্রণ এবং স্টেট ম্যাপিং প্রয়োগ করুন।
    • DeviceControlFactory.swift : একটি প্রদত্ত HomeDevice জন্য উপযুক্ত DeviceControl সাবক্লাস তৈরি করার জন্য দায়ী।
  • Commissioning (Commissioning/) :
    • CommissioningManager.swift : ম্যাটার ডিভাইস কমিশনিং প্রবাহ পরিচালনার জন্য যুক্তি রয়েছে।
  • Utilities & UX (Utils/, UX/, Storage/) : UI উপাদান (রঙ, মাত্রা), ত্রুটি পরিচালনা, ডেটা স্টোরেজ ( SelectedStructureStorage.swift ), এবং অন্যান্য ইউটিলিটিগুলির জন্য সহায়ক কোড রয়েছে।

এই কোডল্যাব জুড়ে, আপনি start প্রকল্পের মধ্যে TODO বা মন্তব্য-আউট কোড ব্লক এবং সতর্কতার মতো মন্তব্যগুলি পাবেন। এই বিভাগগুলি চিহ্নিত করে যেখানে আপনি প্রদত্ত পদক্ষেপগুলি অনুসরণ করে প্রয়োজনীয় কার্যকারিতা বাস্তবায়নের জন্য কোড যোগ করবেন বা আনকমেন্ট করবেন।

অ্যাপল স্থাপনার কনফিগারেশন ফাইল তৈরি করুন

অ্যাপ অ্যাটেস্ট কনফিগার করতে, অ্যাপল ডিপ্লয়মেন্ট কনফিগারেশন ফাইল তৈরি করার নির্দেশাবলী অনুসরণ করুন। মনে রাখবেন যে সেটআপের পরে, অ্যাপটি শুধুমাত্র একটি বাস্তব ডিভাইসে স্থাপন করা যেতে পারে, একটি সিমুলেটরে নয়।

প্রমাণীকরণ সেট আপ করুন

OAuth ক্লায়েন্ট আইডি পেতে এবং হোম API সক্ষম করতে, প্রথমে Google ক্লাউডে সাইন ইন করুন এবং হয় একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি নির্বাচন করুন৷ তারপর, OAuth ক্লায়েন্ট আইডি তৈরি করতে প্রদত্ত পদক্ষেপগুলি অনুসরণ করুন এবং হোম APIগুলি সক্ষম করুন এবং অনুমতি তালিকায় আপনার অ্যাকাউন্ট যুক্ত করুন৷

SDK সেট আপ করুন

Home APIs iOS SDK প্রাপ্ত করুন এবং সেট আপ SDK- এ প্রদত্ত সেটআপ নির্দেশাবলী উল্লেখ করে এটি কনফিগার করুন। HOME_API_TODO_ADD_APP_GROUP আপনার নিজের অ্যাপ গ্রুপ দিয়ে প্রতিস্থাপন করতে ভুলবেন না।

নির্মাণ এবং প্রকল্প চালানো

start ব্রাঞ্চের সাথে প্রোজেক্ট তৈরি এবং চালানোর পরে, একটি TODO ডায়ালগ এবং "সাইন ইন প্রয়োজনীয়" প্রদর্শনকারী একটি স্ক্রীন উপস্থিত হওয়া উচিত। হোম API-এর মিথস্ক্রিয়া নিম্নলিখিত বিভাগে প্রয়োগ করা হবে।

bd56b7080037e38a.png9c0f08a3f4197a77.png

দ্রষ্টব্য : ডায়ালগে প্রদর্শিত পাঠ্যের জন্য প্রকল্প অনুসন্ধান করে সংশোধন করা প্রয়োজন এমন কোডটি সনাক্ত করুন। উদাহরণস্বরূপ, "TODO: প্রাথমিক হোম" অনুসন্ধান করুন।

4. সূচনা

হোম আরম্ভ করুন

iOS-এর জন্য যেকোনও হোম API ব্যবহার করার আগে, আপনাকে অবশ্যই আপনার অ্যাপে Home আরম্ভ করতে হবে। Home হল SDK-তে শীর্ষ-স্তরের এন্ট্রি এবং ব্যবহারকারীর কাঠামোর সমস্ত সত্তাকে অ্যাক্সেস প্রদান করে৷ একটি নির্দিষ্ট ধরণের সমস্ত সত্তাকে অনুরোধ করার সময়, API একটি 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).")
      }
    }
  }

হোম API ব্যবহার করার অনুমতি

আপনি যখন অ্যাপটি চালাবেন তখন সম্মতি স্ক্রীন দেখা যাবে। Google Home স্ট্রাকচার বেছে নিন এবং আপনার Google ক্লাউড প্রোজেক্টের অনুমতি তালিকায় থাকা অ্যাকাউন্টটি বেছে নিন।

47310f458c0094d9.png4a571dbd9979a88c.pnge29c75891a3a67af.png

5. ডিভাইস এবং কাঠামো

রুম এবং ডিভাইস পান

GoogleHomeAPISampleIOS/ViewModel/StructureViewModel.swift এ, যথাক্রমে home.rooms() এবং home.devices() সহ নির্বাচিত কাঠামোতে রুম এবং ডিভাইসগুলি পেতে getRoomsAndDevices() এ মন্তব্য এবং সতর্কতা সরিয়ে দিন।

  /// 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 এ উপলব্ধ।

একটি নতুন রুম তৈরি করুন

স্ট্রাকচার 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.pnga45f785e1d51938e.png7753b56cbdcff8d6.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.pngfd126fabb454f2bf.png813e1e23e50cd9f6.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 হাব এবং একটি ম্যাটার ডিভাইস প্রয়োজন৷ নিশ্চিত করুন যে আপনার কাঠামোর Google হাব অনলাইন এবং পৌঁছানো যায়। আপনার কাছে ম্যাটার ডিভাইস না থাকলে, পরিবর্তে ম্যাটার ভার্চুয়াল ডিভাইস অ্যাপ ব্যবহার করার চেষ্টা করুন।

একটি ম্যাটার ডিভাইস যোগ করুন

কমিশনিং API ব্যবহারকারীর হোম এবং Google অ্যাকাউন্টে নতুন ম্যাটার ডিভাইস যোগ করতে আপনার অ্যাপকে সক্ষম করে। এটি সরাসরি আপনার অ্যাপের মধ্যে একটি বিরামহীন সেটআপ অভিজ্ঞতা প্রদান করে।

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 ব্যবহার করে। রুম এবং ডিভাইসের নাম নির্বাচন করার পরে, ডিভাইসটি "ডিভাইস" স্ক্রিনে প্রদর্শিত হয়।

adf6cbb531787aaf.pngf002bd6320bc480d.png

7. অটোমেশন

কাঠামোর সমস্ত অটোমেশন দেখুন

নীচের নেভিগেশন বারে অটোমেশনগুলিতে আলতো চাপুন৷ এটি structure.listAutomations() এর সাথে আপনার কাঠামোর সমস্ত অটোমেশন তালিকাভুক্ত করবে।

cc6d50f72f812c24.png

দ্রষ্টব্য : আপনার যদি কোনো হোম অটোমেশন সেট আপ না থাকে, তাহলে আপনি "শুরু করতে একটি অটোমেশন যোগ করুন" বার্তাটি দেখতে পাবেন।

একটি অটোমেশন তৈরি করুন

এখন যেহেতু আপনি ডিভাইস এবং স্ট্রাকচার API-এর সাথে পরিচিত এবং একটি নতুন ডিভাইস যোগ করছেন, এটি অটোমেশন 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()
      }
    }
  }

একটি অটোমেশন তৈরি করতে যা চালু হওয়ার পাঁচ সেকেন্ড পরে আলোটি বন্ধ করে দেবে, অটোমেশন ভিউতে যান এবং " + যোগ করুন " বোতামে ক্লিক করুন৷ তারপরে, " 5 সেকেন্ড পরে আলো বন্ধ করুন " নির্বাচন করুন। starter , condition এবং action সহ অটোমেশনের বিবরণ প্রদর্শিত হবে। structure.createAutomation() দ্বারা অটোমেশন তৈরি করতে " সংরক্ষণ করুন " এ ক্লিক করুন।

21c1f8ea2a29134b.png4bd36f6ed9c5f6e9.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() ) মুছে ফেলার জন্য কার্যকারিতা যুক্ত করা হয়েছে।
  • কমিশনিং : নতুন ম্যাটার ডিভাইস ( MatterAddDeviceRequest ) যোগ করতে SDK-এর কমিশনিং ফ্লোকে একীভূত করা হয়েছে।
  • অটোমেশন : একটি কাঠামোর মধ্যে কীভাবে তালিকাভুক্ত করা যায়, তৈরি করা হয় ( structure.createAutomation() ), এবং মুছে ফেলা হয় ( structure.deleteAutomation() ) অটোমেশন।

iOS-এ সমৃদ্ধ স্মার্ট হোম কন্ট্রোল অভিজ্ঞতা তৈরি করতে হোম API-এর সুবিধা কীভাবে নেওয়া যায় সে সম্পর্কে আপনার এখন একটি মৌলিক ধারণা রয়েছে।

পরবর্তী পদক্ষেপ :

  • নমুনা অ্যাপে (লাইট, ফ্যান, ব্লাইন্ড এবং আরও অনেক কিছু) প্রদত্ত অন্যান্য ডিভাইসের ধরন নিয়ন্ত্রণ করুন।
  • বিভিন্ন ডিভাইসের জন্য উপলব্ধ বিভিন্ন বৈশিষ্ট্য এবং কমান্ডের গভীরে যান।
  • বিভিন্ন স্টার্টার, শর্ত এবং অ্যাকশন ব্যবহার করে আরও জটিল অটোমেশন তৈরি করে পরীক্ষা করুন।
  • আরও উন্নত বৈশিষ্ট্য এবং বিশদ বিবরণের জন্য হোম API-এর ডকুমেন্টেশন দেখুন।

ভাল হয়েছে!