{"adoption": {"forks": 932, "observed_at": "2026-08-28T04:08:10.802335+00:00", "stars": 3574}, "canonical_url": "https://ross.abutalabs.com/products/irremoteesp8266", "card": {"archived": false, "artifact_type": "library", "description": "Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/", "domain": ["iot", "embedded-systems", "hardware"], "enriched": true, "function": ["sdk", "embedded"], "health_score": 95, "homepage": null, "language": "C++", "license": "LGPL-2.1", "license_family": "copyleft", "maturity": "stable", "member_repos": ["crankyoldgit/IRremoteESP8266"], "name": "crankyoldgit/IRremoteESP8266", "platform": ["cpp", "embedded", "iot"], "pushed_at": "2026-08-23T12:23:51+00:00", "repo": "crankyoldgit/IRremoteESP8266", "stars": 3574, "tags": ["infrared", "esp8266", "esp32", "arduino-library", "remote-control", "hvac-control", "ir-protocols", "home-automation", "940nm-ir", "communication", "automation"], "topics": ["protocols", "arduino-ide", "infrared", "airconditioners", "remote-control", "home-automation", "esp8266", "esp32", "communication", "arduino-library", "arduino", "platformio", "hacktoberfest", "940nm", "hvac", "hvac-control", "ir-decoder", "ir-device"], "urls": [], "use_cases": ["control an air conditioner from an ESP32 over WiFi", "send IR remote signals with an ESP8266", "decode infrared signals from a TV remote", "build a DIY universal IR remote with home automation", "capture and replay IR codes for HVAC control", "integrate IR blaster functionality into ESPHome or Arduino projects"], "what_it_is": "An Arduino library for ESP8266 and ESP32 that enables sending and receiving infrared remote control signals using common 940nm IR LEDs and receiver modules. It supports many IR protocols, including detailed control of air conditioner and HVAC devices.", "when_to_avoid": ["your project targets non-ESP microcontrollers like AVR Arduino boards (use the original Arduino-IRremote instead)", "you need RF (433MHz) or Bluetooth remote control rather than infrared", "you are not working in C++/Arduino"], "when_to_choose": ["you need IR send/receive on ESP8266 or ESP32 with the Arduino framework", "you want broad protocol support including air conditioner units", "you use PlatformIO or Arduino IDE for embedded development"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/irremoteesp8266", "repo": "crankyoldgit/IRremoteESP8266", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "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:08:10.802335+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:10.802335+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:34:03.900205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "56b1b7c261c85c496bdd4b1730bbe51db23bd3e442b538dee21f8b9025b42874", "fetched_at": "2026-08-28T04:08:10.802335+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crankyoldgit/IRremoteESP8266"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 32}, "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": 4105, "days_push": 10, "days_rel": 243, "gap_med": null, "n_releases_24m": 1}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}