Skip to content
All projects

tuya-light

Controls Tuya Wi-Fi bulbs from the KDE Plasma panel, over the local network by default.

tuya-light
  • Plasma panel widget with a colour wheel, brightness, a warm-to-cool white slider, favourite colours and scenes; the icon takes the light’s current colour.
  • Your own scenes: create, edit, hide, or save what the light shows right now. The command line, the MCP server and the phone page share the same list.
  • Command line: tuya-light on, colour purple, brightness 30, scene movie; --json for machine-readable output.
  • MCP server, so an assistant such as Claude can handle “make the light warmer” or “movie mode”.
  • Phone page: tuya-light serve puts the same controls on a phone screen and can be added to the iPhone Home Screen.
  • By default it talks to the bulb on the local network with the bulb’s local key. For a server away from home there is an opt-in cloud backend and Docker setups.
Problem
Tuya’s phone app sends every tap through Tuya’s cloud, so the light depends on the cloud being up and fast.
My role
My own project: idea, design, development.
Solution
One Python core that talks to the bulb directly with its local key, used by a Plasma 6 widget, a command line, an MCP server and a phone page. The cloud is needed once, during setup, to fetch the key.
Result
Open source under GPL-2.0-or-later, in English and Turkish. Supports both bulb generations and Tuya protocol versions 3.1 to 3.5.

A Plasma 6 panel widget that controls Tuya Wi-Fi bulbs over the local network, without going through the cloud. It has a colour wheel and scenes.

The same core also runs as a command line tool and as an MCP server for AI assistants.

More projects

All projects