Summary

Yeelight smart LED control protocol over TCP. Device supports brightness-only adjustment (dimmer variant). Discovery via SSDP multicast (UDP 239.255.255.250:1982), control via JSON-RPC over TCP port 55443. No authentication required.

Transport

protocols:
  - tcp
  - udp
addressing:
  port: 55443  # inferred from Location header in SSDP response (yeelight://host:port)
udp_discovery:
  multicast_address: 239.255.255.250
  port: 1982
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # set_power, toggle commands present
- levelable       # set_bright, adjust_bright present (brightness adjustment)
- queryable       # get_prop, cron_get present
- routable        # set_scene present (scene selection)

Actions

# JSON-RPC over TCP (port 55443). Each command field below holds the verbatim
# "method" value from the source method table (Table 4-1). The full wire frame is:
#   {"id": <int>, "method": "<command>", "params": [<param values in declared order>]}\r\n
# Param values map positionally to each action's params[] list. Every message
# terminated by \r\n. Example full frame for set_power:
#   {"id":1,"method":"set_power","params":["on","smooth",500]}\r\n

# get_prop - query device properties
- id: get_prop
  label: Get Properties
  kind: query
  command: "get_prop"
  params:
    - name: properties
      type: array
      description: List of property names to retrieve (power, bright, ct, rgb, hue, sat, color_mode, etc.)

# set_ct_abx - set color temperature
- id: set_ct_abx
  label: Set Color Temperature
  kind: action
  command: "set_ct_abx"
  params:
    - name: ct_value
      type: integer
      description: Target color temperature in Kelvin (1700-6500)
    - name: effect
      type: string
      enum: [sudden, smooth]
      description: "sudden" = immediate change, "smooth" = gradual transition
    - name: duration
      type: integer
      description: Transition duration in milliseconds (minimum 30ms)

# set_rgb - set RGB color
- id: set_rgb
  label: Set RGB Color
  kind: action
  command: "set_rgb"
  params:
    - name: rgb_value
      type: integer
      description: RGB color value (0-16777215, decimal)
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer
      description: Transition duration in milliseconds

# set_hsv - set HSV color
- id: set_hsv
  label: Set HSV Color
  kind: action
  command: "set_hsv"
  params:
    - name: hue
      type: integer
      description: Hue value (0-359)
    - name: sat
      type: integer
      description: Saturation value (0-100)
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer
      description: Transition duration in milliseconds

# set_bright - set brightness
- id: set_bright
  label: Set Brightness
  kind: action
  command: "set_bright"
  params:
    - name: brightness
      type: integer
      description: Brightness percentage (1-100)
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer
      description: Transition duration in milliseconds

# set_power - power on/off
- id: set_power
  label: Set Power
  kind: action
  command: "set_power"
  params:
    - name: power
      type: string
      enum: [on, off]
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer
      description: Transition duration in milliseconds
    - name: mode
      type: integer
      description: "Power-on mode: 0=normal, 1=CT mode, 2=RGB mode, 3=HSV mode, 4=color flow, 5=night light (ceiling only)"

# toggle - toggle power state
- id: toggle
  label: Toggle Power
  kind: action
  command: "toggle"
  params: []

# set_default - save current state as default
- id: set_default
  label: Set Default
  kind: action
  command: "set_default"
  params: []

# start_cf - start color flow
- id: start_cf
  label: Start Color Flow
  kind: action
  command: "start_cf"
  params:
    - name: count
      type: integer
      description: Number of visible state changes before flow stops (0=infinite)
    - name: action
      type: integer
      description: "Action after flow stops: 0=recover to pre-flow state, 1=stay at last state, 2=turn off"
    - name: flow_expression
      type: string
      description: Flow expression - series of flow tuples [duration, mode, value, brightness]

# stop_cf - stop color flow
- id: stop_cf
  label: Stop Color Flow
  kind: action
  command: "stop_cf"
  params: []

