1. บทนำ

Home API คืออะไร
Google Home API มีชุดไลบรารีสำหรับนักพัฒนาซอฟต์แวร์เพื่อใช้ประโยชน์จากระบบนิเวศของ Google Home API ของ Home ช่วยให้นักพัฒนาแอปสร้างแอปที่จัดสรรและควบคุมอุปกรณ์สมาร์ทโฮมได้อย่างราบรื่น

วิดีโอนี้จะอธิบายแอปบนอุปกรณ์เคลื่อนที่ที่คุณจะสร้างอย่างคร่าวๆ ดังนั้นโปรดทำตามวิดีโอขณะทำ Codelab
คอมโพเนนต์ของ Home API
Home API ประกอบด้วย
- API สำหรับอุปกรณ์และบ้าน: โต้ตอบกับบ้านของผู้ใช้ แอปสามารถใช้ API เหล่านี้เพื่ออ่านข้อมูลเกี่ยวกับอุปกรณ์ ห้อง และโครงสร้าง (เช่น ดูอุณหภูมิปัจจุบันของเทอร์โมสตัท) และควบคุมอุปกรณ์ (เช่น เปลี่ยนอุณหภูมิที่กำหนดของเทอร์โมสตัท)
- Commissioning API: จัดเตรียม (ตั้งค่า) อุปกรณ์ Matter ใหม่ลงใน Fabric โดยใช้ความพยายามเพียงเล็กน้อย
- Automation API: สร้าง ลบ และค้นหาการทำงานอัตโนมัติที่ทำงานภายในบ้านของผู้ใช้
ข้อกำหนดเบื้องต้น
- Xcode เวอร์ชันเสถียรล่าสุด
- บัญชี Google ที่มีโครงสร้างอย่างน้อย 1 รายการในบ้าน
- อุปกรณ์ iOS ที่ใช้ iOS 16.4 ขึ้นไปซึ่งตั้งค่าด้วยบัญชีทดสอบ
- Apple ID ที่ลงทะเบียนใน โปรแกรมนักพัฒนาซอฟต์แวร์ของ Apple เพื่อสร้างโปรไฟล์การจัดสรร
- ฮับของ Google ที่รองรับ Home API
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างแอป iOS โดยใช้ Home API ตามแนวทางปฏิบัติแนะนำ
- วิธีใช้ Device และ Structure API เพื่อแสดงและควบคุมสมาร์ทโฮม
- วิธีใช้ Commissioning API เพื่อเพิ่มอุปกรณ์ลงในระบบนิเวศของ Google Home
- วิธีใช้ Automation API เพื่อสร้างการทำงานอัตโนมัติพื้นฐาน
2. ตั้งค่าบ้าน
เตรียมอุปกรณ์
Google Home Playground มีอุปกรณ์สมาร์ทโฮมจำลองที่สร้างไว้ล่วงหน้าหลากหลายประเภท และขอแนะนำให้ใช้เพื่อสำรวจศักยภาพทั้งหมดของ Home API โดยเฉพาะอย่างยิ่งหากคุณมีอุปกรณ์ในบ้านจำนวนจำกัด
ทำตามวิธีการเพื่อลงชื่อเข้าใช้ Google Home Playground และลิงก์บัญชีให้เสร็จสมบูรณ์ในแอป Google Home หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณควรจะเห็นอุปกรณ์ในแท็บ "อุปกรณ์" ในแอป Google Home

