{"adoption": {"forks": 179, "observed_at": "2026-08-28T04:05:34.453001+00:00", "stars": 1775}, "canonical_url": "https://ross.abutalabs.com/products/omote-firmware", "card": {"archived": false, "artifact_type": "application", "description": "Open Source Remote - Firmware", "domain": ["iot", "embedded-systems", "hardware", "cross-platform"], "enriched": true, "function": ["embedded", "gui", "workflow-automation", "websocket"], "health_score": 60, "homepage": "https://hackaday.io/project/191752", "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["OMOTE-Community/OMOTE-Firmware"], "name": "OMOTE-Community/OMOTE-Firmware", "platform": ["iot", "embedded", "windows", "cpp"], "pushed_at": "2026-02-06T17:26:07+00:00", "repo": "OMOTE-Community/OMOTE-Firmware", "stars": 1775, "tags": ["universal-remote", "esp32-firmware", "lvgl", "infrared", "mqtt", "bluetooth", "platformio", "smart-home", "touchscreen", "simulator", "automation", "linux", "macos"], "topics": ["esp32", "lvgl", "infrared", "wifi", "remote", "ble"], "urls": [], "use_cases": ["build a DIY universal remote for TV and amplifier with infrared", "control Fire TV or other media players over Bluetooth from a handheld remote", "control smart home devices via MQTT from a physical remote", "decode IR codes from existing remotes", "develop and test an LVGL touchscreen UI on desktop before flashing hardware", "customize remote buttons and device layouts for my own devices"], "what_it_is": "OMOTE-Firmware is the ESP32 Arduino firmware for the OMOTE open-source universal remote, providing an LVGL touchscreen UI that controls TVs and amplifiers via infrared, media players via Bluetooth, and smart home devices via MQTT. It also includes an LVGL GUI simulator that runs on Windows, Linux, and macOS for developing and testing the interface without hardware.", "when_to_avoid": ["you want a prebuilt, consumer-ready remote with a web configuration interface (not yet available)", "you need to control devices via Wi-Fi protocols other than MQTT (e.g., proprietary APIs)", "you are not comfortable building firmware yourself, since no prebuilt binaries are published", "you need a remote for devices that use RF (e.g., 433 MHz) rather than IR, BLE, or MQTT"], "when_to_choose": ["you own or plan to build OMOTE ESP32 hardware and want an open, customizable universal remote", "you want to prototype an LVGL embedded UI in a desktop simulator", "you need IR, BLE, and MQTT control combined in one handheld device", "you are comfortable compiling and flashing firmware with PlatformIO"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/omote-firmware", "repo": "OMOTE-Community/OMOTE-Firmware", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "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:34.453001+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.453001+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:25:19.653748+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c5ed6954b3c6afe663ac61d4ba40621ac51aa4ee020b34ffca8fdbbb537523b", "fetched_at": "2026-08-28T04:05:34.453001+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OMOTE-Community/OMOTE-Firmware"}, {"content_hash": "fcfae9be71c1bcca73b33e471b2896cd42adc7db2ad7d7e0d3424ff908f5bb14", "fetched_at": "2026-08-29T11:03:46.093476+00:00", "kind": "homepage", "missing": false, "url": "https://hackaday.io/project/191752"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 83, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1172, "days_push": 208, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}