AiDot Smart-Home-Integration, kostenlos und Open Source

AiDot Wi-Fi lights (Linkind, OREiN…): on, off, brightness, colour, white temperature.
Die Dokumentation dieser Integration wird von ihrem Autor geschrieben und ist bisher nur auf Englisch verfügbar.
Brings the AiDot Wi-Fi lights (Linkind, OREiN and the other brands set up with the AiDot app) into Gladys: on / off, brightness, colour and colour temperature, and the changes the lights push (app, switch, schedules) shown at once.
Never tested with a real device: tell us on the forum how it goes. Not affiliated with AiDot.
How it works
- The AiDot cloud, for the list only. With the e-mail and the password of your AiDot account, the integration reads the list of your lights: their name, model, address on your network and the local keys each light needs. It signs in as python-aidot, the maker's own library (the one Home Assistant uses), does: with the application id of that library. Louis, who maintains these integrations, accepted it for this integration only, on 2026-11-05. Nothing else imitates an application.
- Your network, for everything else. Each light added in Gladys is driven directly on your network (TCP port 10000, AES with the key of the light): no command goes through the cloud. The address comes from the cloud; when it is missing or wrong, a discovery request is broadcast by Gladys itself (UDP 6666, as python-aidot, the maker's library, does) to find it. As in python-aidot, that request carries the id of your AiDot account to every device of your local network (with the fixed key of the protocol, which is published: readable by any device of the network).
- The password, the tokens of the session, your user id and the keys of the
lights are never written to a log, the status or the
/datafolder of the integration; the tokens and the keys stay in memory.
Configuration
- E-mail and password of the AiDot account (the ones of the app). The password is kept by Gladys in its database, never shown again, and sent only to the AiDot cloud when the integration signs in.
- Country of the account: the one chosen when the account was made; it picks the AiDot cloud (Europe, America or Asia).
- Reading interval: how often each light is read on the network (60 s by default, 30 s at least). The changes the light pushes come at once between two reads.
- Save, then open Discover: each light with a local key is listed with its name in the AiDot app. Add the ones you want: only the lights added are connected.
Test the connection signs in to the AiDot cloud with the credentials saved (even after a refusal, at most every 10 s, never while AiDot asked to wait) and reads the list of the lights.
The cloud, politely
- The list is read at start, every 6 hours and on Discover, never sooner
than a minute after the read before (a restart included: the time of each
attempt is kept in
/data). New credentials saved and Test the connection (10 s apart at most) do not wait for that minute. - Refused e-mail or password: only the sign-in can say it. The refusal is
kept (in
/data: a fingerprint of the account and a 6-value mark of the password, never the password) and the password is never sent again by itself, a restart included, until you save other credentials or click Test the connection. Any other error of the cloud (a session not accepted, an unreadable answer) is never taken for a refusal: the session is renewed, and the read tried again later. - AiDot asks to wait (HTTP 429 or 5xx): the cloud is left alone 60 s, doubled up to 6 h (or what AiDot asks, within these bounds), kept across a restart. Not reached: new tries after 1, 2, 5, 15, 30 min, then every hour.
- None of this stops the lights already known: they are driven on the network.
Devices
| AiDot light | Features |
|---|---|
| Every light | Power (0 / 1), brightness (0 to 100, 0 = off) |
Colour (control.light.rgbw) | + colour, colour temperature (2700-6500 K) |
White tunable (control.light.cct) | + colour temperature, in the range of the product |
A colour, a temperature or a brightness also turns the light on. A temperature out of the range of the light, or a colour on a white light, is refused before anything is sent.
How commands are sent
- One connection per light, one message at a time on it. A command is done once the light shows the new state after it (answered by the light, or changed from before); otherwise its message says why ("sent, without confirmation", "shows another state", "refused by the light") and the light is read again 5 s later.
- A scene on many lights sets every light: a command still waiting for its connection after 3.5 s says so and still leaves within 30 s; the commands of one light waiting are merged.
Turning off (Off)
An Off (power 0, or brightness 0) needs no option and goes first: it cancels the commands of that light still waiting (none of them leaves after it), cuts a request that has had no answer for 1 s, and, once the light is known (its key in memory), goes whatever the cloud says (a refusal, a pause, not reached) and even when the configuration cannot be read.
When it cannot leave, it is kept (also across a restart) and sent again every 10 s, at once when a connection to the light opens, and as soon as the cloud gives the light. Sent, it is checked by a read right after: off, it is done; still on (a read or a report of the light) after the light answered it, it is sent again 10 s later. It ends once the light shows it off, when a newer command of that light leaves, or when the device is deleted in Gladys.
After a restart, nothing can be driven before the first read of the cloud,
an Off included: the keys of the lights are never written to /data, so they
come from the cloud first. That read comes a minute after the last attempt at
most in normal times. For an Off held, a pause asked by AiDot is waited 10
minutes at most, a cloud not reached is tried every minute, and a cloud that
answers an error (the sign-in included) after 1, 2, 5, then every 10 minutes:
never a password posted every minute. The Off cannot
leave while the credentials are refused (until you correct them or click
Test the connection), while the cloud does not answer, or while the
configuration cannot be read from Gladys: the status says which.
An Off is refused only when replaced by a newer click on the same light before it left. Once the light has answered it 4 times without showing it off, it is no longer sent again by itself: the status says so; click Off again.
Status
The Configuration page shows the state of the cloud (signed in, refused, asked to wait, not reached), the number of lights, those reachable on the network, the lights to add, and every Off held.
Troubleshooting
- "unreachable": the light is off at the mains, or on another network than Gladys; new tries after 5 or 15 s, then 30 s, 1, 2, then every 5 minutes, and a discovery every 5 minutes at most.
- "another light or another key": the key changed (light reset or paired again): the list is read again from the cloud (a minute apart at least, then twice that each time the key did not change).
- Nothing in Discover: only the lights with a local key are listed (Wi-Fi lights of the AiDot app, in a home you own).
Konfigurationseinstellungen
Diese Einstellungen fragt AiDot in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Your AiDot lights | section | Nein | Brings the AiDot Wi-Fi lights (Linkind, OREiN and the other brands set up with the AiDot app) into Gladys: on / off, brightness, colour and colour temperature, the changes pushed by the lights shown at once. The AiDot account is used only to read the list of your lights with their address and their local keys (with the application id of the maker's own library, python-aidot); the lights are then driven on your network, without the cloud. An Off (power 0, brightness 0) needs no option and goes first: it is kept and sent again every 10 s until the light shows it off (4 answered tries at most). After a restart nothing can be driven before the first read of the cloud (the keys are not kept on disk). Never tested with a real device: tell us on the forum how it goes. Not affiliated with AiDot. |
| E-mail of the AiDot account | string | Ja | The e-mail you sign in to the AiDot app with. |
| Password of the AiDot account | secret | Ja | Kept by Gladys in its database, never shown again, sent only to the AiDot cloud when the integration signs in. If AiDot refuses it, it is not sent again until you save other credentials or click "Test the connection". |
| Country of the account | select | Nein | The country chosen when the AiDot account was made: it picks the AiDot cloud (Europe, America or Asia). |
| Reading interval (seconds) | number | Nein | How often each light is read on the network (30 to 3600 s); the changes it pushes are shown at once between two reads. |
| Language of the feature names | select | Nein | Used for the feature names of the lights added from now on. |
So installierst du AiDot in Gladys
- Öffne in Gladys Integrationen: AiDot erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/lm1lc3n7/gladys-aidot:0.1.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/LM1LC3N7/gladys-aidot.
AiDot benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
AiDot ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von LM1LC3N7 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation