{"adoption": {"forks": 150, "observed_at": "2026-08-28T04:03:54.573368+00:00", "stars": 1183}, "canonical_url": "https://ross.abutalabs.com/products/espsomfy-rts", "card": {"archived": false, "artifact_type": "application", "description": "A controller for Somfy RTS shades and blinds", "domain": ["iot", "hardware"], "enriched": true, "function": ["iot", "workflow-automation", "sdk"], "health_score": 28, "homepage": null, "language": "C++", "license": "Unlicense", "license_family": "permissive", "maturity": "active", "member_repos": ["rstrouse/ESPSomfy-RTS"], "name": "rstrouse/ESPSomfy-RTS", "platform": ["iot", "embedded"], "pushed_at": "2024-08-19T17:46:40+00:00", "repo": "rstrouse/ESPSomfy-RTS", "stars": 1183, "tags": ["somfy-rts", "cc1101", "433mhz", "blinds-control", "shades", "home-automation", "esphome", "radio-transceiver", "velux", "window-coverings", "automation"], "topics": ["somfy", "433mhz", "shade", "cc1101", "rts", "shutter", "velux"], "urls": [], "use_cases": ["automate somfy rts blinds and shades", "control motorized shades with home assistant", "replace lost somfy telis remote", "track position of rts shades when using original remotes", "control bare shade motors via relay module", "mix rts rtw and rtv protocol motors on one controller", "integrate patio roller shades into home automation"], "what_it_is": "ESPSomfy-RTS is firmware for an ESP32 with a CC1101 433MHz transceiver that controls Somfy RTS motorized blinds and shades. It supports up to 32 shades and 16 groups, tracks shade position even when original remotes are used, and integrates with home automation platforms.", "when_to_avoid": ["you have IO Home Control motors rather than RTS", "you need motors on different base frequencies (e.g. 433.92 and 433.42) on the same device", "you want a plug-and-play commercial solution without DIY hardware"], "when_to_choose": ["you have Somfy RTS, RTW, or RTV protocol motors on 433MHz", "you want two-way control that tracks shade position", "you want to keep using existing Somfy remotes alongside automation", "you have bare motors without radio that can be wired to relays"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/espsomfy-rts", "repo": "rstrouse/ESPSomfy-RTS", "role": "main", "score": 22}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "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:03:54.573368+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.573368+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:24:38.227983+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "70cde285755ca2fbebd5d43d65c5c496bc46bfa477867352209635ec79e8ba80", "fetched_at": "2026-08-28T04:03:54.573368+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rstrouse/ESPSomfy-RTS"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 95, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1332, "days_push": 744, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 22, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}