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).
You can develop these on the online Espruino IDE at espruino.com/ide. From there, you can upload your code over Bluetooth (there’s no data-in on the watch, and the USB charge cable is power only). This reviewer has done some JavaScript development over the years, but only a little, and he found it straightforward to get started. Perhaps the main thing to get your head around is the event-driven nature of the language. Lots of things are driven by callbacks to functions passed as parameters. This sounds more complex than it is. Really, it just means that you create functions that you want to run when particular events happen, and then tell the watch which event you want to trigger your function. An advantage of this is that it means that the firmware can take care of power management. In your code, you just link in what you want to happen when – and when nothing’s running, it can make sure that power isn’t wasted.
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.
From: espruino
Price: £69.96
VERDICT
A fun and versatile wrist-based computer.
9/10