Işık cihazı kılavuzu

Işık cihazları, armatürleri tanımlamak, güç durumlarını değiştirmek ve parlaklık seviyelerini ayarlamak için standart Matter özelliklerini kullanır.

En temel ışık cihazı türü, OnOffTrait ve IdentifyTrait özellikleriyle uygulanan ve isteğe bağlı olarak LevelControlTrait ile LightEffectsTrait özelliklerini destekleyen OnOffLightDeviceType türüdür.

Diğer ışık türleri ek özellikler sunar ve farklı özelliklerle uygulanır:

Home API'leri Cihaz Türü Özellikler Swift Örnek Uygulaması Kullanım Örneği

Renk Sıcaklığı Işığı

ColorTemperatureLightDeviceType

home.matter.0000.types.010c

Açılıp kapatılabilen, ışık yoğunluğu ve renk sıcaklığı ayarlanabilen bir aydınlatma cihazı.

Gerekli Özellikler
     matter IdentifyTrait
     matter OnOffTrait
     matter LevelControlTrait
     matter ColorControlTrait

İsteğe Bağlı Özellikler
     google LightEffectsTrait
     google ExtendedColorControlTrait
Açık

Parlaklığı Ayarlanabilir Işık

DimmableLightDeviceType

home.matter.0000.types.0101

Açılıp kapatılabilen, ışığının yoğunluğu ayarlanabilen ve bağlı bir varlık sensörü aracılığıyla açılıp kapatılabilen bir aydınlatma cihazı.

Required Traits
     matter IdentifyTrait
     matter OnOffTrait
     matter LevelControlTrait

İsteğe Bağlı Özellikler
     google LightEffectsTrait
Açık

Genişletilmiş Renkli Işık

ExtendedColorLightDeviceType

home.matter.0000.types.010d

Açılıp kapatılabilen, ışık yoğunluğu ve renk sıcaklığı ayarlanabilen ve bağlı bir varlık sensörü aracılığıyla açılıp kapatılabilen aydınlatma cihazı.

Gerekli Özellikler
     matter IdentifyTrait
     matter OnOffTrait
     matter LevelControlTrait
     matter ColorControlTrait

İsteğe Bağlı Özellikler
     google LightEffectsTrait
     google ExtendedColorControlTrait
Açık

Açma/Kapama Işığı

OnOffLightDeviceType

home.matter.0000.types.0100

Açılıp kapatılabilen bir aydınlatma cihazı.

Required Traits
     matter IdentifyTrait
     matter OnOffTrait

İsteğe Bağlı Özellikler
     matter LevelControlTrait
     google LightEffectsTrait
Açık

Herhangi bir özelliği kullanmadan veya özellikleri güncellemeye çalışmadan önce her zaman cihazın özellik ve komut desteğini kontrol edin. Daha fazla bilgi için iOScihazlarını kontrol etme başlıklı makaleyi inceleyin.

Ön koşullar

Aydınlatma cihazları ve aydınlatma eğrileriyle çalışmadan önce uygulamanızın Home SDK'yı başlattığından ve gerekli içe aktarma işlemlerini içerdiğinden emin olun:

import Foundation
import GoogleHomeSDK
import GoogleHomeTypes
import Network

Işık cihazlarını bulma

Bir yapıdaki aydınlatma cihazlarını bulmak için cihaz listesini cihaz türüne göre filtreleyin. Örneğin, OnOffLightDeviceType ve 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)

Ayrıca, tek bir filtrede birden fazla ışık cihazı türündeki tüm aydınlatma cihazlarını alabilirsiniz:

// 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)
  }

Cihaz hakkında temel bilgileri alma

   iOS için örnek uygulamada uygulandı   

BasicInformation özelliği; cihazın tedarikçi adı, tedarikçi kimliği, ürün kimliği, ürün adı (model bilgilerini içerir) ve yazılım sürümü gibi bilgileri içerir:

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!

Aydınlatma cihazını tanımlama

Bir odada birden fazla ışık varsa görsel bir tanımlama durumu (ör. ışığı birkaç saniye boyunca yanıp söndürme) tetikleyerek kullanıcıların belirli bir fiziksel armatürü bulmasına yardımcı olabilirsiniz. Dört ışık cihazı türünün tümü Matter.IdentifyTrait özelliğini gerektirir.

Tanımlama durumunu başlatmak için identify komutunu saniye cinsinden identifyTime süresiyle çağırın. 0 değerini iletmek, tanımlama durumunu hemen durdurur. Blink veya Breathe gibi belirli bir görsel efekti çalıştırmak için triggerEffect işlevini de çağırabilirsiniz.

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
    )
  }
}

Işıklandırma cihazının bağlantısını kontrol etme

Bazı cihazlar birden fazla cihaz türünü desteklediğinden, bir cihazın bağlantısı aslında cihaz türü düzeyinde kontrol edilir. Döndürülen durum, söz konusu cihazdaki tüm özelliklerin bağlantı durumlarının birleşimidir.

