A Bluetooth logger for the Venty

Posted on Oct 9, 2026

The Storz & Bickel Venty can only be inspected through its official web app, over Web Bluetooth, and it keeps no history. I wanted to know how much I use it per day. So I built a logger.

What it does

It captures everything the device exposes over Bluetooth LE: current and target temperature, boost, battery, charger, total minutes of use, firmware and settings. It stores it in SQLite and shows it as a daily usage calendar.

Stack

  • PC: pure Python on top of BlueZ via D-Bus (Gio/GLib), no dependencies, running as a systemd --user daemon. A tiny standard-library HTTP server serves the calendar (plain HTML and JS) and receives the phone’s sync.
  • Android: a native Kotlin app with zero external libraries, no appcompat, no Room. 65 KB release APK, about 250 ms startup, with heater and temperature control.

Status

Connection, full decoding, session logging, the unified calendar and phone-to-PC sync all work. Still to do: test the control buttons in real use and, maybe, a foreground service so the phone keeps logging with the app closed.

Lessons

  1. The protocol came from reading the official web app’s JavaScript. It already had the byte offsets. It’s a single GATT write+notify characteristic with the command in byte 0.
  2. Chrome on Linux ships with Web Bluetooth disabled. The “unsupported browser” error was chrome://flags/#enable-web-bluetooth, not the distro.
  3. The Venty accepts a single BLE client. PC and phone coexist by giving the phone a 15-second head start and merging the data on the PC.
  4. The USB-C port is charge-only. Even firmware updates go over Bluetooth.