Changing a device

The LIFX protocol supports Set messages which are used to change metadata or the visual appearance of a device. These messages also return State messages like the Get messages do when you specify res_required=1.

Note however that if your Set messages changes the visual appearance of the light it is likely you'll get the state of the device before your change.

Device

SetPower - Packet 21

This packet lets you set the current level of power on the device.

Will return one StatePower (22) message

level: Uint16 If you specify 0 the light will turn off and if you specify 65535 the device will turn on.

SetLabel - Packet 24

This packet lets you set the label on the device. The label is a string you assign to the device and will be displayed as the name of the device in the LIFX mobile apps.

Will return one StateLabel (25) message

label: 32 bytes String The string you want to assign.

SetReboot - Packet 38

This packet will instruct the device to perform a reboot similar to if it had been power cycled.

SetLocation - Packet 49

This packet lets you set the location information on the device.

Will return one StateLocation (50) message

location: 16 Bytes 16 bytes representing a UUID of the location. You should have the same UUID value for each device in this location

label: 32 bytes String
The name of the location.

updated_at: Uint64
The time you updated the location of this device as an epoch in nanoseconds.

SetGroup - Packet 52

This packet lets you set the group information on the device.

Will return one StateGroup (53) message

group: 16 Bytes 16 bytes representing a UUID of the group. You should have the same UUID value for each device in this group

label: 32 bytes String
The name of the group.

updated_at: Uint64
The time you updated the group of this device as an epoch in nanoseconds.

Light

SetColor - Packet 102

This packet lets you set the HSBK value for the light. For devices that have multiple zones, this will set all Zones on the device to this color.

Will return one LightState (107) message

reserved6: 1 Reserved bytes

hue: Uint16

saturation: Uint16

brightness: Uint16

kelvin: Uint16

duration: Uint32
The time it will take to transition to the new HSBK in milliseconds.

SetWaveform - Packet 103

This packet lets you set the HSBK and Waveforms value for the light. For devices that have multiple zones, this will treat all the zones on the device as one.

Will return one LightState (107) message

reserved6: 1 Reserved bytes

transient: BoolInt
See Waveforms

hue: Uint16

saturation: Uint16

brightness: Uint16

kelvin: Uint16

period: Uint32
See Waveforms

cycles: Float
See Waveforms

skew_ratio: Int16
See Waveforms

waveform: Uint8 using Waveform Enum
See Waveforms

SetLightPower - Packet 117

This is the same as SetPower (21) but allows you to specify how long it will take to transition to the new power state.

Will return one StateLightPower (118) message

level: Uint16 If you specify 0 the light will turn off and if you specify 65535 the device will turn on.

duration: Uint32
The time it will take to transition to the new state in milliseconds.

SetWaveformOptional - Packet 119

This behaves like SetWaveform (103) but allows you to keep certain parts of the original HSBK values during the transition.

Will return one LightState (107) message

reserved6: 1 Reserved bytes

transient: BoolInt
See Waveforms

hue: Uint16

saturation: Uint16

brightness: Uint16

kelvin: Uint16

period: Uint32
See Waveforms

cycles: Float
See Waveforms

skew_ratio: Int16
See Waveforms

waveform: Uint8 using Waveform Enum
See Waveforms

set_hue: BoolInt
Use the hue value in this message

set_saturation: BoolInt
Use the saturation value in this message

set_brightness: BoolInt
Use the brightness value in this message

set_kelvin: BoolInt
Use the kelvin value in this message

SetInfrared - Packet 122

This packet lets you change the current infrared value on the device

Will return one StateInfrared (121) message

This packet requires the device has the infrared capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

brightness: Uint16 The amount of infrared emitted by the device. 0 is no infrared and 65535 is the most infrared.

SetHevCycle - Packet 143

This packet lets you start or stop a HEV cycle on the device.

Will return one StateHevCycle (144) message

This packet requires the device has the hev capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

enable: BoolInt Set this to false to turn off the cycle and true to start the cycle

duration_s: Uint32
The duration, in seconds that the cycle should last for. A value of 0 will use the default duration set by SetHevCycleConfiguration (146).

SetHevCycleConfiguration - Packet 146

This packet lets you set default values for a HEV cycle on the device

Will return one StateHevCycleConfiguration (147) message

This packet requires the device has the hev capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

indication: BoolInt Set this to true to run a short flashing indication at the end of the HEV cycle

duration_s: Uint32
This is the default duration that is used when SetHevCycle (143) is given 0 for duration_s.

MultiZone

SetColorZones - Packet 501

Set a segment of your strip to a HSBK value. If your devices supports extended multizone messages it is recommended you use those messages instead.

Will return one StateMultiZone (506) message