let lightConnectivity =
  dimmableLightDeviceType.metadata.sourceConnectivity
  .connectivityState

İnternet bağlantısı olmadığında karma cihaz türleri için partiallyOnline durumu görülebilir. Matter standart özellikleri, yerel yönlendirme nedeniyle hâlâ online olabilir ancak bulut tabanlı özellikler çevrimdışı olur.

Cihazın IP adresini alma

Cihazın IP adresini bulmak için GeneralDiagnosticsTrait'nin networkInterfaces özelliğini kullanın. Adresler Data nesneleri olarak döndürülür. Network çerçevesini kullanarak bunları standart IPv4 veya IPv6 dizeleri olarak biçimlendirebilirsiniz:

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
}

Aydınlatma cihazlarını kontrol etme

OnOffLight ve DimmableLight cihaz türleri, armatürleri tanımlamak, güç durumlarını değiştirmek ve parlaklık seviyelerini ayarlamak için standart Matter özelliklerini kullanır.

Işığı açma veya kapatma

Bir OnOffLight veya DimmableLight cihazının mevcut güç durumunu okumak ve ışığı açıp kapatmak için OnOffTrait özelliğini kullanın.

onOff özelliğini okumadan önce cihazın bu özelliği desteklediğini doğrulayın. Bazı cihazlar yalnızca komut uç noktaları olarak çalışır ve durum bildirmez.

// 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 olduğunda ışık yanar. onOff, false olduğunda ışık kapalıdır.

Işığın güç durumunu değiştirmek için özelliğin istenen komutu desteklediğini doğrulayın ve ardından on(), off() veya toggle() komutunu çağırın.

// 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
}

Ayrıca, açık bir durum ayarlamak için doğrudan on() ve off() işlevlerini de çağırabilirsiniz:

do {
  try await onOffTraitTest.off()
  try await onOffTraitTest.on()
} catch let _ as HomeError {
  // Code for handling the exception
}

Bir ışığı kademeli görsel geçişle kapatmak için offWithEffect() işlevini çağırın ve bir EffectIdentifierEnum değeri belirtin:

// 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
}

Parlaklık düzeylerini ayarlayın

DimmableLight için LevelControlTrait özelliği gerekir. OnOffLight ise bu özelliği isteğe bağlı olarak destekleyebilir. Bu özelliği kullanarak bir ışığın parlaklık seviyesini okuyabilir ve kontrol edebilirsiniz.

currentLevel özelliği, mevcut parlaklık seviyesini 0 ile 254 arasında bir ölçekte bildirir. Donanım tarafından desteklenen geçerli parlaklık aralığını belirlemek için minLevel ve maxLevel değerlerini de inceleyebilirsiniz.

Parlaklığı belirli bir değere ayarlamak için moveToLevel() yöntemini çağırın. moveToLevel(), optionsOverride'i executeIfOff ile yapılandırmadığınız sürece yalnızca ışık açıkken mevcut seviyeyi değiştirir. Sıfır olmayan bir parlaklık seviyesi ayarlarken ışığı otomatik olarak açmak (veya seviyeyi minimuma ayarlarken kapatmak) için moveToLevelWithOnOff() kullanın.

// 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
}

Aşağıdaki örnekte mevcut parlaklık seviyesi okunur ve kısılabilir bir ışığı 1 saniyelik (10 saniyenin onda biri) geçişle% 75 parlaklığa (190) ayarlamak için moveToLevelWithOnOff() kullanılır:

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()
    )
  }
}

Ayrıca stepWithOnOff() komutunu .up veya .down ve stepSize ile çağırarak parlaklığı mevcut seviyeye göre artırabilir veya azaltabilirsiniz.

Kontrol rengi

ColorControlTrait özelliği hem ColorTemperatureLightDeviceType hem de ExtendedColorLightDeviceType üzerinde kullanılabilir.

Bu özellik, renk sıcaklığını mikro karşılıklı derece veya mired cinsinden ayarlamanıza olanak tanır.

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()
  )
}

Ayrıca CIE 1931 renk koordinatlarını ve 16 bit renk tonu ve doygunluk değerlerini kullanarak rengi ayarlayabilirsiniz.

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, ExtendedColorLightDevice üzerinde isteğe bağlı bir Google özelliğidir. Renk adlarını, RGB değerlerini veya renk ile parlaklığı tek bir birimde birleştiren birleşik kayan nokta HSV değerlerini kabul ederek renk kontrolünü basitleştirir.

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

Işık eğrilerini yönetme

Aydınlatma eğrisi, gün boyunca hedef ışıkların parlaklığını ve isteğe bağlı renk sıcaklığını sorunsuz bir şekilde değiştiren otomatik bir program tanımlar. Örneğin, bir aydınlatma eğrisi sabahları ışıkları kademeli olarak açabilir ve akşamları daha sıcak bir tona kısabilir. Yalnızca parlaklığı destekleyen ışık cihazı türleri (ör. kısılabilir ışık), parlaklık eğrisini takip eder ve renk sıcaklığını yok sayar.

