{"id":22819471,"url":"https://github.com/jfroehlich/node-p1x3lramen","last_synced_at":"2025-09-12T20:38:37.022Z","repository":{"id":47538554,"uuid":"357442373","full_name":"jfroehlich/node-p1x3lramen","owner":"jfroehlich","description":"Sending pixel soup to a Divoom Pixoo LED panel. https://github.com/jfroehlich/pixelramen","archived":false,"fork":false,"pushed_at":"2021-08-29T11:24:12.000Z","size":104,"stargazers_count":26,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T00:31:41.439Z","etag":null,"topics":["api","bluetooth","divoom","iot","nodejs","pixoo"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jfroehlich.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}},"created_at":"2021-04-13T06:07:38.000Z","updated_at":"2024-07-31T21:18:38.000Z","dependencies_parsed_at":"2022-07-25T00:02:15.440Z","dependency_job_id":null,"html_url":"https://github.com/jfroehlich/node-p1x3lramen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jfroehlich/node-p1x3lramen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfroehlich%2Fnode-p1x3lramen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfroehlich%2Fnode-p1x3lramen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfroehlich%2Fnode-p1x3lramen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfroehlich%2Fnode-p1x3lramen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jfroehlich","download_url":"https://codeload.github.com/jfroehlich/node-p1x3lramen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jfroehlich%2Fnode-p1x3lramen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274873613,"owners_count":25365824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api","bluetooth","divoom","iot","nodejs","pixoo"],"created_at":"2024-12-12T15:12:24.558Z","updated_at":"2025-09-12T20:38:36.816Z","avatar_url":"https://github.com/jfroehlich.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"p1x3lramen\n================================================================================\n\nUsing an HTTP server to send pixel soup to a Divoom Pixoo LED panel over a\nbluetooth connection.\n\n--------------------------------------------------------------------------------\n\n**WARNING:** This is experimental and runs an unsecured HTTP server with an\nunvalidated API on port 8000. Use at your own risk and try to understand what\nit does.\n\n--------------------------------------------------------------------------------\n\nThis is meant to expose all functions of the device like a prototyping pegboard\nso you can tinker with the device and create awesome things. pixelramen can be\nused as app and accessing it over port 8000 or by using the ES6 modules directly.\n\n\nUsage\n--------------------------------------------------------------------------------\n\nThe divoom pixoo uses bluetooth 5 so a computer with support for that would be\na requirement.\n\nThis app is written in JavaScript for node so you need\n[Node.js](https://nodejs.org/en/) installed. \n\n### Pair the pixoo\n\nYou need to pair the pixoo with your computer. \n\nWhen using a Mac like I do, Open Bluetooth Preferences, switch on the pixoo and\nconnect it as soon as it apears in the Preferences.\n\nI have no idea how the pairing works on other systems, but it's probably\nsimilar.\n\n### Running the app\n\nOpen a terminal (yea, doesn't work without it), clone the project from github\nand install the dependencies:\n\n```sh\ngit clone https://github.com/jfroehlich/node-p1x3lramen\ncd node-p1x3lramen\nnpm install\n```\n\nThen start the app:\n\n```sh\nnode index.js -a\n```\n\nThis will start the http server. Open `localhost:8000` in a browser. This\nshould auto connect to the device. You can disconnect by using the HTTP API or by\nkilling the app with `ctrl-c`.\n\nYou could also define a JSON config file with further settings like this:\n\n```sh\nnode index.js -c ~/p1x3lramen-config.json\n```\n\nThe config could contain following settings:\n\n```json\n{\n\t\"connection\": {\n\t\t\"deviceMAC\": null,\n\t\t\"maxConnectAttempts\": 3,\n\t\t\"connectionAttemptDelay\": 500\n\t},\n\t\"pixoo\": {\n\t\t\"brightness\": 50\n\t},\n\t\"service\": {\n\t\t\"hostname\": \"localhost\",\n\t\t\"port\": \"8000\",\n\t\t\"autoConnect\": true\n\t}\n}\n```\n\nThe deviceMAC setting set to `null` will run the auto-detect except on linux.\n\n\nTesting\n--------------------------------------------------------------------------------\n\nI did write some tests to run them one after each other. You can run them with\nthe web server with a configureable delay after each test.\n\nFirst connect to the device with `/connect` in the browser. When connected call \n`/test?delay=2000`. The number is the delay in milliseconds.\n\n\nWhy this project?\n--------------------------------------------------------------------------------\n\nI got a Divoom Pixoo for christmas in 2020 but couldn't use it since Divoom\nonly has a smartphone app and the pixoo only connects over bluetooth 5 which my\nsmarphone didn't support. I didn't get the perl and python scripts to run but\nthere is [an implementation for the timebox evo][1] which happens to (mostly) have\nthe same API as the pixoo.\n\nThe timebox evo script is realy cool but it connects and disconnects for each\ncli command, is actually for the evo, is a bit complicated and I don't like\ntype script that much. So, I decided to write my own little app. Feel free to\nuse it and get inspired.\n\nHTTP API\n--------------------------------------------------------------------------------\n\nThis is a quick documentation of the HTTP API. For the range of values look at\n`source/devices/pxioo.js` for now. \n\n- `/api/status` returns the current connection status and the app configuration\n  for the device\n\n- `/api/connect` Connect to the device\n\n- `/api/disconnect` Disconnect from the device\n\n- `/api/fullday?enable=\u003cbool\u003e` Switches between 12h and 24h mode. Note: Does\n  work, but not as expected -- don't know why.\n\n- `/api/datetime?date=\u003cisodate\u003e\u0026fullday=\u003cbool\u003e` Updates the time and switches\n  between 12h and 24h mode\n\n- `/api/brightness?level=\u003cnum\u003e` Sets the brightness level\n\n- `/api/lighting?color=\u003chexcolor\u003e\u0026brightness=\u003cnum\u003e\u0026mode=\u003cnum\u003e\u0026powerScreen=\u003cbool\u003e`\n  Sets the color and brightness or switches the screen off\n\n- `/api/clock?mode=\u003cnum\u003e\u0026showTime=\u003cbool\u003e\u0026showWeather=\u003cbool\u003e\u0026showTemperature=\u003cbool\u003e\u0026showCalendar=\u003cbool\u003e\u0026color=\u003chexcolor\u003e`\n  Switches between clock modes and sets it's config\n\n- `/api/score?red=\u003cnum\u003e\u0026blue=\u003cnum\u003e` Switches to score mode and sets the scores\n  for red and blue\n\n- `/api/visualization?mode=\u003cnum\u003e`\n\n- `/api/effect?mode=\u003cnum\u003e`\n\n- `/api/climate?weather=\u003cnum\u003e\u0026temperature=\u003cnum\u003e` Set the weather and temperature\n\n- `/api/test` A very basic integration test.\n\n\nReferences\n--------------------------------------------------------------------------------\n\nThis project is build using the ingenuity of many others:\n\n- [github: node-timebox-evo][1]\n- [Thread about Divoom Devices in the FHEM forum (de)](https://forum.fhem.de/index.php?topic=81593.0)\n- [github: divoom timebox/aurabox fhem lib in perl](https://github.com/mumpitzstuff/fhem-Divoom)\n\n\n[1]: https://github.com/RomRider/node-divoom-timebox-evo\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfroehlich%2Fnode-p1x3lramen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjfroehlich%2Fnode-p1x3lramen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjfroehlich%2Fnode-p1x3lramen/lists"}