Sonoff
AlexxIT/SonoffLAN · vv3.13.2
Control Sonoff Devices with eWeLink (original) firmware over LAN and/or Cloud from Home Assistant
In Apple Home through HomeKit Bridge
What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.
| Entity | Shows up as | Note |
|---|---|---|
light | Light | |
switch | Switch or outlet | |
cover | Blind, garage door, window or door | |
climate | Thermostat | |
fan | Fan | |
media_player | TV, receiver or media switches | Needs its own HomeKit Bridge in accessory mode |
remote | TV remote (activities) | Needs its own HomeKit Bridge in accessory mode |
alarm_control_panel | Security system | |
binary_sensor | Sensor (motion, contact, leak, smoke…) | |
sensor | Sensor (temperature, humidity, air quality…) | |
button | Button (as a switch) | |
select | Mode picker (as switches) |
What people report
Sonoff and eWeLink devices run locally over LAN with cloud fallback; firmware 1.3.1 on MINIR4M broke local commands, since fixed. Maintainer adds new UIIDs from contributors.
- Works9
- Partly works2
- Not working1
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| Sonoff DUALR3 and TX Ultimate | Works | Power-on state supportSaved copyAs I promised in #1585 this pull request adds initial support for the Power-On state feature. For now, it works on DUALR3 and TX Ultimate devices. I have refrained from adding more devices as I cannot test them. I would appreciate support on the following: - Code conventions/Variable names: This PR needed support for select entities, thus the select.py file should be reviewed. I tried to make it as bare-bones as possible - send_bulk functions: I avoided modifying the original send_bulk function, a better option would be to generalize it. - Fetching the power-on state periodically from … Excerpt saved from GitHub on 2026-10-23. | PR #1591 · 2025-03 | |
| Sonoff IW101 | Works | Supported with power monitoringSaved copyThis PR adds support for the Sonoff IW101 The IW101 has power monitoring and the IW100 does not. Support for the 100 can be added I just don't have one so I do not know the uiid. Excerpt saved from GitHub on 2026-10-23. | PR #168 · 2020-06 | |
| Sonoff MINI-DIM | Works | Transition support addedSaved copyHey! I've been using the MINI-DIM (UIID 277) with an adaptive lighting automation and noticed it was the only dimmer class without transition support. Thought I'd have a go at adding it. ## What I found The MINI-DIM firmware (tested on 1.1.2) supports a `transitionTime` parameter in milliseconds, the device does smooth hardware fading when it receives it alongside a brightness command. The catch is it only works through the cloud API. The local `/zeroconf` endpoint either ignores it or returns a `text/html` error and times out. ## What this does - Adds `LightEntityFeature.TRANSITION` to … Excerpt saved from GitHub on 2026-10-23. | PR #1777 · 2026-03 | |
| Sonoff MINIR4M | Works Local | Firmware 1.3.1 local command whitespace bug fixedSaved copyThe problem MINIR4M (uiid 138) on firmware 1.3.1 discards any zeroconf command whose decrypted JSON payload contains whitespace. The device still decrypts the request and still answers `{"error":0}` with a normal sequence, the relay simply does not move. Nothing surfaces as an error, so the entity looks perfectly healthy in Home Assistant while local control does nothing. `json.dumps()` defaults to `separators=(", ", ": ")`, so every command `encrypt()` builds carries spaces. eWeLink's own hub builds the same payload with JavaScript's `JSON.stringify()`, which is compact, which appears to … Excerpt saved from GitHub on 2026-10-23. | PR #1884 · 2026-09 | |
| Sonoff RF Bridge 433 with DW2-RF | Works | Binary sensor not updating in local mode; fixedSaved copyEnvironment Home Assistant: 2026.3.3 (OS) SonoffLAN: 3.11.0 RF Bridge model: RFBridge433, firmware 3.6.2, hardware 28 Sensor: Sonoff DW2-RF on rfChl 8 Description The RF Bridge binary_sensor (binary_sensor.1001f6cd6c_8) does not update its state when an alarm is triggered in auto or local mode. The sensor remains permanently "off" despite the trigger data arriving correctly. Switching to cloud mode fixes the issue, the binary_sensor updates as expected. Evidence from debug logs Auto mode, trigger received but binary_sensor stays off: 1001f6cd6c Local4 | 192.168.0.237:8081 | getState {} <= … Excerpt saved from GitHub on 2026-10-23. | Issue #1774 · 2026-03 | |
| Sonoff S31 smart plug | Works Local | Stock firmware confirmed 100% local with energy monitoring; also flashableSaved copyYou no longer have to flash the S31s. There's the SonoffLAN Integration that offers local control over LAN and/or Cloud from Home Assistant. Mine are stock firmware and have been tested and confirmed to be 100% local with no calling out. Excerpt saved from the Arctic Shift Reddit archive on 2026-10-23. | Reddit comment · 2023-10 | |
| Sonoff S60 | Works Local | Tested in local mode; entities auto-discoveredSaved copytested with Mode: local Home: on/off both worked. All entities where auto-discovered and added Excerpt saved from GitHub on 2026-10-23. | PR #1668 · 2025-10 | |
| Sonoff SNZB-09P indoor siren | Works | Zigbee siren supported (uiid 7056)Saved copyDescription Adds support for the Sonoff SNZB-09P Zigbee indoor siren, which isn't currently recognized by this integration. New entities: - button, trigger the siren (sends `alarmSetting.test = true`). Tested and confirmed working on a real device, the siren sounds and `alarmType` goes from `none` → `manual` → back to `none` once the configured Alarm Duration elapses. - switch, Alarm Sound enable, Alarm Light enable - number, Alarm Duration (seconds), Alarm Volume - sensor, Alarm Sound Type (read-only), Alarm Status - binary_sensor, External Power connected ### How the values were … Excerpt saved from GitHub on 2026-10-23. | PR #1860 · 2026-08 | |
| VEVOR MD370 / MD750 gate motor (CK-BL602-TC-01) | Works | Supported as uiid 216Saved copyFixes #1819. Adds support for CoolKit `CK-BL602-TC-01` (uiid 216), the eWeLink-based Wi-Fi module found in VEVOR MD370 / MD750 and other rebranded sliding-gate motors. Reported at #1819 (with device dump). Exposed as a `cover` with `device_class: gate`. Excerpt saved from GitHub on 2026-10-23. | PR #1868 · 2026-08 | |
| Sonoff Basic firmware 3.8.0 | Partly works Cloud | Unavailable in local mode after firmware update; works via cloudSaved copyAfter updating Sonoff devices to new FW, Local stopped working. Only TH device not updated, still working. 2025-03-05 14:27:59.987 ERROR (MainThread) [custom_components.sonoff.core.ewelink.cloud] You logged in from another place, read more https://github.com/AlexxIT/SonoffLAN#configuration 2025-03-05 14:28:15.482 ERROR (MainThread) [custom_components.sonoff.core.ewelink.cloud] You logged in from another place, read more https://github.com/AlexxIT/SonoffLAN#configuration 2025-03-05 14:28:45.707 ERROR (MainThread) [custom_components.sonoff.core.ewelink.cloud] You logged in from another place, … Excerpt saved from GitHub on 2026-10-23. | Issue #1584 · 2025-03 | |
| Sonoff THR316 | Partly works Local | LED command casing rejected with error 400; fix promisedSaved copySummary SonoffLAN 3.13.0 can lose local acquisition after a Home Assistant restart or config-entry reload. Affected devices remain cloud-online but show host=null and local=null, so local telemetry stops until an advertisement is accepted or an external command reactivates polling. While acquisition is missing, Home Assistant also generates sustained mDNS traffic for unresolved Sonoff hostnames. I am requesting a supported recovery path that can reuse a known/configured host and device key, with bounded mDNS retries, rather than depending indefinitely on fresh zeroconf discovery. Environment … Excerpt saved from GitHub on 2026-10-23. | Issue #1888 · 2026-09 | |
| Sonoff TRVZB | Not working Cloud | Cloud errors after firmware 1.4.0; maintainer has no deviceSaved copyAfter updating the Sonoff TRVZB thermostat to firmware 1.4.0, the SonoffLAN integration started producing repeated cloud errors in Home Assistant logs: [code] This error repeats frequently, indicating that TRVZB cloud communication is broken after the firmware upgrade. Steps to reproduce - Pair TRVZB with eWeLink account and Home Assistant via SonoffLAN. - Update TRVZB firmware to version 1.4.0. - Observe HA logs – repeated Cloud ERROR 400 messages appear. Expected behavior TRVZB should be handled correctly by the SonoffLAN integration without cloud errors after firmware update. Additional … Excerpt saved from GitHub on 2026-10-23. | Issue #1682 · 2025-11 |
Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.
How it connects
Local push
Talks to the device on your network, and the device tells Home Assistant the moment something changes.
Details
| Installs (analytics) | 45,929 (6.48%) |
|---|---|
| GitHub stars | 3,338 |
| Latest version | v3.13.2 (2026-10-18) |
| Set up in the UI | Yes |
| Maintainers | @AlexxIT |
| License | MIT |
Notable forks
Forks with stars, or with code pushed at least 90 days after the original’s last push. Useful when the original goes quiet.
| Fork | Stars | Last push | Description |
|---|---|---|---|
| mennovf/SonoffLAN | ★ 7 | 2021-01-20 | Control Sonoff Devices with eWeLink (original) firmware over LAN and/or Cloud from Home Assistant |
In ReReHome
Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.
Bridges get their own settings page listing the accessories behind them.
Sources
- Documentation: https://github.com/AlexxIT/SonoffLAN
- Source code: https://github.com/AlexxIT/SonoffLAN
- Issues: https://github.com/AlexxIT/SonoffLAN/issues
- HACS: https://hacs.xyz