3. การเริ่มตั้งค่า
รับโค้ดของแอปตัวอย่าง
เริ่มต้นด้วยการโคลนซอร์สโค้ดจาก GitHub
git clone https://github.com/google-home/google-home-api-sample-app-ios.git
ไดเรกทอรีตัวอย่างมี 2 สาขา ได้แก่ start และ finished สำหรับ Codelab นี้
start: โค้ดเริ่มต้นสำหรับโปรเจ็กต์นี้ ซึ่งคุณจะทำการเปลี่ยนแปลงเพื่อทำ Codelab ให้เสร็จสมบูรณ์finished: โค้ดที่เสร็จสมบูรณ์สำหรับ Codelab นี้ ซึ่งใช้เพื่อตรวจสอบงานของคุณ
สำรวจโค้ด "เริ่มต้น"
เริ่ม Codelab นี้โดยเปลี่ยนไปใช้กิ่ง start ของที่เก็บที่โคลนไว้
git checkout start
สาขานี้มีโค้ดเริ่มต้นสำหรับโปรเจ็กต์ คุณจะแก้ไขโค้ดนี้ตลอดทั้งโค้ดแล็บเพื่อใช้ฟังก์ชันการทำงานทั้งหมด แอปตัวอย่าง Codelab มีโครงสร้างพื้นฐานที่สร้างขึ้นใน Swift สำหรับการโต้ตอบกับ Home APIs iOS SDK มาดูส่วนประกอบหลักในโปรเจ็กต์ start กัน
Main Entry (GoogleHomeAPISampleIOSApp): อยู่ในGoogleHomeAPISampleIOS/Main/GoogleHomeAPISampleIOS.swiftซึ่งเป็นจุดแรกเข้าหลักของแอป โดยจะกำหนดค่าและเริ่มต้น SDK รวมถึงตั้งค่าอินเทอร์เฟซผู้ใช้หลักCore Views (View/):MainView.swift: มุมมองรากหลังการเปิดตัวซึ่งมีNavigationViewหลัก โดยจะจัดการการเลือกโครงสร้าง Google Home ที่ใช้งานอยู่และแสดงStructureViewที่เกี่ยวข้องStructureView.swift: แสดงเนื้อหาของโครงสร้างที่เลือกในปัจจุบัน โดยใช้แท็บเพื่อสลับระหว่างตารางกริดของอุปกรณ์กับรายการการทำงานอัตโนมัติ นอกจากนี้ ยังมีเมนูสำหรับเพิ่มห้องหรืออุปกรณ์ด้วยDeviceView.swift: แสดงถึงการ์ดแบบอินเทอร์แอกทีฟสำหรับอุปกรณ์เครื่องเดียวภายในตารางกริดStructureViewAutomationsView.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: มีหน้าที่สร้างคลาสย่อยDeviceControlที่เหมาะสมสำหรับHomeDeviceที่กำหนด
Commissioning (Commissioning/):CommissioningManager.swift: มีตรรกะสำหรับการจัดการขั้นตอนการจัดสรรอุปกรณ์ Matter
Utilities & UX (Utils/, UX/, Storage/): มีโค้ดตัวช่วยสำหรับองค์ประกอบ UI (สี ขนาด) การจัดการข้อผิดพลาด ที่เก็บข้อมูล (SelectedStructureStorage.swift) และยูทิลิตีอื่นๆ
ตลอดทั้งโค้ดแล็บนี้ คุณจะเห็นความคิดเห็น เช่น TODO หรือบล็อกโค้ดและคำเตือนที่ถูกแสดงความคิดเห็นไว้ภายในโปรเจ็กต์ start เครื่องหมายเหล่านี้จะระบุส่วนที่คุณจะเพิ่มหรือยกเลิกการแสดงความคิดเห็นในโค้ดเพื่อใช้ฟังก์ชันที่จำเป็นตามขั้นตอนที่ระบุ
สร้างไฟล์การกำหนดค่าการติดตั้งใช้งาน Apple
หากต้องการกำหนดค่า App Attest ให้ทำตามวิธีการสร้างไฟล์การกำหนดค่าการติดตั้งใช้งานของ Apple โปรดทราบว่าหลังจากตั้งค่าแล้ว คุณจะติดตั้งใช้งานแอปได้ในอุปกรณ์จริงเท่านั้น ไม่ใช่ในโปรแกรมจำลอง
ตั้งค่าการตรวจสอบสิทธิ์
หากต้องการรับรหัสไคลเอ็นต์ OAuth และเปิดใช้ Home API ให้ลงชื่อเข้าใช้ Google Cloud ก่อน แล้วสร้างโปรเจ็กต์ใหม่หรือเลือกโปรเจ็กต์ที่มีอยู่ จากนั้นทำตามขั้นตอนที่ระบุเพื่อสร้างรหัสไคลเอ็นต์ OAuth และเปิดใช้ Home API รวมถึงเพิ่มบัญชีลงในรายการที่อนุญาต
ตั้งค่า SDK
รับ iOS SDK ของ Home APIs และกำหนดค่าโดยดูวิธีการตั้งค่าที่ระบุไว้ในตั้งค่า SDK อย่าลืมแทนที่ HOME_API_TODO_ADD_APP_GROUP ด้วยกลุ่มแอปของคุณเอง
สร้างและเรียกใช้โปรเจ็กต์
หลังจากสร้างและเรียกใช้โปรเจ็กต์ด้วยสาขา start แล้ว กล่องโต้ตอบ TODO และหน้าจอที่แสดงข้อความ "ต้องลงชื่อเข้าใช้" ควรปรากฏขึ้น การโต้ตอบของ Home API จะได้รับการติดตั้งใช้งานในส่วนต่อไปนี้

