{"adoption": {"forks": 159, "observed_at": "2026-08-28T04:05:45.079017+00:00", "stars": 1858}, "canonical_url": "https://ross.abutalabs.com/products/midea_ac_lan", "card": {"archived": false, "artifact_type": "plugin", "description": "Auto-configure and then control your Midea M-Smart devices (Air conditioner, Fan, Water heater, Washer, etc) via local area network.", "domain": ["iot", "self-hosted"], "enriched": true, "function": ["iot", "workflow-automation", "configuration-management"], "health_score": 100, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["wuwentao/midea_ac_lan"], "name": "wuwentao/midea_ac_lan", "platform": ["python", "self-hosted"], "pushed_at": "2026-08-25T07:47:29+00:00", "repo": "wuwentao/midea_ac_lan", "stars": 1858, "tags": ["home-assistant", "hacs", "midea", "smart-appliances", "local-control", "lan-protocol", "home-automation", "linux"], "topics": ["hacs", "hacs-integration", "home-assistant", "midea", "air-conditioner", "air-purifier", "cooker", "dehumidifier", "dishwasher", "humidifier", "refrigerator", "wash", "water-heater"], "urls": [], "use_cases": ["control my Midea air conditioner from Home Assistant without the cloud", "discover Midea smart appliances on my local network automatically", "add sensors and switches for Midea washer or water heater in Home Assistant", "keep appliance status in sync in real time over LAN", "migrate from georgezhao2010/midea_ac_lan to the maintained fork", "control Midea dehumidifier, dishwasher, or refrigerator locally"], "what_it_is": "A Home Assistant integration (HACS custom component) that discovers and controls Midea M-Smart appliances such as air conditioners, fans, water heaters, and washers over the local area network. It provides config-flow based setup, extra sensors and switches, and real-time status sync via long TCP connections without relying on the cloud.", "when_to_avoid": ["you don't use Home Assistant", "you need to add brand-new devices after Midea fully shuts down the cloud token APIs", "you need official cloud-based control or remote access outside your LAN"], "when_to_choose": ["you use Home Assistant and own Midea or Midea-brand (Carrier, Toshiba, etc.) M-Smart appliances", "you want local LAN control with low latency and no cloud dependency", "you want extra sensors and switches beyond the official integration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/midea_ac_lan", "repo": "wuwentao/midea_ac_lan", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "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:05:45.079017+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.079017+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:16:13.634675+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c6d24817a0859bf7e28b4afc2a2666b59b51e1b9b36c10af10e159f820dc00ab", "fetched_at": "2026-08-28T04:05:45.079017+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wuwentao/midea_ac_lan"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 60, "rhythm": 97}, "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": 844, "days_push": 8, "days_rel": 21, "gap_med": 16, "n_releases_24m": 18}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}