Govee lights
Put Govee lamps, strips and light bars on a mirror without running Home Assistant — including the one thing no other light integration can do, which is work while every screen in the house is asleep.
The light widgets need the Home plan or above. Connecting a Govee account does not.
What this is for
Govee makes lamps, strips and light bars that most people buy for one room and control from a phone. This integration puts them on a mirror — brightness, colour and their own saved scenes — without you having to run Home Assistant first.
It is a shortcut, and worth being clear about what it costs. Home Assistant will do more with the same lights, because it talks to far more than Govee. If you already run one, connect that instead and skip this page. This exists for the household whose only smart devices are three Govee strips, for whom standing up a Home Assistant server is a wildly disproportionate answer.
- Brightness and colour on any Govee device the cloud API exposes.
- Your own saved Govee scenes, by name, as buttons on a wall.
- Segment control on the strips that have segments, so half a strip can be one colour and half another.
- Everything appears in the same light widgets Home Assistant, WLED and Hue use — there is no separate Govee tile to learn.
The one genuine advantage over every other light integration
Mirra reaches Home Assistant, WLED and Hue by asking a screen to do it. Those all live on your home network, our servers cannot see them, and a mirror on the wall can — so the mirror relays the request. It is a good arrangement and it has one consequence: if every screen in the house is off or asleep, those lights cannot be reached.
Govee is different. Govee's own servers are on the internet, so we talk to them directly. Nothing has to be awake at your end.
One exception worth knowing: light rules are decided on a screen whichever make of lamp they point at, so a house with every screen asleep fires no rules — Govee included. The lamp could be reached; the thing deciding to reach it is not running.
- A scheduled light rule fires whether or not a screen is on.
- The assistant can change a Govee light from a phone with no mirror involved.
- A screen that has been unplugged for a week does not take the lights with it.
This is why a light rule that runs at three in the morning is worth setting on Govee lights and is a gamble on the others. If the schedule matters more than the fixture, buy accordingly.
Why there is no local control
Govee publishes a LAN API. It is genuinely better than the cloud one — faster, private, and it keeps working when your internet does not — and Mirra does not use it, which is a decision worth explaining rather than leaving somebody to wonder about.
The LAN API works over UDP multicast. Browsers cannot send UDP at all; it is not a permission that can be granted or a setting that can be turned on, it is simply not something a web page is able to do. The screen app is a web page. So the only part of Mirra that sits on your network is structurally incapable of speaking the protocol.
If that changes — if the Pi agent grows a native path to the LAN API — the lights already on your wall would start using it with nothing to reconfigure. The vocabulary a light speaks is deliberately separate from how Mirra reaches it.
Getting your API key
Open the Govee Home app on your phone
The key comes from the app rather than from a website; there is no Govee developer portal to sign into.
Go to the profile tab, then About Us, then Apply for API Key
Govee moves this around between app versions. If those exact words are not there, look for anything with "API" in it under the profile or settings tab.
Fill in the short form
Govee asks what you want it for. "Home automation dashboard" is an accurate and sufficient answer.
Wait for the email
The key arrives by email, usually within a few minutes and occasionally within a day. It is a long string of letters, numbers and dashes.
Paste it into Integrations, then Govee
Mirra checks the key against Govee before saving it, so a key with a character missing is refused here rather than becoming a light that mysteriously never responds.
The key is your whole Govee account. Anyone holding it can control every Govee device you own. Mirra stores it encrypted and never sends it to a screen, but treat it the way you would treat a password — do not paste it into a chat window to ask somebody for help.
Finding your lights
Mirra asks Govee for your device list when you connect and whenever you press Refresh devices. It does not poll continuously.
A light that has just been added to the Govee app will not appear until you refresh, and a light Govee's API does not expose will not appear at all. Govee's cloud API covers most of their catalogue but not all of it — some of the older and cheaper models are app-only, and there is nothing Mirra can do about those.
Rate limits, and why a wall of lights is fine
Govee limits how often an API key may be used. Mirra is built around that rather than against it: device state is read on a schedule and shared across every screen in the household, so ten mirrors showing the same lamp cost the same as one.
What does cost requests is changing things. A light rule that fires at sunset and sets eight lights sends eight commands. That is well inside the limit; a rule doing it every minute would not be.
If Govee starts refusing, the Govee page says so plainly rather than leaving lights that appear to work and do not. The refusal is per-provider — a Govee limit does not stop your Home Assistant lights responding.
When something is not working
- A light is missing. Press Refresh devices first. If it is still absent, check it appears in the Govee app itself — if it does not, the problem is upstream of us.
- Everything stopped at once. Almost always the API key. Govee invalidates keys when an account password changes. The Govee page will say the key was rejected.
- A light responds slowly. The cloud path is Mirra → Govee → your light. That is two internet round trips, and it is why local control would be better if it were possible. Half a second is normal; five seconds means Govee is having a bad day.
- A scene does not appear. Scenes are read from the device, and Govee only reports scenes for devices that support them. A strip with no saved scenes offers none.
Related
- Lights, light rules and WLEDOne light model across Home Assistant bulbs, WLED strips, Govee lamps and Hue bulbs: adding a controller, what a rule can do, how a segment becomes a light, and which of the four leave your network at all.
- Home AssistantHow Mirra reaches Home Assistant through a screen on your own network, what it syncs, what it notices, and what each failure message means.
- Integrations: what they are, and turning them onAn integration is an outside source that several widgets draw on — this explains what turning one on and off does, and why Mirra refuses to turn one off while its widgets are still on a scene.