# set_scene - set scene directly
- id: set_scene
  label: Set Scene
  kind: action
  command: "set_scene"
  params:
    - name: class
      type: string
      enum: [color, hsv, ct, cf, auto_delay_off]
    - name: val1
      type: integer
    - name: val2
      type: integer
    - name: val3
      type: integer
      description: Optional fourth parameter

# cron_add - add timer job
- id: cron_add
  label: Add Timer
  kind: action
  command: "cron_add"
  params:
    - name: type
      type: integer
      description: Timer type (currently only 0 = power off)
    - name: value
      type: integer
      description: Timer length in minutes

# cron_get - get timer settings
- id: cron_get
  label: Get Timer
  kind: query
  command: "cron_get"
  params:
    - name: type
      type: integer
      description: Timer type (currently only 0)

# cron_del - delete timer
- id: cron_del
  label: Delete Timer
  kind: action
  command: "cron_del"
  params:
    - name: type
      type: integer
      description: Timer type (currently only 0)

# set_adjust - adjustment without knowing current value
- id: set_adjust
  label: Adjust Property
  kind: action
  command: "set_adjust"
  params:
    - name: action
      type: string
      enum: [increase, decrease, circle]
    - name: prop
      type: string
      enum: [bright, ct, color]

# set_music - music mode
- id: set_music
  label: Set Music Mode
  kind: action
  command: "set_music"
  params:
    - name: action
      type: integer
      description: "0=turn off music mode, 1=turn on music mode"
    - name: host
      type: string
      description: Music server IP address (required when action=1)
    - name: port
      type: integer
      description: Music server TCP port (required when action=1)

# set_name - set device name
- id: set_name
  label: Set Device Name
  kind: action
  command: "set_name"
  params:
    - name: name
      type: string
      description: Device name (max 64 bytes)

# bg_set_rgb - background light RGB
- id: bg_set_rgb
  label: Background Set RGB
  kind: action
  command: "bg_set_rgb"
  params:
    - name: rgb_value
      type: integer
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer

# bg_set_hsv - background light HSV
- id: bg_set_hsv
  label: Background Set HSV
  kind: action
  command: "bg_set_hsv"
  params:
    - name: hue
      type: integer
    - name: sat
      type: integer
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer

# bg_set_ct_abx - background light color temperature
- id: bg_set_ct_abx
  label: Background Set Color Temperature
  kind: action
  command: "bg_set_ct_abx"
  params:
    - name: ct_value
      type: integer
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer

# bg_start_cf - background start color flow
- id: bg_start_cf
  label: Background Start Color Flow
  kind: action
  command: "bg_start_cf"
  params:
    - name: count
      type: integer
    - name: action
      type: integer
    - name: flow_expression
      type: string

# bg_stop_cf - background stop color flow
- id: bg_stop_cf
  label: Background Stop Color Flow
  kind: action
  command: "bg_stop_cf"
  params: []

# bg_set_scene - background set scene
- id: bg_set_scene
  label: Background Set Scene
  kind: action
  command: "bg_set_scene"
  params:
    - name: class
      type: string
    - name: val1
      type: integer
    - name: val2
      type: integer
    - name: val3
      type: integer

# bg_set_default - background set default
- id: bg_set_default
  label: Background Set Default
  kind: action
  command: "bg_set_default"
  params: []

# bg_set_power - background set power
- id: bg_set_power
  label: Background Set Power
  kind: action
  command: "bg_set_power"
  params:
    - name: power
      type: string
      enum: [on, off]
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer
    - name: mode
      type: integer

# bg_set_bright - background set brightness
- id: bg_set_bright
  label: Background Set Brightness
  kind: action
  command: "bg_set_bright"
  params:
    - name: brightness
      type: integer
    - name: effect
      type: string
      enum: [sudden, smooth]
    - name: duration
      type: integer

# bg_set_adjust - background adjust
- id: bg_set_adjust
  label: Background Adjust Property
  kind: action
  command: "bg_set_adjust"
  params:
    - name: action
      type: string
      enum: [increase, decrease, circle]
    - name: prop
      type: string
      enum: [bright, ct, color]

