{"id":16241655,"url":"https://github.com/eagrahamjr/kobots-buttonboard","last_synced_at":"2026-04-13T09:32:08.051Z","repository":{"id":172273241,"uuid":"647347853","full_name":"EAGrahamJr/kobots-buttonboard","owner":"EAGrahamJr","description":"\"World's Most Expensive\" 8-button HomeAssistant remote control","archived":false,"fork":false,"pushed_at":"2026-01-29T05:51:50.000Z","size":11741,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T21:44:51.109Z","etag":null,"topics":["adafruit","diozero","home-assistant","home-automation","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EAGrahamJr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-30T15:26:26.000Z","updated_at":"2026-01-29T05:51:54.000Z","dependencies_parsed_at":"2024-01-14T19:45:31.730Z","dependency_job_id":"45c2969c-90f6-4aec-8862-eef53977142b","html_url":"https://github.com/EAGrahamJr/kobots-buttonboard","commit_stats":null,"previous_names":["eagrahamjr/kobots-buttonboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EAGrahamJr/kobots-buttonboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EAGrahamJr%2Fkobots-buttonboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EAGrahamJr%2Fkobots-buttonboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EAGrahamJr%2Fkobots-buttonboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EAGrahamJr%2Fkobots-buttonboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EAGrahamJr","download_url":"https://codeload.github.com/EAGrahamJr/kobots-buttonboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EAGrahamJr%2Fkobots-buttonboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31746294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adafruit","diozero","home-assistant","home-automation","raspberry-pi"],"created_at":"2024-10-10T14:08:15.898Z","updated_at":"2026-04-13T09:32:08.030Z","avatar_url":"https://github.com/EAGrahamJr.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# I2C Button Board\n\nThe world's most expensive remote control for HomeAssistant. Uses\n\n- [HAssK client](https://github.com/EAGrahamJr/HAssK)\n- [kobots-devices](https://github.com/EAGrahamJr/kobots-devices)\n  - and by extension [diozero](https://www.diozero.com/)\n- Lightbend's [Typesafe config](https://github.com/lightbend/config) for the configuration.\n- [Kobots \"Parts\"](https://github.com/EAGrahamJr/kobots-parts) for application management, control, and all the pretty graphical elements.\n\n### Cost\n\nDoes **not** count the Raspberry Pi, as it's been swapped out a few times.\n\n| Item                      |   ~Price |\n|---------------------------|---------:|\n| SparkFun Qwiic pHat v2    |       $8 |\n| 128x128 OLED display      |      $23 |\n| I2C Multiplexer           |       $7 |\n| 128x32 OLED display x 2   |       $8 |\n| NeoKey 1x4 I2C x 2        |      $20 |\n| Keys (4 x 2)              |       $7 |\n| Key caps (4 x 2)          |       $5 |\n| Neopixel strip, 1/2 meter |      $13 |\n| Neopixel ring (8 pixels)  |       $4 |\n| Neopixel controller       |       $8 |\n| SparkFun Qwiic Twist      |      $25 |\n| Swirly board              |      $11 |\n| Extra STEMMA cables       |      $12 |\n| **TOTAL**                 | **$151** |\n\n\n### V1, Mk 2\n\n![Holy cow!](most-expensive.jpg)\n\n- The secondary screen shows a continually updating list of temperatures (rooms, CPU, and \"outside\").\n- Each button corresponds to a menu selection on the larger screen (next/prev buttons on others)\n- Also has a \"sleep\" mode to prevent screen burn in (from Mk 1)\u003cbr/\u003e![Snooze](sleeping.jpg)\n  - Exit button is active, others just \"wake up\" the menu\n\n### V2\n\nThere were some timing issues, as well as the buttons not responding quickly. This was also a case of trying to do too\nmuch for no real reason.\n\n![Smaller](V2.png)\n\n- Mode defined for time of day\n- Single icon display for each button based on mode/action\n- Button colors corespond to icons (more or less)\n- Button actions based on mode\n- Neopixel strip just runs on its own\n  - shutdown actually works now (?)\n- App exit on multiple buttons pressed\n- Snazzy minifig to help hold the I2C cable\n\n### V5\n\n**MORE BUTTONS!!! MORE SCREEN!!! MORE JUNK!!!***\n\n![Moar buttons](V5.png)\n\nAdded an I2C multiplexer and a lot more \"self-handling\" code. The \"front bench\" of buttons is configurable by an external signal because I don't have a rotary encoder (yet). The NeoPixel ring shows \"liveness\" of various hosts and there's a NeoPixel strip just for (more) color.\n\n### V6\n\n![Industrial V1](V6.png)\n\nToF to handle menu switching and built on a \"swirly plate\" for a new **`Industrial`** look.\n\n### V7+\n\nThis is likely the last hardware iteration as it's now quite easy to re-arrange buttons on whims...\n\n![Clean up](V7.png)\n\nRemoved ToF (not working that well), re-arranged stuff and added some 3D printed frames to make it look less janky. Added the rotary encoder for additional media support when I get to it.\n\nAnd, just for grins, added a [\"Matrix Rain\" animation](make-it-rain.mp4) (from the `kobots-parts` library).\n\n#### Prints\n\n- Frame for large OLED - https://www.printables.com/model/923637-15-oled-frame-for-m25\n- Cover for NeoKeys - https://www.printables.com/model/904353-neokey-1x4-cover\n- Frame for small OLED - https://www.printables.com/model/927362-ssd-1306-frame\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feagrahamjr%2Fkobots-buttonboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feagrahamjr%2Fkobots-buttonboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feagrahamjr%2Fkobots-buttonboard/lists"}