RemoteXY web editor allows users with no app or software experience to layout a simple user interface and generate an Arduino compatible skeleton for flashing to hardware.
Unfortunately, the low-code approach combined with severe limitations with the mobile app's functionality massively restrict the end-user's ability to build practical tools.
UI Editor Features
There are 8 control elements, 9 visualisation elements, and 3 cosmetic elements. The 3 sensor elements stream the phone's IMU data to hardware.
You can specify the background colour for the layout, and specify if the layout supports horizontal or vertical screen orientations.
Elements can be dragged onto the phone layout, dragged for positioning, the size handles allow for some minimal control over the element.
It technically supports the ability to create multi-page layouts using the Page component as the navigation controller, but the web builder doesn't easily allow viewing/editing the layout of each page and just provides a 'active page' dropdown on every element in the design.
I was happy to find that right-clicking on an Element provides copy/paste and undo/redo buttons under a context menu, along with some basic 'depth order' controls.
Input
The range of components is reasonably well rounded for simple projects, but the forced types for most will cause confusion for inexperienced users.
For example the output values of components such as the slider are restricted to the range of [0, 100]
which requires re-mapping with code on the microcontroller.
Button
Push switch
,Switch
Select
supports 2 to 10 positions with vertical or horizontal rotationsSlider
only supports horizontal and vertical rotations.- Values are forced to a
[0, 100]
range. - No tick marks or display label makes it hard to know what value is being selected.
- Values are forced to a
Joystick
RGB Color
only supports customising the color of the handle.Edit field
supports string, float, and integer input types and includes a configurable clear button. It does not provide any input validation or range restriction.
Visualisation
Displaying microcontroller information is less practical due to the visual styles and limited data formats.
A "state indicator"
LED
element supports up to 8 different colorsthe
RGB LED
indicator supports configurable red, green, blue and alpha channel displays.The
linear level
andLinear division
level elements are essentially the sameCircular bar
andInstrument
elements are the most customisation elements:- Int8, Int16 and Float types are supported,
- Orientation and angular range can be configured,
- Up to 4 configurable color zones with custom start/end values,
- Thickness and colours are configurable.
Text string
can display a character array of fixed maximum lengthOnline graph
supports up to 10 float variables with configurable colors and legend.- The web builder doesn't allow for setting the x-axis or y-axis ranges.
- Multi-touch and long-press controls in the app can be used to roughly configure the timespan and vertical axis.
Sound
will play a sound when the identifier value matches one of the sounds viewable in the app.- The web interface doesn't provide any preview or control for the sound component, and finding the identifier for different sound clips is hidden in the app's settings menu.
Mobile App
The app is very simple but works well enough on iOS and Android.
Adding new devices to the 'home screen' prompts for the connection method, followed by prompts for IP address, Cloud connection token, or selection from a list of BLE devices. The discovery process is quite dependent on knowing the information for a direct connection.
The layout looks similar to the web editor, except my test devices have different aspect ratios than the web template. This just adds extra empty area. On tablets the layout is just scaled up.
Interacting with the chart component presents a list of time domains, and vertical swipes adjust the y-axis.
There's no ability to edit or control the UI from the mobile app, edit it on the web interface and flash new firmware.
When using a larger screen (like an iPad/tablet), the UI layout is scaled up, which looks rather hilarious.
Connection Methods
On the surface, the range of communications options seems to cover most options:
- Ethernet/WiFi
- WiFi as access point
- Cloud Server
- Bluetooth
- USB OTG on Android
During testing I had a range of issues:
- ESP32 WiFi modes could never connect on any device.
- ESP32 BLE worked first try with an iPhone, but would get stuck on 'Connecting' with an iPad.
- USB OTG requires a specific cable to be used, USB-C OTG is far less common and couldn't be detected in my tests.
Connecting the mobile app via Cloud requires you to type the 32 character device ID in, even if you are logged in with an account
Self-hosted Cloud
A docker container is available to self-host the cloud service. Official setup docs here.
The docker container image hasn't been updated for 2 years, and I have serious doubts about the software quality. Don't run this on public facing internet, it's probably ok for local only use or via VPN though.
The docker container runs a remotexy-cloud-121.jar
file, and I could connect to the management web interface via http://IP:6380
.
Once running, I reconfigured hardware to use my cloud instance by modifying the cloud configuration defines in the Arduino sketch (also doable through the web interface).
#define REMOTEXY_CLOUD_SERVER "192.168.1.98"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "abcdefg123"
The management interface is incredibly barebones, allowing the web interface's username and password to be changed from the default remotexy
setting, and also has a simple UI to create device tokens.
Documentation and Examples
It feels like an easy win was missed by putting documentation on a separate part of the website. Building inline help into the editor would substantially elevate the user experience.
The reference material for the UI elements is fine, and describes the restrictions forced by the pre-selected types. Most UI components include an incredibly minimal usage example for the hardware side.
The full examples walk through the setup for a simple blink demo, temperature sensor or motor control layout.The included a basic circuit diagram and step by step descriptions provide the relevant information.
I would expect inexperienced users to get lost easily with the lack of visual guidance when describing how to use the builder or modify Arduino code.
Restrictions
Hardware and Connection Types
The official hardware support only lists a small subset of targets, specifically:
ESP8266
ESP32
ATmega328
ATmega2560
ATmega32u4
nRF51822
General Architecture
Storing the UI layout on-device is an interesting design choice.
- Pros: zero mobile configuration, and the ability to connect any RemoteXY app to a device and get a working UI.
- Downsides: making a small UI change requires copy/pasting the configuration code into the IDE and reflashing. It's less efficient and responsible for a lot of the UI restrictions.
The web editor presents a fixed aspect ratio 'phone' screen. On devices with more screen real-estate, empty area is presented.
Web Editor & Components
- Most UI components have a specific default style and can't be configured to look different - line thickness, fonts and the 'specular highlight' on handles are not configurable.
- For most UI components, you need to manually create and position a Decoration Label to describe what it does. These labels also consume the element allocation for the free version!
- Wherever color control is provided, it's limited to a palette of 256 choices.
Issues & Bugs
- The iOS app crashes frequently when connecting/disconnecting from a cloud connected device.
- There are many spelling mistakes and editing issues throughout the website, documentation and builder interface.
- The editor doesn't provide any sanity checks, i.e. setting an indicator's ranges outside of the selected Int8 type's bounds.
- The editor doesn't warn or prevent re-use of variable names with incompatible types, and code generated with such a configuration will throw obscure compiler errors.
- Self-hosted management interface was easy to break, i.e. pressing the cancel button when creating a new device token directs to a 404.
Pricing
The website describes it as "Free", but doesn't describe the 5 element limitation upfront.
Pricing information for "PRO" isn't listed on the website anywhere, but you can find the pricing on the AppStore product page under the In-App Purchases heading:
Subscription duration | Price (USD) |
---|---|
3 months | $2.99 |
6 months | $4.99 |
12 months | $7.99 |
I think using the in-app-purchase functionality for the mobile-app is a good choice to make it accessible for students or younger users without credit cards.
After subscribing to 3-months, the app notified me of success, and then crashed. The nagware and element limits were correctly removed.
I think the pricing tiers are set reasonably, and appreciate the ability to use the Cloud connection method on the free tier.
Recommendations
It technically achieves the goal of providing a drag and drop builder experience for Arduino projects, but there are several key issues which make recommending it difficult:
- General UI/UX issues in the web editor and mobile apps
- No ability to customise component behaviours,
- UI is inconsistent with any OS, no responsive layout functionality, poor performance
- Hardcoded variable ranges on UI components are awkward and a poor developer experience
- The realtime charting component lacks the functionality that would make it useful.
- Misleading product positioning - homepage says free without mentioning anything over 5 UI elements requires paid account.
- Nagware behaviour when closing a connection, etc
- Lack of pricing transparency, requirement to sign-in to an account to view.
Is it suitable for students or home use?
The no-code UI builder approach works, and local connections via Bluetooth or WiFi are nice to see, but I can't recommend RemoteXY for educational or hobby use due to poor documentation, forced and unclear limitations on microcontroller selection, and the nagware/pricing model.
What about professional use?
There are no situations where RemoteXY is appropriate for a commercial or shipping product. RemoteXY is targeted at single-user experiences with it's shared app design and strong push for end-user accounts and paid licence.
- Building on a 'shared' app outside of your control is incredibly unwise,
- The overall experience lacks any polish, consistency, or OS native experiences,
- Prior library versions have been pulled frequently. No changelogs.
- Self-hosted cloud service docker container hasn't been maintained for >2 years.