The Espruino firmware is open-source, so you can code for it at almost any level you like, but for most users, programming the Bangle.js will mean writing apps or widgets. These are very similar, other than the fact that widgets run in the background and apps in the foreground (apps can include widgets, if you need both functions).
The IDE provides the ability to grab data files off the watch, which is a great way of working with anything that tracks data. However, it’s worth bearing in mind that Bluetooth is the only way of getting data on or off the watch. You can download the files manually like this, or you could write a companion app (or website) that gets the data you want. It’s possible to connect to the device with another Bluetooth-compatible device using Puck.js to stream data to a web service if you want, but this isn’t entirely straightforward.
There’s an app store of existing applications at banglejs.com/apps. This is driven by GitHub as the data store, so if you want to see how an app works, just click on the GitHub icon and you can see the source code. What’s more, this is a static page driven by GitHub Pages, so you can fork this, enable GitHub Pages, and create your own app store to which you can add your apps (see this reviewer’s at benevpi.github.io/BangleApps). We’ve been working on a sleep quality tracker, which you can see in this store. Once you’re happy with your code, if you want, you can submit a pull request back to the original repository and your app will be listed on the global app store.
GPS reception is OK. Indoors, it can struggle, but outdoors, we found it worked better. This is probably because antennae don’t like being crammed in a small space with lots of other electronics, especially when they’re trying to pick up weak signals from spacecraft thousands of miles away.
We also found the heart rate monitor prone to suspect readings. We found we could get accurate data by taking five readings, then selecting the middle one, but obviously this limits the speed at which you can get data.
These minor gripes aside, we found the Bangle.js worked excellently. We were able to play with other people’s apps, poke around their internals, and code our own – exactly what you’d expect to be able to do with an open-source watch. For the price, this is an excellent development platform for personalised electronics, with more features than we know what to do with. We’ve already got some plans for this watch – keep an eye on the mag for future articles. However, it is a big watch and right on the limit of what we’d consider an acceptable size for a wrist-based device.
A fun and versatile wrist-based computer.