Bridge WalkingPads into Home Assistant via Bluetooth and MQTT with a ESP32

Homebrain PaceKeeper

PaceKeeper is an ESP32 bridge that connects via Bluetooth to your WalkingPad and exposes the device via MQTT to Home Assistant.

Watch the video:

Supported Hardware

  • PitPat-T01 Treadmill – Superun BA06-B1 [AliExpress]

Required Tools

  • ESP32 – I’m using a Wemos S3 Mini, but any ESP32 with Bluetooth should do [AliExpress] [Amazon]
  • VS Code with PlatformIO

Setup

Find the Bluetooth Address of the Device

Get an app like nRF Connect – this app allows you to view Bluetooth connections on your phone.

  • Turn the device on with the power switch
  • Either use the app to initialize the device or follow the steps in the section “Cloud Free Usage”
  • Open nRF Connect on your phone
  • The device should show up as PitPat-T01
  • Write down the Bluetooth address (it should look like AA:BB:CC:11:22)

Preparation of Home Assistant for MQTT

Project Compilation

  • Set up VS Code with PlatformIO
    (https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation)
  • Clone this repo and open it in VS Code
  • Rename config.h.sample to config.h
  • Open the file and set the configuration values for MQTT and the Bluetooth address from the previous step
  • Connect the ESP32 with a USB cable (you might have to hold RST and BOOT while plugging it in)
  • Compile and flash the project via PlatformIO → Upload and Monitor
  • If everything goes well, you should see a bunch of log messages, and a new device called PaceKeeper should show up in your Home Assistant

Cloud Free Usage – Start Without WiFi, App, and Cloud Account

You’ll get a remote with it; it has +, , and play/pause buttons. However, when you turn it on, it initially reacts with a long, annoying sound to any button press. When you turn it on with the power button, it will also take a while before showing display information, first lighting up all display segments.

That’s where you strike.

Turn it on and quickly press (+); you will be greeted with a short sound. Then press −, −, −, +, +, wait 20 seconds, turn it off and on again. It should now display something else, and you can start using it.

Sequence

  • Turn on using the power switch on the device
  • Press - on the remote
  • Press + on the remote
  • Press + on the remote for 3 seconds

Each correct input will be confirmed by a short, happy sound. Each incorrect input will be confirmed by a long, annoying sound.

Source:
https://www.reddit.com/r/treadmills/comments/1jtuwix/heres_how_you_unlock_superun_treadmills_without/

GitHub Project Link

https://github.com/peteh/pacekeeper

Acknowledgements

I built this with the help of many other people who put effort into reverse-engineering the Bluetooth protocol.

Web Bluetooth App (Python)

Python web interface to control the treadmill via Bluetooth but for another model.

GitHub project:
https://github.com/azmke/pitpat-treadmill-control

Web Bluetooth App (JavaScript)

A Web Bluetooth app written in JavaScript. Fully supports the B1 as well.

GitHub project:
https://github.com/KeiranY/PitPat-WebBT/

Zwift Integration by qdomyos

There is some work in a B1 sub-branch.

Source file:
https://github.com/cagnulein/qdomyos-zwift/blob/master/src/devices/deeruntreadmill/deerruntreadmill.cpp

Further Notes

Deerrun and Superun seem to use the same OEM hardware, so it’s likely that those devices might work as well.

This website stores cookies on your computer. These cookies are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to to opt-out of any future tracking, a cookie will be setup in your browser to remember this choice for one year.

Accept or Deny