Espruino App Loader

Posted on
  • @gedankenstuecke just made a great website ( - forum post here) that allows you to program your Puck.js to be an event tracker.

    It reminded me that @benjaminbenben had suggested a long time ago that we have a website for loading apps onto Espruino devices. At the time I ended up devoting most of my time to Bangle.js, and for that I ended up making the Bangle.js app loader which does a similar thing - but very specifically for Bangle.js. It now has loads of apps on it.

    What does everyone think? Is there a place for a generic Espruino app loader? Would you contribute apps to it?

    I'm thinking:

    • With Web Serial we can target all Espruino devices now, not just the Bluetooth ones.
    • A list of browsable/searchable applications with descriptions, and web pages to configure them if needed
    • Ability to filter applications by what device(s) they work on
    • Allow 'ifdef' lines to let one application target different devices (eg, draw to the screen if there is a screen, use LEDs if not)
    • Link Espruino tutorials with 'upload this now' which allows you to directly upload the code to your device
    • Allow you to click 'edit' and get the code in the Web IDE so you can customise it further before upload
    • Allow you to read saved data off the Espruino (eg. data log, then get the data off into a CSV file or Google Sheets)
    • [Later] allow pre-configuration (e.g. add an LCD to an Espruino Pico, then run apps that needed a display)

    What apps do you think would be worth adding?

    • Bluetooth Beacon configuration
    • Bluetooth/USB HID Button configuration
    • Neopixel patterns
    • Data logging
    • ...?
  • I think that's a really cool idea, as there's probably lots of common use cases and the tutorials already cover quite a lot of them, having an easy way for people to give them a go right away would be really nice!

  • Oh yeah, I remember chatting about that - it'd be brilliant!! I had a bit of a hack into configurable scripts with a countdown timer & LED blink. I also put together some ui sketches but I can't find them.

    Oh wow, more devices with Web Serial would be awesome. And being able to read back data in a nice way would allow some really useful apps.

    With the neopixel app suggestion - if it was a generic app loader, I'd wonder about adding a button to my espruino-pixels page which would be "load this pattern on a puck.js" (though maybe that's already possible with the ide? šŸ§)

    When I was thinking before, I was pretty focussed on PuckJS and the angle was "turn my puck into X", so I was thinking Countdown Timer, Music Remote Control, Blinking Light, etc. With different devices, and connected things there'd be a whole lot more!

    I'd be up for contributing apps, though also let me know if I can help with design/build of the app loader - I'd love to be involved in that!

  • That sounds great - at the moment with the Bangle.js loader you can do a custom.html file that basically gets loaded into an iframe and then posts the finished JavaScript back to be uploaded. The espruino-pixels page is basically perfect for that.

    From the point of view of reducing workload/bugs and ensuring new features (ratings/etc) appear on both, using the Bangle.js app loader's code seems like the best bet. Maybe moving it to a shared git module would be best? Any other thoughts?

    There are a few obvious differences I guess:

    • Using Web Serial as well as Web Bluetooth (but there's a library for that, done at the same hackathon I think @benjaminbenben?).
    • Saving direct to run at boot, not to a named app (but maybe this should be an option for Pixl.js at least!)
    • Filtering by device type (maybe detect at connection and then display only the relevant apps)

    But it feels like 90% of the code would be the same...

    Another option is just to use the Bangle.js app loader for all Espruino devices - some of the Bangle.js apps would run as-is on other devices. I think perhaps that's a step too far though? Folks with Bangle.js are going to want a simple, non-confusing way to load apps.

  • We now have a very early app loader based on code shared with the Bangle.js App Loader:Ā­

    Code for it here:Ā­

    I still need to do some filtering based on device (and sort out the 'press BTN3' reload prompt) but at least there's something that actually works now.

    If anyone fancies doing some work on this (either improving, or adding some apps) it'd be hugely appreciated!

    Also, are there any specific apps that you'd like?

  • App Loader is now live and contains a slightly more useful set of apps:Ā­355513/

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Espruino App Loader

Posted by Avatar for Gordon @Gordon