Google.LightingCurveTrait özelliği, yapı düzeyinde bir Google Home platform (GHP) özelliğidir. Bu hizmete tek bir aydınlatma cihazından değil, bir Structure örneğinden erişirsiniz.

Özellikteki her program, benzersiz bir settingId ile LightingCurveConfig değerini eşleyen bir LightingCurveSetting ile temsil edilir. Aşağıdaki tabloda LightingCurveConfig aracının yapılandırma alanları açıklanmaktadır:

Alan Açıklama
curvePointsArray Farklı zamanlara sahip en az iki CurvePoint öğesinden oluşan bir dizi. Her nokta bir time (0 ile 23 arasında hours ve 0 ile 59 arasında minutes içeren CurveTimeOfDay), bir brightnessPercent (0 ile 100 arasında) ve Kelvin cinsinden isteğe bağlı bir colorTemperature belirtir. Herhangi bir nokta için colorTemperature belirtilirse tüm noktalar için pozitif bir değer olmalıdır.
roomId Hedef odanın kimliği (ör. room@{uuid}). Aydınlatma eğrisini, o odadaki uyumlu, kısılabilir ve renk sıcaklığı ışıklarına uygular. roomId veya devices değerlerinden birini belirtin.
devices Her biri bir cihaz id ve cihaz type kimliği (DimmableLight için home.matter.0000.types.0101 veya ColorTemperatureLight için home.matter.0000.types.010c gibi) içeren TargetDevice girişlerinin listesini içeren bir TargetDevices nesnesi. devices veya roomId değerini belirtin.
daysOfWeekArray Işıklandırma eğrisinin çalıştığı haftanın günleri (Locale.Weekday). Liste boşsa ışıklandırma eğrisi her gün çalışır.
adaptive Işık eğrisinin uyarlanabilir olup olmadığını belirten isteğe bağlı Boole değeri. Uyarlanabilir ışık eğrisi, hedef ışığın planlanan zaman aralığında açıldığında etkin eğri seviyesine devam ettiği anlamına gelir. false etkin olduğunda, bir ışıkta manuel olarak yapılan değişiklik, günün geri kalanında ışığı aydınlatma eğrisinden ayırır. true olduğunda, planlama zaman aralığı sırasında kapatılıp tekrar açılan bir ışık, ışık eğrisiyle yeniden etkileşime girerek eğrinin mevcut parlaklığına ve renk sıcaklığına uyar ve eğriyi oradan takip eder.
enabled Işık eğrisi ayarının etkin olup olmadığını gösteren isteğe bağlı boole değeri. Yeni bir ayar oluşturulurken varsayılan olarak true değerine ayarlanır. enabled, bir güncelleme komutundan çıkarıldığında enabled durumu değişmez.

Işık eğrisi ayarlarını okuma

Bir yapı için yapılandırılmış aydınlatma eğrilerini incelemek için Structure özelliğinden Google.LightingCurveTrait özelliğini alın ve lightingCurveSettingsArray özelliğini okuyun.

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"
      )
    }
  }
}

Işıklandırma eğrisi ayarı oluşturma

Bir yapıda yeni bir aydınlatma eğrisi programı oluşturmak için en az iki CurvePoint girişi, hedef ışıklar (roomId veya devices ile belirtilir) ve haftanın etkin günlerini içeren bir LightingCurveConfig oluşturun. Ardından yapılandırmayı createLightingCurveSetting() öğesine iletin. Komut, yeni ışıklandırma eğrisi ayarına atanan benzersiz settingId değerini döndürür.

Aşağıdaki örnekte, bir oda için hafta içi aydınlatma eğrisi oluşturulmaktadır. Bu eğri, parlaklığı sabah 07:00'de% 30'dan sabah 09:00'da% 80'e çıkarır ve akşam 21:00'de% 20'ye düşürür:

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
}

Tüm oda yerine belirli aydınlatma cihazlarını hedeflemek için Google.LightingCurveTrait.TargetDevices kullanarak devices parametresini sağlayın:

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

Işık eğrisi ayarını güncelleme

Mevcut bir aydınlatma eğrisini değiştirmek (ör. eğri noktalarını değiştirmek, haftanın etkin günlerini güncellemek veya programı etkinleştirip devre dışı bırakmak) için hedef settingId ve güncellenmiş LightingCurveConfig ile updateLightingCurveSetting() yöntemini çağırın.

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
  )
}

Işıklandırma eğrisi ayarını silme

Bir yapıdan ışıklandırma eğrisi ayarını kaldırmak için silmek istediğiniz ayarın settingId değeriyle deleteLightingCurveSetting() yöntemini çağırın.

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)
}