This packet requires the device has the Linear Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

start_index: Uint8 The first zone in the segment we are changing.

end_index: Uint8
The last zone in the segment we are changing

hue: Uint16

saturation: Uint16

brightness: Uint16

kelvin: Uint16

duration: Uint32
The amount of time it takes to transition to the new values in milliseconds.

apply: Uint8 using MultiZoneApplicationRequest Enum

SetMultiZoneEffect - Packet 508

Start a multizone Firmware Effect on the device.

Will return one StateMultiZoneEffect (509) message

This packet requires the device has the Linear Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

instanceid: Uint32 A unique number identifying this effect.

type: Uint8 using MultiZoneEffectType Enum

reserved6: 2 Reserved bytes

speed: Uint32
The time it takes for one cycle of the effect in milliseconds.

duration: Uint64
The time the effect will run for in nanoseconds.

reserved7: 4 Reserved bytes

reserved8: 4 Reserved bytes

parameters: 32 Bytes
This field is 8 4 byte fields which change meaning based on the effect that is running. When the effect is MOVE only the second field is used and is a Uint32 representing the DIRECTION enum. This field is currently ignored for all other multizone effects.

SetExtendedColorZones - Packet 510

This message lets you change the HSBK values for all zones on the strip in one message.

Will return one StateExtendedColorZones (512) message

This packet requires the device has the Extended Linear Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

duration: Uint32 The time it takes to transition to the new values in milliseconds.

apply: Uint8 using MultiZoneExtendedApplicationRequest Enum
Whether to make this change now

zone_index: Uint16
The first zone to apply colors from. If the light has more than 82 zones, then send multiple messages with different indices to update the whole device.

colors_count: Uint8
The number of colors in the colors field to apply to the strip

colors: 82 Color structures
The HSBK values to change the strip with.

Relay

SetRPower - Packet 817

Set the power state of a relay on a switch device. Current models of the LIFX switch do not have dimming capability, so the two valid values are 0 for off and 65535 for on.

Will return one StateRPower (818) message

This packet requires the device has the Relays capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

relay_index: Uint8 The relay on the switch starting from 0.

level: Uint16
The new value of the relay

Tile

SetUserPosition - Packet 703

Allows you to specify the position of this device in the chain relative to other device in the chain.

You can find more information about this data by looking at Tile Positions.

This message has no response packet even if you set res_required=1.

This packet requires the device has the Matrix Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

tile_index: Uint8 The device to change. This is 0 indexed and starts from the device closest to the controller.

reserved6: 2 Reserved bytes

user_x: Float

user_y: Float

Set64 - Packet 715

This lets you set up to 64 HSBK values on the device.

This message has no response packet even if you set res_required=1.

This packet requires the device has the Matrix Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

tile_index: Uint8 The device to change. This is 0 indexed and starts from the device closest to the controller.

length: Uint8
The number of devices in the chain to change starting from tile_index

reserved6: 1 Reserved bytes

x: Uint8
The x co-ordinate to start applying colors from. You likely want this to be 0.

y: Uint8
The y co-ordinate to start applying colors from. You likely want this to be 0.

width: Uint8
The width of the square you're applying colors to. This should be 8 for the LIFX Tile and 5 for the LIFX Candle.

duration: Uint32
The time it will take to transition to new state in milliseconds.

colors: 64 Color structures
The HSBK values to assign to each zone specified by this packet.

SetTileEffect - Packet 719

This packet will let you start a Firmware Effect on the device.

Will return one StateTileEffect (720) message

This packet requires the device has the Matrix Zones capability. You may use GetVersion (32), GetHostFirmware (14) and the Product Registry to determine whether your device has this capability

Note: The Sky effect is only supported on LIFX Ceiling, running firmware 4.4 or higher

reserved0: 1 Reserved bytes

reserved1: 1 Reserved bytes

instanceid: Uint32
A unique number identifying this effect.

type: Uint8 using TileEffectType Enum

speed: Uint32
The time it takes for one cycle of the effect in milliseconds.

duration: Uint64
The time the effect will run for in nanoseconds.

reserved2: 4 Reserved bytes

reserved3: 4 Reserved bytes

skyType: TileEffectSkyType only used on SKY effect

reserved4: 3 Reserved bytes

cloudSaturationMin 1 Bytes only used on SKY effect when using CLOUDS (recommended default is 50)

reserved5: 3 Reserved bytes

reserved6: 24 Reserved bytes
This field is currently ignored by all firmware effects.

palette_count: Uint8
The number of values in palette that you want to use.

palette: 16 Color structures
The HSBK values to be used by the effect. On the MORPH effect this is used as the palette for generating the effect. With the SKY effect, the indices specified in TileEffectSkyPalette dictate how each color will be used.