หมายเหตุ: ค้นหาโค้ดที่ต้องแก้ไขโดยค้นหาข้อความที่แสดงในกล่องโต้ตอบในโปรเจ็กต์ เช่น ค้นหา "TODO: initialize Home"
4. การเริ่มต้น
เริ่มต้นใช้งาน Home
ก่อนที่จะใช้ Home API สำหรับ iOS คุณต้องเริ่มต้น 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).")
}
}
}
สิทธิ์ในการใช้ Home API
หน้าจอความยินยอมจะปรากฏขึ้นเมื่อคุณเรียกใช้แอป เลือกโครงสร้าง Google Home แล้วเลือกบัญชีที่อยู่ในรายการที่อนุญาตของโปรเจ็กต์ Google Cloud

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() จะตรวจสอบก่อนว่าอุปกรณ์อยู่ในห้องเดียวกันหรือไม่ จากนั้นจึงทำให้อุปกรณ์โต้ตอบกันเป็น HomeDevices โดยใช้ DeviceControl และ DeviceControlFactory

หมายเหตุ: หากอุปกรณ์ของคุณไม่อยู่ในรายการใน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() ให้ไปที่มุมซ้ายบนแล้วเลือกไอคอน "+" > เพิ่มห้อง ป้อนชื่อห้องแชทใหม่ แล้วคลิก "สร้างห้องแชท" ห้องใหม่จะปรากฏขึ้นหลังจากผ่านไป 2-3 วินาที

ย้ายอุปกรณ์ไปห้องอื่น
ใน 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() ให้กดอุปกรณ์ค้างไว้ เลือก "ย้ายไปยังห้องอื่น" แล้วเลือกห้องใหม่

ลบห้องที่ว่างเปล่า
ใน 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() ให้คลิกไอคอนถังขยะทางด้านขวาของชื่อห้อง แล้วยืนยันการดำเนินการ โปรดทราบว่าคุณจะลบได้เฉพาะห้องที่ว่างเปล่าเท่านั้น

หมายเหตุ: ย้ายอุปกรณ์กลับเพื่อสร้างห้องว่าง
6. การจัดเตรียม
หมายเหตุ: ส่วนนี้ต้องใช้ Google Hub และอุปกรณ์ Matter ตรวจสอบว่าฮับ Google ในโครงสร้างออนไลน์และเข้าถึงได้ หากไม่มีอุปกรณ์ Matter ให้ลองใช้แอปอุปกรณ์เสมือน Matter แทน
เพิ่มอุปกรณ์ Matter
Commissioning API ช่วยให้แอปเพิ่มอุปกรณ์ Matter ใหม่ลงในบ้านและบัญชี 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 เพื่อเพิ่มอุปกรณ์ Matter ลงในห้อง หลังจากเลือกห้องและชื่ออุปกรณ์แล้ว อุปกรณ์จะแสดงในหน้าจอ "อุปกรณ์"

7. การทำงานอัตโนมัติ
ดูการทำงานอัตโนมัติทั้งหมดในบ้าน
แตะการทำงานอัตโนมัติที่แถบนำทางด้านล่าง โดยจะแสดงการทำงานอัตโนมัติทั้งหมดในโครงสร้างของคุณด้วย structure.listAutomations()

หมายเหตุ: หากไม่ได้ตั้งค่าการทำงานอัตโนมัติในบ้านไว้ คุณจะเห็นข้อความ "เพิ่มการทำงานอัตโนมัติเพื่อเริ่มต้นใช้งาน"
สร้างการทำงานอัตโนมัติ
ตอนนี้คุณคุ้นเคยกับ API ของอุปกรณ์และโครงสร้าง รวมถึงการเพิ่มอุปกรณ์ใหม่แล้ว ก็ถึงเวลาสร้างการทำงานอัตโนมัติใหม่โดยใช้ 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()
}
}
}
หากต้องการสร้างการทำงานอัตโนมัติที่จะปิดไฟ 5 วินาทีหลังจากเปิด ให้ไปที่มุมมองการทำงานอัตโนมัติ แล้วคลิกปุ่ม "+ เพิ่ม" จากนั้นเลือก "ปิดไฟหลังจากผ่านไป 5 วินาที" รายละเอียดการทำงานอัตโนมัติ รวมถึง starter, condition และ action จะปรากฏขึ้น คลิก "บันทึก" เพื่อสร้างการทำงานอัตโนมัติโดย structure.createAutomation()