# bg_toggle - background toggle
- id: bg_toggle
  label: Background Toggle
  kind: action
  command: "bg_toggle"
  params: []

# dev_toggle - toggle main and background light together
- id: dev_toggle
  label: Device Toggle
  kind: action
  command: "dev_toggle"
  params: []

# adjust_bright - adjust brightness by percentage
- id: adjust_bright
  label: Adjust Brightness
  kind: action
  command: "adjust_bright"
  params:
    - name: percentage
      type: integer
      description: Percentage adjustment (-100 to 100)
    - name: duration
      type: integer
      description: Duration in milliseconds

# adjust_ct - adjust color temperature by percentage
- id: adjust_ct
  label: Adjust Color Temperature
  kind: action
  command: "adjust_ct"
  params:
    - name: percentage
      type: integer
      description: Percentage adjustment (-100 to 100)
    - name: duration
      type: integer
      description: Duration in milliseconds

# adjust_color - adjust color by percentage
- id: adjust_color
  label: Adjust Color
  kind: action
  command: "adjust_color"
  params:
    - name: percentage
      type: integer
      description: Percentage adjustment (-100 to 100)
    - name: duration
      type: integer
      description: Duration in milliseconds

# bg_adjust_bright - background adjust brightness
- id: bg_adjust_bright
  label: Background Adjust Brightness
  kind: action
  command: "bg_adjust_bright"
  params:
    - name: percentage
      type: integer
    - name: duration
      type: integer

# bg_adjust_ct - background adjust color temperature
- id: bg_adjust_ct
  label: Background Adjust Color Temperature
  kind: action
  command: "bg_adjust_ct"
  params:
    - name: percentage
      type: integer
    - name: duration
      type: integer

# bg_adjust_color - background adjust color
- id: bg_adjust_color
  label: Background Adjust Color
  kind: action
  command: "bg_adjust_color"
  params:
    - name: percentage
      type: integer
    - name: duration
      type: integer

Feedbacks

# Result message format: { "id": int, "result": array or "error": object }
# Properties observable via get_prop and notification messages:
- id: power_state
  type: enum
  values: [on, off]

- id: brightness
  type: integer
  description: Brightness percentage (1-100)

- id: color_temperature
  type: integer
  description: Color temperature in Kelvin (1700-6500)

- id: rgb_color
  type: integer
  description: RGB color value (0-16777215)

- id: hue
  type: integer
  description: Hue value (0-359)

- id: saturation
  type: integer
  description: Saturation value (0-100)

- id: color_mode
  type: enum
  values: [rgb_mode, ct_mode, hsv_mode]
  description: "1=rgb mode, 2=color temperature mode, 3=HSV mode"

- id: flowing
  type: boolean
  description: Color flow running state

- id: flow_params
  type: string
  description: Current flow parameters (only meaningful when flowing is 1)

- id: delayoff
  type: integer
  description: Sleep timer remaining minutes (1-60)

- id: music_on
  type: boolean
  description: Music mode state

- id: bg_power
  type: enum
  values: [on, off]
  description: Background light power status

- id: bg_flowing
  type: boolean
  description: Background light color flow running state

- id: bg_flow_params
  type: string
  description: Current background light flow parameters (only meaningful when bg_flowing is 1)

- id: bg_ct
  type: integer
  description: Background light color temperature in Kelvin (1700-6500)

- id: bg_lmode
  type: enum
  values: [rgb_mode, ct_mode, hsv_mode]
  description: "Background light mode: 1=rgb, 2=color temperature, 3=HSV"

- id: bg_bright
  type: integer
  description: Background light brightness percentage (1-100)

- id: bg_rgb
  type: integer
  description: Background light RGB color value (0-16777215)

- id: bg_hue
  type: integer
  description: Background light hue value (0-359)

- id: bg_sat
  type: integer
  description: Background light saturation value (0-100)

- id: nl_br
  type: integer
  description: Brightness of night mode light

