{"id":48217553,"url":"https://github.com/ractive/brick-remote","last_synced_at":"2026-04-04T19:01:20.213Z","repository":{"id":36321442,"uuid":"215420742","full_name":"ractive/brick-remote","owner":"ractive","description":"Controll Lego™️ smarthubs via bluetooth directly from your browser","archived":false,"fork":false,"pushed_at":"2023-01-04T22:47:19.000Z","size":2323,"stargazers_count":3,"open_issues_count":23,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-12T00:21:24.319Z","etag":null,"topics":["lego","lego-powered-up"],"latest_commit_sha":null,"homepage":"https://brick-remote.ractive.ch/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ractive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-16T00:20:12.000Z","updated_at":"2022-10-28T14:18:25.000Z","dependencies_parsed_at":"2023-01-17T00:30:19.169Z","dependency_job_id":null,"html_url":"https://github.com/ractive/brick-remote","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/ractive/brick-remote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fbrick-remote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fbrick-remote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fbrick-remote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fbrick-remote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ractive","download_url":"https://codeload.github.com/ractive/brick-remote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ractive%2Fbrick-remote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31409471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: 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":["lego","lego-powered-up"],"created_at":"2026-04-04T19:01:19.528Z","updated_at":"2026-04-04T19:01:20.200Z","avatar_url":"https://github.com/ractive.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Github actions status](https://github.com/ractive/brick-remote/workflows/brick-remote/badge.svg)](https://github.com/ractive/brick-remote/actions?query=workflow%3Abrick-remote)\n\n# About\nThis is a prototype of a web application that allows controlling Lego :tm: smarthubs via bluetooth.\nIt's a [react](https://reactjs.org/) app using the [node-poweredup](https://github.com/nathankellenicki/node-poweredup)\nnode library for communication.\n\nI only tested it with the Control+ hubs, but powered up and the boost move hubs should work as well.\n\n:information_source: The app can be found at [brick-remote.ractive.ch](https://brick-remote.ractive.ch) and must be used with Chrome (or Edge insider).\n\n![brick-remote-screenshot](https://user-images.githubusercontent.com/783861/69193780-deee2300-0b27-11ea-9d40-cef99e0f73c4.png)\n\n# Howto\nTurn on the bluetooth hub on your lego model by pressing its button, click on the blue \"Scan for hubs\" button in the\nwebapp and pair the hub. You can pair multiple hubs by pressing the \"Scan for hubs\" button again.\n\nThe hub will then appear on the left side listing the ports A to D and the two tilt indicators for the\nX any Y axis. \n\n\u003cimg alt=\"brick-remote-pair\" src=\"https://user-images.githubusercontent.com/783861/69191588-160e0580-0b23-11ea-993d-069fa5e7e45d.png\" width=\"75%\" height=\"75%\"/\u003e\n\n## Tilt indicator\nPressing the button for a tilt indicator in the hub details on the left, adds an indicator to the controls panel\non the right. It shows the tilt in degrees for the corresponding axis. \n\n(I think the tilt indicators are only supported by the Control+ hubs)\n\n## Motor Control\nPressing the \"motor control\" button in the hub details on the left for a specific port, adds an element\nto control the speed of a single motor. You can assign keyboard shortcuts to increase and decrease the speed\nof the motor and to stop the motor completely. Configre the keyboard shortcuts by pressing the \"cog\" symbol on\nthe top of the control.\n\n## Track Control\nPressing the \"track control\" button in the hub details on the left for a specific port, lets you choose\nwhat other motor should be part of the track control being added. A track control lets you easily\ncontrol vehicles with tracks that are driven by two motors. You can steer the vehicle by increasing and\ndecreasing the speed and by turning lef and right (instead of controlling the two motors individually).\nYou can set keyboard shortcuts by clicking on the \"cog\" symbol on the top of the track control.\n\n## Keyboard shortcuts\nThis app uses the [hotkeys](https://github.com/jaywcjlove/hotkeys) library to handle keyboard input so\nthat you can use their supported keys [in this way](https://github.com/jaywcjlove/hotkeys#supported-keys).\nThat means that you can set e.g. `up` or `ctrl+a` or `space` as keyboard shortcuts when configuring the controls by\npressing the \"cog\" symbol.\n\n\u003cimg alt=\"brick-remote-keyboard-shortcuts\" src=\"https://user-images.githubusercontent.com/783861/69191586-15756f00-0b23-11ea-8a0f-3b0c28b4cc84.png\" width=\"66%\" height=\"66%\" /\u003e\n\n# Development\nStart the app locally with `yarn start dev` and open `localhost:3000` in a browser that supports web bluetooth\n(chrome or edge beta).\n\n## Adding a \"fake\" hub\nTo add a \"fake\" hub directly when starting the app, add a query parameter called `fakeHub`\nto the URL (e.g. `localhost:3000/?fakeHub`). This fake hub allows developing many parts of the UI without having\nto actually pair a real hub.\n\n## Debug output\nIf debugging messages should be enabled, add a query parameter called `debug` with the value `*` (`localhost:3000/?debug=*`). This will add a key with the name `debug`\nto the localStorage in the browser. [The debug package](https://github.com/visionmedia/debug#readme) that is used by\nnode-poweredup will read this \"debug\" key from localStorage and output debug messages for modules matching this key.\nSetting `debug` to `*` will enable debug output for all modules. You can of course set other values like e.g. `lpf2hub`.\n\nJust call the page with an empty \"debug\" query parameter when you do not want to have debug messages anymore (`localhost:3000/?fakeHub`).\n\n⚠ You need to reload the page for this to take effect. I could not find a way to set the localStorage to the value in the\ndebug param, before the debug library is initialized.\n\n## jsconsole output\nWhen the app is called with a query parameter called `jsconsole`, the logs are sent to jsconsole. This only works when you\ndon't call this app via `localhost` because jsconsole then tries to communicate with localhost as well. Use `127.0.0.1` instead\nif you want to run the app on your local machine and send the logs to jsconsole.\n\nOpen this page to view the logs: https://www.jsconsole.net/?598c719d-4012-4f4d-075c-873a05e490c1\nThis is e.g. useful to see the logs from your android phone of from another user. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fractive%2Fbrick-remote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fractive%2Fbrick-remote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fractive%2Fbrick-remote/lists"}