{"adoption": {"forks": 470, "observed_at": "2026-08-28T04:07:54.085862+00:00", "stars": 3296}, "canonical_url": "https://ross.abutalabs.com/products/sonofflan", "card": {"archived": false, "artifact_type": "plugin", "description": "Control Sonoff Devices with eWeLink (original) firmware over LAN and/or Cloud from Home Assistant", "domain": ["iot", "self-hosted"], "enriched": true, "function": ["iot", "workflow-automation", "developer-tools"], "health_score": 95, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["AlexxIT/SonoffLAN"], "name": "AlexxIT/SonoffLAN", "platform": ["python", "self-hosted"], "pushed_at": "2026-07-17T14:12:30+00:00", "repo": "AlexxIT/SonoffLAN", "stars": 3296, "tags": ["home-assistant", "hacs", "sonoff", "ewelink", "smart-home", "custom-component", "local-control", "cloud-control", "home-automation", "linux"], "topics": ["ewelink", "sonoff", "home-assistant", "hacs"], "urls": [], "use_cases": ["control sonoff switches from home assistant without flashing firmware", "integrate ewelink devices with home assistant", "control sonoff devices locally over lan", "read power and energy sensors from sonoff pow devices", "use sonoff rf bridge 433 with home assistant", "manage multiple ewelink accounts and homes in home assistant", "get instant device state updates without cloud dependency"], "what_it_is": "A Home Assistant custom component (HACS integration) for controlling Sonoff devices running original eWeLink firmware over both local network (LAN) and the eWeLink cloud. It supports switches, sensors, RF bridges, and cameras without requiring firmware flashing.", "when_to_avoid": ["you have already flashed your devices with Tasmota or ESPHome (use native integrations instead)", "you need real-time power/current/voltage sensor updates via cloud (blocked by eWeLink since 2026)", "you don't use Home Assistant", "you need a standalone smart home control app outside Home Assistant"], "when_to_choose": ["you own Sonoff devices with stock eWeLink firmware and want Home Assistant integration", "you want local LAN control without reflashing devices with custom firmware", "you need both cloud and local control simultaneously", "you use Sonoff TH, Pow, RF Bridge, or GK-200MP2-B camera devices"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sonofflan", "repo": "AlexxIT/SonoffLAN", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:54.085862+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:22:42.476632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90fa5cc2352c1e32fbdf1163d37b33da60073ce89dda964b1b9834d9133dbbea", "fetched_at": "2026-08-28T04:07:54.085862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AlexxIT/SonoffLAN"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 88}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2482, "days_push": 47, "days_rel": 81, "gap_med": 8.5, "n_releases_24m": 15}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}