دستگاههای روشنایی از ویژگیهای استاندارد Matter برای شناسایی تجهیزات، تغییر وضعیتهای برق، و تنظیم سطوح روشنایی استفاده میکنند.
ابتداییترین نوع دستگاه روشنایی
OnOffLightDeviceType
است که با ویژگیهای
OnOffTrait و
IdentifyTrait پیادهسازی میشود
و بهطور اختیاری از ویژگیهای
LevelControlTrait
و
LightEffectsTrait
پشتیبانی میکند.
انواع دیگر چراغها قابلیتهای بیشتری ارائه میدهند و با مشخصههای متفاوتی پیادهسازی میشوند:
| نوع دستگاه Home APIs | ویژگیها | برنامه نمونه Swift | مورد استفاده |
|---|---|---|---|
|
دمای رنگ روشن
دستگاه روشنایی که میتوان آن را روشن یا خاموش کرد، شدت نور آن را تنظیم کرد، و دمای رنگ آن را تنظیم کرد. |
Required Traits matter IdentifyTrait matter OnOffTrait matter LevelControlTrait matter ColorControlTrait |
سبک | |
|
چراغ با نور قابلتنظیم
دستگاه روشنایی که میتوان آن را روشن یا خاموش کرد، شدت نور آن را تنظیم کرد، و بااستفاده از حسگر حضور در خانه محدودشده آن را روشن یا خاموش کرد. |
ویژگیهای الزامی matter IdentifyTrait matter OnOffTrait matter LevelControlTrait |
سبک | |
|
رنگ روشن گسترشیافته
دستگاه روشنایی که میتوان آن را روشن یا خاموش کرد، شدت نور آن را تنظیم کرد، دمای رنگ آن را تنظیم کرد، و بااستفاده از حسگر حضور در خانه محدودشده آن را روشن یا خاموش کرد. |
Required Traits matter IdentifyTrait matter OnOffTrait matter LevelControlTrait matter ColorControlTrait |
سبک | |
|
روشن/خاموش کردن چراغ
دستگاه روشنایی که میتوان آن را روشن یا خاموش کرد. |
ویژگیهای الزامی matter IdentifyTrait matter OnOffTrait |
سبک |
همیشه قبلاز استفاده از هر ویژگی یا تلاش برای بهروزرسانی مشخصهها، پشتیبانی از مشخصه و فرمان را برای دستگاه بررسی کنید. برای اطلاعات بیشتر، به کنترل دستگاهها در iOS مراجعه کنید.
پیشنیازها
قبلاز کار با دستگاههای روشنایی و منحنیهای روشنایی، مطمئن شوید که برنامهتان Home SDK را مقداردهی اولیه میکند و واردات لازم را شامل میشود:
import Foundation import GoogleHomeSDK import GoogleHomeTypes import Network
پیدا کردن دستگاههای روشنایی
برای پیدا کردن دستگاههای روشنایی در یک سازه، فهرست دستگاهها را براساس نوع دستگاه فیلتر کنید،
مثلاً
OnOffLightDeviceType
و
DimmableLightDeviceType
.
let allDevices = try await home.devices().list() // Get all On/Off Light devices in the structure let onOffLights = allDevices.filter { $0.types.contains(OnOffLightDeviceType.self) } // Get all Dimmable Light devices in the structure let dimmableLights = allDevices.filter { $0.types.contains(DimmableLightDeviceType.self) } // Retrieve a specific device type instance to access its traits let onOffLightDeviceType = await onOffLights.first?.types.get(OnOffLightDeviceType.self) let dimmableLightDeviceType = await dimmableLights.first?.types.get(DimmableLightDeviceType.self)
همچنین میتوانید همه دستگاههای روشنایی را در چندین نوع دستگاه روشنایی در یک فیلتر بازیابی کنید:
// Get a list of devices with similar device types (lights) let lightDevices = try await self.home.devices().list().compactMap { $0.types.contains(DimmableLightDeviceType.self) || $0.types.contains(OnOffLightDeviceType.self) || $0.types.contains(ColorTemperatureLightDeviceType.self) || $0.types.contains(ExtendedColorLightDeviceType.self) }
دریافت اطلاعات پایه درباره دستگاه
در برنامه نمونه برای iOS پیادهسازی شده است
ویژگی BasicInformation
شامل اطلاعاتی مثل نام فروشنده، شناسه فروشنده، شناسه محصول،
نام محصول (شامل اطلاعات مدل)، و نسخه نرمافزار دستگاه است:
let vendorName = basicInfoTrait.attributes.vendorName! let vendorID = basicInfoTrait.attributes.vendorID! let productID = basicInfoTrait.attributes.productID! let productName = basicInfoTrait.attributes.productName! let softwareVersion = basicInfoTrait.attributes.softwareVersion!
شناسایی دستگاه روشنایی
وقتی اتاقی حاوی چندین چراغ است، میتوانید با راهاندازی حالت شناسایی بصری، مانند چشمک زدن چراغ برای چند ثانیه، به کاربران کمک کنید تا یک چراغ فیزیکی خاص را پیدا کنند. هر چهار نوع دستگاه روشنایی به ویژگی
Matter.IdentifyTrait نیاز دارند.
برای شروع حالت شناسایی، فرمان identify را با مدتزمان identifyTime ثانیه فراخوانی کنید. ارسال 0 بلافاصله وضعیت شناسایی را متوقف میکند. همچنین میتوانید triggerEffect را فراخوانی کنید تا جلوه دیداری خاصی را اجرا کند،
مثلاً Blink یا Breathe.
func identifyLight(lightDeviceType: DimmableLightDeviceType) async throws {
guard let identifyTrait = lightDeviceType.matterTraits.identifyTrait else {
return
}
// Blink the light for 10 seconds so the user can locate it
if identifyTrait.supportsIdentifyCommand {
try await identifyTrait.identify(identifyTime: 10)
}
// Or trigger a specific visual identification effect
if identifyTrait.supportsTriggerEffectCommand {
try await identifyTrait.triggerEffect(
effectIdentifier: .blink,
effectVariant: .default
)
}
}
بررسی اتصال دستگاه روشنایی
اتصالپذیری دستگاه درواقع در سطح نوع دستگاه بررسی میشود زیرا برخیاز دستگاهها از چندین نوع دستگاه پشتیبانی میکنند. وضعیت برگرداندهشده ترکیبی از وضعیتهای اتصالپذیری برای همه ویژگیهای آن دستگاه است.
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
درصورت وجود انواع دستگاههای ترکیبی، ممکن است وضعیت partiallyOnline مشاهده شود
وقتی اتصال اینترنت وجود ندارد. ممکن است ویژگیهای استاندارد Matter بهدلیل مسیریابی محلی همچنان آنلاین باشند، اما ویژگیهای مبتنی بر ابر آفلاین خواهند بود.
دریافت نشانی IP دستگاه
برای پیدا کردن نشانی IP دستگاه، از مشخصه networkInterfaces
GeneralDiagnosticsTrait استفاده کنید.
نشانیها بهعنوان اشیاء Data برگردانده میشوند که میتوانید آنها را بااستفاده از چارچوب Network به رشتههای استاندارد IPv4 یا IPv6 قالببندی کنید:
func getIpAddresses(trait: Matter.GeneralDiagnosticsTrait) -> [String] {
let interfaces = trait.attributes.networkInterfaces ?? []
var ipAddresses: [String] = []
for interface in interfaces {
for data in interface.iPv4Addresses {
if let ipv4 = IPv4Address(data) {
ipAddresses.append(String(describing: ipv4))
}
}
for data in interface.iPv6Addresses {
if let ipv6 = IPv6Address(data) {
ipAddresses.append(String(describing: ipv6))
}
}
}
return ipAddresses
}
کنترل کردن دستگاههای روشنایی
انواع دستگاه OnOffLight و DimmableLight از ویژگیهای استاندارد
Matter برای شناسایی لوازم، تغییر وضعیت برق،
و تنظیم سطوح روشنایی استفاده میکنند.
روشن یا خاموش کردن چراغ
از ویژگی
OnOffTrait
برای خواندن وضعیت فعلی برق OnOffLight یا DimmableLight و
روشن یا خاموش کردن چراغ استفاده کنید.
قبلاز خواندن مشخصه onOff، بررسی کنید که دستگاه از آن پشتیبانی میکند یا نه. برخیاز
دستگاهها بهعنوان نقاط پایانی فقط-فرمان عمل میکنند و وضعیت را گزارش نمیکنند.
// Check if the OnOff trait supports the onOff attribute. if onOffTrait.attributes.$onOff.isSupported { print("onOffTrait supports onOff state") } else { print("onOffTrait is for a command only device!") }
وقتی onOff true است، چراغ روشن است. وقتی onOff false است، چراغ
خاموش است.
برای تغییر دادن وضعیت برق چراغ، بررسی کنید که مشخصه از فرمان موردنظر پشتیبانی میکند یا نه، سپس on()، off()، یا toggle() را فراخوانی کنید.
// Check if the OnOff trait supports the toggle command. if onOffTraitTest.supportsToggleCommand { print("onOffTrait supports toggle command") } else { print("onOffTrait does not support stateful toggle command") }
// Calling a command on a trait. do { try await onOffTraitTest.toggle() } catch let _ as HomeError { // Code for handling the exception }
همچنین میتوانید on() و off() را مستقیماً فراخوانی کنید تا وضعیت صریحی تنظیم کنید:
do { try await onOffTraitTest.off() try await onOffTraitTest.on() } catch let _ as HomeError { // Code for handling the exception }
برای خاموش کردن چراغ با انتقال بصری تدریجی، offWithEffect() را فراخوانی کنید
و مقدار EffectIdentifierEnum را مشخص کنید:
// Turn off the light using the DyingLight effect. do { try await onOffTraitTest.offWithEffect( effectIdentifier: Matter.OnOffTrait.EffectIdentifierEnum.dyingLight, effectVariant: 0 ) } catch let _ as HomeError { // Code for handling the exception }
تنظیم میزان روشنایی
DimmableLight به ویژگی LevelControlTrait نیاز دارد و OnOffLight میتواند بهصورت اختیاری از آن پشتیبانی کند. از این مشخصه برای خواندن و
کنترل سطح روشنایی چراغ استفاده کنید.
مشخصه currentLevel سطح روشنایی فعلی را در مقیاسی از 0 تا 254 گزارش میکند. همچنین میتوانید minLevel و maxLevel را بررسی کنید تا
محدوده روشنایی معتبر پشتیبانیشده توسط سختافزار را تعیین کنید.
برای تنظیم روشنایی روی مقداری خاص، moveToLevel() را فراخوانی کنید. توجه داشته باشید که
moveToLevel() فقط زمانی سطح فعلی را تغییر میدهد که چراغ ازقبل روشن باشد،
مگر اینکه optionsOverride را با executeIfOff پیکربندی کنید. برای روشن کردن خودکار چراغ هنگام تنظیم سطح روشنایی غیرصفر (یا خاموش کردن آن هنگام تنظیم سطح روی حداقل)، از moveToLevelWithOnOff() استفاده کنید.
// Change the brightness of the light to 50% do { try await levelControlTraitTest.moveToLevel( level: UInt8(127), transitionTime: 0, optionsMask: Matter.LevelControlTrait.OptionsBitmap(), optionsOverride: Matter.LevelControlTrait.OptionsBitmap() ) } catch let _ as HomeError { // Code for handling the exception }
مثال زیر سطح روشنایی فعلی را میخواند و از
moveToLevelWithOnOff() برای تنظیم روشنایی چراغ کمنورشدنی روی ۷۵٪ (190) درطول
یک انتقال ۱ ثانیهای (10 دهم ثانیه) استفاده میکند:
func setLightBrightness(lightDeviceType: DimmableLightDeviceType) async throws { guard let levelControl = lightDeviceType.matterTraits.levelControlTrait else { return } // Read the current brightness level (0 to 254) let currentLevel: UInt8? = levelControl.attributes.currentLevel print("Current brightness level: \(String(describing: currentLevel))") // Move to ~75% brightness (190 out of 254) and turn on the light if it is off if levelControl.supportsMoveToLevelWithOnOffCommand { try await levelControl.moveToLevelWithOnOff( level: UInt8(190), transitionTime: 10, optionsMask: Matter.LevelControlTrait.OptionsBitmap(), optionsOverride: Matter.LevelControlTrait.OptionsBitmap() ) } }
همچنین میتوانید با فراخوانی stepWithOnOff() با .up یا .down و stepSize، روشنایی را نسبت به سطح فعلی افزایش یا کاهش دهید.
رنگ کنترل
ویژگیColorControlTrait
هم در
ColorTemperatureLightDeviceType
و هم در
ExtendedColorLightDeviceType
دردسترس است.
این ویژگی به شما امکان میدهد دمای رنگ را برحسب درجه میکرو-متقابل یا مایرد تنظیم کنید.
guard let colorControlTrait = colorTempLightDeviceType.matterTraits.colorControlTrait else { return } // Read the current color temperature and hardware limits in mireds // (Mireds = 1,000,000 / Kelvin; e.g., 370 mireds ≈ 2700K warm white, 250 mireds = 4000K cool white) let currentMireds = colorControlTrait.attributes.colorTemperatureMireds let minMireds = colorControlTrait.attributes.colorTempPhysicalMinMireds ?? 153 let maxMireds = colorControlTrait.attributes.colorTempPhysicalMaxMireds ?? 500 // Clamp target (370 mireds ≈ 2700K) to the device's physical bounds let targetMireds = min(max(UInt16(370), minMireds), maxMireds) if colorControlTrait.supportsMoveToColorTemperatureCommand { try await colorControlTrait.moveToColorTemperature( colorTemperatureMireds: targetMireds, transitionTime: 20, // 2.0 seconds (in 0.1s units) optionsMask: Matter.ColorControlTrait.OptionsBitmap(), optionsOverride: Matter.ColorControlTrait.OptionsBitmap() ) }
همچنین میتوانید رنگ را بااستفاده از مختصات رنگنمایی CIE 1931 و مقادیر اشباع و فام ۱۶ بیتی تنظیم کنید.
guard let colorControlTrait = extendedColorLightDeviceType.matterTraits.colorControlTrait else { return } // 1. Move to CIE 1931 xy chromaticity coordinates (scaled 0..65279) // Example: x = 0.3127 (20493), y = 0.3290 (21561) for D65 white point if colorControlTrait.supportsMoveToColorCommand { try await colorControlTrait.moveToColor( colorX: 20493, colorY: 21561, transitionTime: 10, // 1.0 second (in 0.1s units) optionsMask: Matter.ColorControlTrait.OptionsBitmap(), optionsOverride: Matter.ColorControlTrait.OptionsBitmap() ) } let currentX = colorControlTrait.attributes.currentX let currentY = colorControlTrait.attributes.currentY // 2. Move to 16-bit Enhanced Hue (0..65534) and 8-bit Saturation (0..254) if colorControlTrait.supportsEnhancedMoveToHueAndSaturationCommand { try await colorControlTrait.enhancedMoveToHueAndSaturation( enhancedHue: 43690, // ~240° (Blue) on the 0..65534 scale saturation: 254, // Full saturation transitionTime: 15, // 1.5 seconds (in 0.1s units) optionsMask: Matter.ColorControlTrait.OptionsBitmap(), optionsOverride: Matter.ColorControlTrait.OptionsBitmap() ) } // 3. Start a hardware color loop across the device's hue range if colorControlTrait.supportsColorLoopSetCommand { try await colorControlTrait.colorLoopSet( updateFlags: [ .updateAction, .updateDirection, .updateTime, .updateStartHue ], action: .activateFromColorLoopStartEnhancedHue, direction: .increment, time: 30, // 30 seconds per full cycle startHue: 0, optionsMask: Matter.ColorControlTrait.OptionsBitmap(), optionsOverride: Matter.ColorControlTrait.OptionsBitmap() ) }
Google.ExtendedColorControlTrait
یک ویژگی اختیاری Google در
ExtendedColorLightDevice
است که کنترل رنگ را با پذیرش نام رنگها، مقادیر RGB، یا مقادیر HSV ممیز شناور یکپارچه که رنگ و روشنایی را در یک واحد ترکیب میکنند، ساده میکند.
guard let extendedColorControlTrait = extendedColorLightDeviceType.googleTraits.extendedColorControlTrait else { return } // 1. Set color by name if extendedColorControlTrait.supportsMoveToColorNameCommand { try await extendedColorControlTrait.moveToColorName(colorName: "Lavender") } let currentColorName = extendedColorControlTrait.attributes.currentName // 2. Set color using 8-bit RGB values (0..255 per channel) // Automatically coordinates brightness (LevelControl) and color (ColorControl) if extendedColorControlTrait.supportsMoveToColorRGBCommand { try await extendedColorControlTrait.moveToColorRGB( red: 255, green: 128, blue: 0 ) } let currentRed = extendedColorControlTrait.attributes.currentRed let currentGreen = extendedColorControlTrait.attributes.currentGreen let currentBlue = extendedColorControlTrait.attributes.currentBlue // 3. Set color and brightness together using floating-point HSV // hue: 0.0...360.0, saturation: 0.0...1.0, value (brightness): 0.0...1.0 if extendedColorControlTrait.supportsMoveToColorHSVCommand { try await extendedColorControlTrait.moveToColorHSV( hue: 210.0, saturation: 0.85, value: 0.75 ) } let currentHue = extendedColorControlTrait.attributes.currentHue let currentSaturation = extendedColorControlTrait.attributes.currentSaturation let currentValue = extendedColorControlTrait.attributes.currentValue
مدیریت منحنیهای نورپردازی
منحنی روشنایی زمانبندی خودکاری را تعریف میکند که بهطور یکنواخت روشنایی و دمای رنگ اختیاری چراغهای هدف را درطول روز تغییر میدهد. برای مثال، منحنی نورپردازی میتواند بهتدریج چراغها را در صبح روشنتر کند و در عصر آنها را به رنگ گرمتری کمنور کند. انواع دستگاههای روشنایی که فقط از روشنایی پشتیبانی میکنند، مانند «چراغ کمنورشدنی»، از منحنی روشنایی پیروی میکنند و دمای رنگ را نادیده میگیرند.
ویژگی
Google.LightingCurveTrait
یک ویژگی در سطح ساختار
Google Home platform (GHP) است. ازطریق نمونه Structure به آن دسترسی پیدا میکنید، نه ازطریق دستگاه روشنایی مجزا.
هر زمانبندی در این ویژگی با یک LightingCurveSetting نشان داده میشود که
یک settingId یکتا را با یک LightingCurveConfig جفت میکند. جدول زیر
فیلدهای پیکربندی LightingCurveConfig را شرح میدهد:
| فیلد | شرح |
|---|---|
curvePointsArray |
دنبالهای از حداقل دو مورد CurvePoint با زمانهای متمایز. هر نقطه یک time (CurveTimeOfDay با hours از 0 تا 23 و minutes از 0 تا 59)، یک brightnessPercent (0 تا 100)، و یک colorTemperature اختیاری در کلوین را مشخص میکند. اگر colorTemperature برای هر نقطهای مشخص شده باشد، باید برای همه نقاط مقدار مثبتی باشد. |
roomId |
شناسه اتاق هدف (برای مثال، room@{uuid}). منحنی نورپردازی را برای چراغهای سازگار با قابلیت تنظیم نور و دمای رنگ در آن اتاق اعمال میکند. roomId یا devices را مشخص کنید. |
devices |
یک شیء TargetDevices حاوی فهرستی از ورودیهای TargetDevice، هرکدام با یک دستگاه id و شناسه دستگاه type (مانند home.matter.0000.types.0101 برای DimmableLight یا home.matter.0000.types.010c برای ColorTemperatureLight). devices یا roomId را مشخص کنید. |
daysOfWeekArray |
روزهای هفتهای که منحنی روشنایی اجرا میشود (Locale.Weekday). اگر فهرست خالی باشد، منحنی روشنایی روزانه اجرا میشود. |
adaptive |
بولی اختیاری که نشان میدهد آیا منحنی روشنایی تطبیقی است یا نه، به این معنی که چراغ هدف وقتی درطول پنجره زمانبندیشده روشن میشود، سطح منحنی فعال را ازسر میگیرد. وقتی false، تغییر دستی چراغ باعث میشود چراغ برای بقیه روز از منحنی نورپردازی جدا شود. وقتی true، چراغی که درطول پنجره زمانبندی خاموش و سپس دوباره روشن میشود، چراغ را با منحنی روشنایی دوباره درگیر میکند و باعث میشود با روشنایی و دمای رنگ فعلی منحنی مطابقت داشته باشد و از آنجا منحنی را دنبال کند. |
enabled |
بولی اختیاری که نشان میدهد آیا تنظیم منحنی نورپردازی فعال است یا نه. هنگام ایجاد تنظیم جدید، بهطور پیشفرض روی true تنظیم میشود. وقتی enabled از فرمان بهروزرسانی حذف شود، وضعیت enabled تغییر نمیکند. |
خواندن تنظیمات منحنی نورپردازی
برای بررسی منحنیهای روشنایی پیکربندیشده برای یک سازه، مشخصه
Google.LightingCurveTrait
را از Structure بازیابی کنید و ویژگی
lightingCurveSettingsArray
آن را بخوانید.
func readLightingCurves(structure: Structure) async {
guard let lightingCurve = await structure.traits.get(
Google.LightingCurveTrait.self
) else {
return
}
for setting in lightingCurve.attributes.lightingCurveSettingsArray {
let settingId = setting.settingId
let config = setting.config
print(
"Setting ID: \(String(describing: settingId)), " +
"enabled: \(String(describing: config?.enabled))"
)
for point in config?.curvePointsArray ?? [] {
print(
" Time: \(point.time?.hours ?? 0):\(point.time?.minutes ?? 0), " +
"Brightness: \(point.brightnessPercent ?? 0)%, " +
"ColorTemp: \(point.colorTemperature ?? 0)K"
)
}
}
}
ایجاد تنظیم منحنی نورپردازی
برای ایجاد زمانبندی منحنی روشنایی جدید در ساختار،
LightingCurveConfig را با حداقل دو ورودی CurvePoint، چراغهای هدف
(مشخصشده با roomId یا devices)، و روزهای فعال هفته بسازید. سپس
پیکربندی را به createLightingCurveSetting() منتقل کنید. فرمان، settingId منحصربهفرد اختصاصدادهشده به تنظیم منحنی نورپردازی جدید را برمیگرداند.
مثال زیر منحنی روشنایی روزهای هفته را برای اتاقی ایجاد میکند که روشنایی را از ۳۰٪ در ساعت ۷:۰۰ صبح به ۸۰٪ در ساعت ۹:۰۰ صبح افزایش میدهد و در ساعت ۹:۰۰ شب به ۲۰٪ کاهش میدهد:
func createRoomLightingCurve(
structure: Structure,
targetRoomId: String
) async throws -> String? {
guard let lightingCurve = await structure.traits.get(
Google.LightingCurveTrait.self
) else {
return nil
}
let curvePoints = [
Google.LightingCurveTrait.CurvePoint(
time: Google.LightingCurveTrait.CurveTimeOfDay(hours: 7, minutes: 0),
brightnessPercent: 30,
colorTemperature: 2700
),
Google.LightingCurveTrait.CurvePoint(
time: Google.LightingCurveTrait.CurveTimeOfDay(hours: 9, minutes: 0),
brightnessPercent: 80,
colorTemperature: 4000
),
Google.LightingCurveTrait.CurvePoint(
time: Google.LightingCurveTrait.CurveTimeOfDay(hours: 21, minutes: 0),
brightnessPercent: 20,
colorTemperature: 2200
),
]
let config = Google.LightingCurveTrait.LightingCurveConfig(
curvePointsArray: curvePoints,
roomId: targetRoomId,
daysOfWeekArray: [
.monday,
.tuesday,
.wednesday,
.thursday,
.friday,
],
adaptive: true,
enabled: true
)
let response = try await lightingCurve.createLightingCurveSetting(
config: config
)
return response.settingId
}
برای هدفیابی دستگاههای روشنایی خاص بهجای کل اتاق،
پارامتر devices را بااستفاده از Google.LightingCurveTrait.TargetDevices ارائه دهید:
let targetDevices = Google.LightingCurveTrait.TargetDevices(
devicesArray: [
Google.LightingCurveTrait.TargetDevice(
id: dimmableLight.id,
type: DimmableLightDeviceType.identifier
)
]
)
let deviceCurveConfig = Google.LightingCurveTrait.LightingCurveConfig(
curvePointsArray: curvePoints,
devices: targetDevices,
daysOfWeekArray: [.saturday, .sunday],
adaptive: true,
enabled: true
)
let response = try await lightingCurve.createLightingCurveSetting(
config: deviceCurveConfig
)
let settingId = response.settingId
بهروزرسانی تنظیم منحنی نورپردازی
برای اصلاح منحنی روشنایی موجود (مثلاً تغییر دادن نقاط منحنی آن،
بهروزرسانی روزهای فعال هفته، یا فعال و غیرفعال کردن
برنامه زمانی)، updateLightingCurveSetting() را با settingId هدف و
LightingCurveConfig بهروزشده فراخوانی کنید.
func updateLightingCurve(
structure: Structure,
settingId: String,
updatedConfig: Google.LightingCurveTrait.LightingCurveConfig
) async throws {
guard let lightingCurve = await structure.traits.get(
Google.LightingCurveTrait.self
) else {
return
}
_ = try await lightingCurve.updateLightingCurveSetting(
settingId: settingId,
config: updatedConfig
)
}
حذف تنظیم منحنی نورپردازی
برای برداشتن تنظیم منحنی روشنایی از ساختار،
deleteLightingCurveSetting() را با settingId تنظیمی که میخواهید
حذف شود فراخوانی کنید.
func deleteLightingCurve(
structure: Structure,
settingId: String
) async throws {
guard let lightingCurve = await structure.traits.get(
Google.LightingCurveTrait.self
) else {
return
}
_ = try await lightingCurve.deleteLightingCurveSetting(settingId: settingId)
}