@@ -431,10 +431,10 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
431431 }
432432
433433 // Set RBG light in HSV Mode
434- public func setRGBLightValues( brr: CGFloat , hue: CGFloat , sat: CGFloat ) {
434+ public func setRGBLightValues( brr: CGFloat , hue: CGFloat , hue360 : CGFloat , sat: CGFloat ) {
435435 var cmd : Data = Data ( )
436436 // Logger.debug("hue: \(hue) sat: \(sat)")
437- cmd = getRGBLightValue ( brightness: brr, hue: hue, satruation: sat)
437+ cmd = getRGBLightValue ( brightness: brr, hue: hue, hue360 : hue360 , satruation: sat)
438438
439439 lightMode = . HSIMode
440440
@@ -483,7 +483,11 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
483483 if data. prefix ( upTo: BleUpdate . channelUpdatePrefix. count) == BleUpdate . channelUpdatePrefix
484484 && data. count == BleUpdate . channelUpdatePrefix. count + 2 {
485485 // data[3] range in [0,1,2,3,4,5,6,7,8]
486- channel. value = UInt8 ( data [ 3 ] + 1 ) . clamped ( to: 1 ... maxChannel) // only 1-maxChannel channel a allowed.
486+ if maxChannel >= 1 {
487+ channel. value = UInt8 ( data [ 3 ] + 1 ) . clamped ( to: 1 ... maxChannel) // only 1-maxChannel channel a allowed.
488+ } else {
489+ channel. value = UInt8 ( data [ 3 ] + 1 ) . clamped ( to: 1 ... 30 )
490+ }
487491 } else {
488492 Logger . info ( " handleNotifyValueUpdate \( data. hexEncodedString ( ) ) " )
489493 }
@@ -661,7 +665,7 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
661665 cmd = getCCTOnlyLightValue ( brightness: brr, correlatedColorTemperature: CGFloat ( cctValue. value) )
662666 }
663667 } else if lightMode == . HSIMode {
664- cmd = getRGBLightValue ( brightness: brr, hue: CGFloat ( hueValue. value) / 360.0 , satruation: CGFloat ( satValue. value) / 100.0 )
668+ cmd = getRGBLightValue ( brightness: brr, hue: CGFloat ( hueValue. value) / 360.0 , hue360 : CGFloat ( hueValue . value ) , satruation: CGFloat ( satValue. value) / 100.0 )
665669 } else {
666670 cmd = getSceneValue ( channel. value, brightness: CGFloat ( brr) )
667671 }
@@ -671,7 +675,7 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
671675 write ( data: cmd as Data , to: characteristic)
672676 }
673677
674- private func getRGBLightValue( brightness brr: CGFloat , hue theHue: CGFloat , satruation sat: CGFloat ) -> Data {
678+ private func getRGBLightValue( brightness brr: CGFloat , hue theHue: CGFloat , hue360 theHue360 : CGFloat , satruation sat: CGFloat ) -> Data {
675679 var ratio = 100.0
676680 if brr > 1.0 {
677681 ratio = 1.0
@@ -680,6 +684,7 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
680684 let newBrrValue : Int = Int ( brr * ratio) . clamped ( to: 0 ... 100 )
681685 let newSatValue : Int = Int ( sat * 100.0 ) . clamped ( to: 0 ... 100 )
682686 let newHueValue = Int ( theHue * 360.0 ) . clamped ( to: 0 ... 360 )
687+ let newHue360Value = Int ( theHue360) . clamped ( to: 0 ... 360 )
683688
684689 // Red 7886 0400 0064 643F
685690 // Blue 7886 04E7 0064 64B0
@@ -701,7 +706,7 @@ class NeewerLight: NSObject, ObservableNeewerLightProtocol {
701706 bArr [ 6 ] = newBrrValue // brightness
702707
703708 brrValue. value = newBrrValue
704- hueValue. value = newHueValue
709+ hueValue. value = newHue360Value
705710 satValue. value = newSatValue
706711
707712 let bArr1 : [ UInt8 ] = appendCheckSum ( bArr)
0 commit comments