หมายเหตุ: การทำงานอัตโนมัติที่ใช้ได้จะขึ้นอยู่กับอุปกรณ์ในบ้าน หากไม่เห็นระบบอัตโนมัติที่พร้อมใช้งาน ให้ลองเปลี่ยนชื่ออุปกรณ์ไฟเป็น "light2"
กลับไปที่แท็บ "อุปกรณ์" แล้วเปิดไฟชื่อ "light2" โดยจะปิดโดยอัตโนมัติหลังจากผ่านไป 5 วินาที
ส่วนประกอบของการทำงานอัตโนมัติมีดังนี้
- เงื่อนไขเริ่มต้น: นี่คือเหตุการณ์ที่เริ่มต้นการทำงานอัตโนมัติ ในตัวอย่างนี้ การทำงานอัตโนมัติจะเริ่มเมื่อมีการเปลี่ยนแปลงใน
OnOffTrait - เงื่อนไข: ตรวจสอบว่าอุปกรณ์เริ่มต้นตรงตามข้อกำหนดที่เฉพาะเจาะจงหรือไม่ ในกรณีนี้ ระบบจะเรียกใช้การทำงานอัตโนมัติหากไฟเปิดอยู่
- การดำเนินการ: นี่คือการทำงานอัตโนมัติที่คุณต้องการดำเนินการ แต่จะดำเนินการได้ก็ต่อเมื่อเงื่อนไขเริ่มต้นเป็นไปตามข้อกำหนดเท่านั้น หากเป็นไปตามเงื่อนไข ระบบจะปิดไฟ
ดูตัวอย่างเพิ่มเติมได้ที่หน้าตัวอย่างการทำงานอัตโนมัติ
ลบการทำงานอัตโนมัติ
ระบบจะเรียกใช้เมธอด structure.deleteAutomation() เมื่อคุณปัดไปทางซ้ายในการทำงานอัตโนมัติที่มีอยู่ แล้วแตะไอคอนถังขยะเพื่อนำการทำงานอัตโนมัตินั้นออกจากบ้าน

8. ขอแสดงความยินดี
ยินดีด้วย คุณสร้างแอปสมาร์ทโฮมพื้นฐานโดยใช้ Home API สำหรับ iOS ได้สำเร็จแล้ว
สิ่งที่คุณทำสำเร็จ
- การเริ่มต้น: เชื่อมต่อแอปกับระบบนิเวศ Google Home โดยใช้
Home.connect() - สิทธิ์: จัดการการตรวจสอบสิทธิ์และการให้สิทธิ์ผู้ใช้สำหรับการเข้าถึงข้อมูลบ้าน
- อุปกรณ์และโครงสร้าง: ดึงและแสดงห้องและอุปกรณ์โดยใช้
home.rooms()และhome.devices() - การควบคุมอุปกรณ์: การโต้ตอบกับอุปกรณ์ที่ใช้งาน เช่น การสลับสถานะของ
OnOffPluginUnitDeviceTypeโดยการเรียกใช้คำสั่งในลักษณะของอุปกรณ์ - การจัดการโครงสร้าง: เพิ่มฟังก์ชันในการสร้างห้องใหม่ (
structure.createRoom()) ย้ายอุปกรณ์ระหว่างห้อง (structure.move()) และลบห้องที่ว่าง (structure.deleteRoom()) - การจัดสรร: ผสานรวมขั้นตอนการจัดสรรของ SDK เพื่อเพิ่มอุปกรณ์ Matter ใหม่ (
MatterAddDeviceRequest) - การทำงานอัตโนมัติ: อธิบายวิธีแสดงรายการ สร้าง (
structure.createAutomation()) และลบ (structure.deleteAutomation()) การทำงานอัตโนมัติภายในโครงสร้าง
ตอนนี้คุณมีความเข้าใจพื้นฐานเกี่ยวกับวิธีใช้ประโยชน์จาก Home API เพื่อสร้างประสบการณ์การควบคุมสมาร์ทโฮมที่สมบูรณ์บน iOS แล้ว
ขั้นตอนถัดไป
- ลองควบคุมอุปกรณ์ประเภทอื่นๆ ที่มีให้ในแอปตัวอย่าง (ไฟ พัดลม ม่าน และอื่นๆ)
- เจาะลึกรายละเอียดเพิ่มเติมเกี่ยวกับลักษณะและคำสั่งต่างๆ ที่ใช้ได้กับอุปกรณ์ต่างๆ
- ทดลองสร้างการทำงานอัตโนมัติที่ซับซ้อนมากขึ้นโดยใช้เงื่อนไขเริ่มต้น เงื่อนไข และการดำเนินการที่แตกต่างกัน
- ดูฟีเจอร์และรายละเอียดขั้นสูงเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับ Home API
เยี่ยมมาก!