Hey,
Recently I've been tinkering with the browser's experimental Bluetooth API and cooked something called "MOC Commander" (formerly known as 'webPoweredApp') as my hobby project.
It's an open-source progressive web app designed to control LEGO PoweredUP MOCs using physical input. It can be run straight from the browser or installed as a standalone application for an offline use.
I'm not sure how to embed a YouTube video here, so here's the link to my introductory video with a step-by-step demonstration of basic usage.
The app utilizes LEGO Wireless Protocol and relies solely on dynamic IO capabilities discovery. In theory, it *should* support any LWP-compliant device with capabilities that the app can handle and know of.
However, there is a downside in this approach: non-LWP devices are not supported (BuWizz, etc).
Supported platforms (essentially anything that can run Chrome-based browsers and has Bluetooth):
Windows PC
Linux (with a little tinkering the app can be installed on a Steam Deck, which doubles the fun)
macOS
Android
With the exception of iOS devices (iPhones, iPads), which currently lack support for the Web Bluetooth API.
Implemented operation modes:
Speed (separate inputs for 'forwards', 'backwards' and 'brake')
Set Angle (to designate an angle within a range of -180 degrees to +180 degrees)
Servo (with separate 'clockwise' and 'counter-clockwise' inputs, auto-calibration, up to a 1440-degree range)
Stepper
Train (allows iteration over arbitrary number of pre-assigned speeds)
Gearbox (switch between arbitrary numbers of motor positions within a range of -180 degrees to +180 degrees)
Supported controllers:
Up to four gamepads (tested with DualShock, Xbox 360 and Nintendo Joy-Cons)
LEGO 88010 Remote Control
Keyboard
Hubs and RC Handsets' green buttons
Additionally, the app has widgets that can display control scheme runtime information, such as:
Voltage
Separate widgets for the hub's pitch, yaw, and roll
Temperature (I'm not sure who needs this, but it's there)
Plus:
The app theoretically supports simultaneous connections to any number of hubs (the app does not impose any limits on this, and I have only a couple of hubs and a handset to test its limits)
Highly customizable gamepad configurations (including active zone settings and input trimming for non-centered sticks)
Axial direction awareness for most inputs (e.g., moving the left stick to the left rotates the servo clockwise, and moving the right stick up rotates it counter-clockwise)
Dark and light theme
Import and export of control schemes
Backup and restore of app internal state
Support for native acceleration/deceleration profiles for all motor operation modes
The current app version is v1.2.6. The app and the underlying LWP-interface library are in an active development stage and may (and absolutely do) contain bugs.
It's a fun project that I'm having a blast working on, and though it's a niche thing, I hope someone may find it useful.
Your feedback (e.g. bug reports, feature suggestions, compatibility issues, or usability feedback) is greatly appreciated.
And of course, LEGO® is a trademark of the LEGO Group of companies which does not sponsor, authorize or endorse this application.