Fork this with Git

Pico BLE Vape Remote

Replacement for S&B Vaporizer app
Project started on December 07, 2024.

Recent activity on GitHub:

Like many modern devices, some of the medical vaporizer devices from S&B (the Crafty, Venty and the Volcano Hybrid) offer Bluetooth connectivity and an app to control them.

Unfortunately the official mobile apps have / had some problems. The iOS version is no longer available after Apple decided to remove "drug related" Apps. So understandably the company no longer developed either their iOS or Android apps, instead releasing a web app that uses the Chrome Bluetooth APIs.

Yet all of these variants are problematic in different ways. The Android app offers customizable workflows for the Volcano Hybrid. But the Bluetooth implementation is very wonky, sometimes simply missing steps in the workflow. And because there's no error checking, the workflow simply continues in a broken state. The webapp doesn't have this problem, but instead the workflows are no longer customizable, instead just offering a small number of hard-coded pre-defined workflows.

This is not satisfying, of course, and also presented itself as a great opportunity to play around with BLE.

Fortunately the official web app is made with non-minimized an unobfuscated JavaScript, so the BLE protocol for the different devices can easily be reverse engineered. I wrote a small script that helps with downloading and beautifying the official sources.

As a first attempt I implemented the Volcano workflow functionality in Python on the PC. I had some problems, so I made two implementations, with bleak and SimplePyBLE. Turns out my difficulties came from having multiple bluetooth adapters on my Linux machine. Now the scripts both work fine for me.

Volcano Remote script in action (old version)
Volcano Remote script in action (current version)

Then I implemented the same thing on a Raspberry Pi Pico W, with a Waveshare Pico LCD 1.3 display. I first did this in MicroPython but ran into issues as well. It works fine but I couldn't include all the functionality I wanted.

Volcano Remote MicroPython prototype

So I made a fourth iteration, this time in C with the plain Pico SDK. It can interact with the Volcano Hybrid, the Crafty and the Venty. Everything can be controlled using on-screen menus on the device itself. It even has a WiFi capable OTA bootloader to support wireless firmware upgrades.

Volcano Remote C version in development
Volcano Remote WiFi Bootloader

To contain everything I designed a snug little 3D-printed case in OpenSCAD. It contains the Pico W, a Pico LiPo Shim and a "80mAh / 20 x 11 x 5mm / 501220" LiPo battery. The Pi is mounted with four screws and the battery is held onto it with a drop of hot glue. Then the LCD board just plugs on top to close it.

Volcano Remote case assembly
Volcano Remote case opened
Volcano Remote case power button

This is what the final result looks like.

Volcano Remote (final)

I'm quite happy with it, especially the software part. It has many things I expect from nice modern embedded projects, and I've used a bunch of libraries to achieve these:

As usual you can find everything on my Gitea and on GitHub.