- id: active_mode
  type: enum
  values: [daylight, moonlight]
  description: "0=daylight mode, 1=moonlight mode (ceiling light only)"

- id: name
  type: string
  description: Device name set by set_name command (max 64 bytes)

Variables

# Settable parameters not discrete actions:
- id: device_name
  type: string
  description: User-defined device name (max 64 bytes)

- id: night_mode_brightness
  type: integer
  description: Brightness in night mode (ceiling lights)

- id: active_mode
  type: enum
  values: [daylight, moonlight]
  description: "0=daylight mode, 1=moonlight mode (ceiling only)"

Events

# State change notifications sent to all connected devices:
# Format: { "method": "props", "params": { "prop1": "value1", ... } }
- id: state_change
  description: State change notification
  params:
    - name: power
      type: string
      description: "on or off"
    - name: bright
      type: string
      description: Brightness percentage
    - name: ct
      type: string
      description: Color temperature
    - name: rgb
      type: string
      description: RGB value
    - name: hue
      type: string
      description: Hue value
    - name: sat
      type: string
      description: Saturation
    - name: color_mode
      type: string
      description: Current color mode
    - name: flowing
      type: string
      description: Flow running state
    - name: flow_params
      type: string
      description: Current flow parameters (present when flowing is 1)
    - name: delayoff
      type: string
      description: Sleep timer
    - name: music_on
      type: string
      description: Music mode
    - name: name
      type: string
      description: Device name
    - name: bg_power
      type: string
      description: Background light power
    - name: bg_flowing
      type: string
      description: Background flow state
    - name: bg_flow_params
      type: string
      description: Background light flow parameters (present when bg_flowing is 1)
    - name: bg_ct
      type: string
      description: Background color temperature
    - name: bg_lmode
      type: string
      description: Background light mode
    - name: bg_bright
      type: string
      description: Background brightness
    - name: bg_rgb
      type: string
      description: Background RGB
    - name: bg_hue
      type: string
      description: Background hue
    - name: bg_sat
      type: string
      description: Background saturation
    - name: nl_br
      type: string
      description: Night mode brightness
    - name: active_mode
      type: string
      description: Active mode

Macros

# Multi-step sequences documented in source:
# Night light mode via set_power mode=5 (ceiling only)
# Sleep timer via cron_add with delay in minutes
# Color flow sunrise/sunset via start_cf with flow_expression

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source

Notes

  • TCP port 55443 stated in SSDP Location header (yeelight://host:port format)
  • UDP discovery on 239.255.255.250:1982
  • Max 4 simultaneous TCP connections per device
  • 60 commands/minute per connection, 144 commands/minute total LAN quota
  • Music mode bypasses quota limits
  • Background light commands only supported on devices with background light feature
  • All JSON messages terminated with \r\n
  • Effect "smooth" requires minimum 30ms duration
  • Flow expression tuple format: [duration, mode, value, brightness] where mode: 1=color, 2=CT, 7=sleep

Provenance

source_domains:
  - yeelight.com
  - open-console.yeelight.com
source_urls:
  - https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf
  - https://open-console.yeelight.com/commerical-lighting-open-platform-docs-en.html
  - https://open-console.yeelight.com/open-platform-docs-en.html
retrieved_at: 2026-05-27T13:44:03.140Z
last_checked_at: 2026-08-05T08:52:08.355Z

Verification Summary

verdict: verified
checked_at: 2026-08-05T08:52:08.355Z
matched_actions: 35
action_count: 35
confidence: medium
summary: "All 35 spec actions map verbatim to the source's Table 4-1 methods; transport (TCP 55443, UDP 239.255.255.250:1982) confirmed. (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "This spec derived from general Yeelight WiFi Light Inter-Operation Specification covering multiple models (mono, color, stripe, ceiling, bslamp). Specific dimmer model commands may be subset."
- "no safety warnings or interlock procedures in source"
- "Specific dimmer model may only support brightness control (mono variant), but source documents full color/CT support - actual command subset depends on device firmware"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0