The Problem
Older appliances don't tell you when they're done. You start the dryer, forget about it, and three hours later your clothes are a wrinkled mess. Smart sensors exist, but they're often overpriced, cloud-dependent, or require subscriptions.
Enter VibeMonitor, an open-source Android app by Marshall Richards that transforms a cheap prepaid smartphone into a vibration sensor. Stick it on any appliance, and it'll send you a webhook notification when the vibration stops.
The insight: Modern prepaid phones cost $30 and come packed with sensors — accelerometer, gyroscope, ambient light, microphone, camera. That's more sensing capability than most dedicated IoT devices, at a fraction of the cost.
Total Cost
| Item | Price |
|---|---|
| Moto G Play 2024/2025 (Prepaid, Walmart) | ~$30 |
| 3M VHB double-sided tape | ~$8 |
| Phone holder (from cheap selfie stick) | ~$5 |
| Total | ~$43 |
No service plan needed. The phone is "locked to carrier" but you never need to activate cellular service. Skip all the carrier setup prompts, connect to WiFi, and you're done. The carrier lock is completely irrelevant for this use case.
Setup Guide
1Prepare the Phone
Power on the phone, skip all carrier activation prompts, and connect to your home WiFi. Then enable Developer Options:
- Go to Settings → About Phone
- Tap "Build number" 7 times to unlock Developer Options
- Go to Settings → System → Developer Options
- Enable Wireless debugging (easier than USB for this)
2Set Up Notifications (Free)
You need somewhere to receive webhook notifications. The simplest free option is ntfy.sh — no account required:
- Pick a unique topic name (e.g.,
myhouse-dryer-x7k9m) - Install the ntfy app on your main phone, subscribe to your topic
- Your webhook URL will be:
https://ntfy.sh/your-topic-name
Test it from your computer terminal:
curl -d "Test notification" ntfy.sh/your-topic-name
3Build the App
VibeMonitor doesn't have pre-built releases, so you'll need to compile it. On macOS with Homebrew:
# Install dependencies
brew install openjdk@17 android-platform-tools
# Set up environment
export JAVA_HOME=$(brew --prefix openjdk@17)
export PATH="$JAVA_HOME/bin:$PATH"
export ANDROID_HOME=~/Library/Android/sdk
# Clone and build
git clone https://github.com/marshallrichards/VibeMonitor.git
cd VibeMonitor
chmod +x gradlew
./gradlew assembleDebug
The APK will be at app/build/outputs/apk/debug/app-debug.apk
4Install via Wireless ADB
On the sensor phone, go to Developer Options → Wireless debugging → Pair device with pairing code. Note the IP, port, and 6-digit code.
# Pair (use the pairing port shown on phone)
adb pair 192.168.x.x:xxxxx
# Enter 6-digit code when prompted
# Connect (use the main wireless debugging port)
adb connect 192.168.x.x:xxxxx
# Verify connection
adb devices
# Install
adb install app/build/outputs/apk/debug/app-debug.apk
5Configure VibeMonitor
- Open the app and grant notification permissions (required for background service)
- Add your webhook URL:
https://ntfy.sh/your-topic-name - Set the vibration threshold (start with default, tune later)
- Set the duration (how long vibration must stop before notification)
- Tap "Test Webhook" to verify notifications work
6Mount and Tune
Attach the phone to your dryer (top surface works well) using 3M VHB tape or a phone holder. Keep it plugged in permanently. Run a dryer cycle and adjust the threshold until it reliably detects running vs. stopped states.
Battery tip: Go to Settings → Apps → VibeMonitor → Battery and set to "Unrestricted" so Android doesn't kill the background service.
Beyond the Dryer: More Use Cases
A $30 phone has far more sensors than a dedicated IoT device. Here's what else you can monitor:
📳 Vibration/Motion (Accelerometer)
- Washing machine — know when the cycle ends
- Garage door — detect open/close, alert on unexpected movement
- 3D printer — notification when print finishes (or fails)
- Sump pump — track activation frequency, alert on anomalies
- Package delivery — detect mailbox lid movement
🎤 Sound (Microphone)
- Smoke/CO alarm — get phone alerts when alarms trigger
- Doorbell — smart notifications for dumb doorbells
- Dog barking monitor — track barking while away
- Appliance beeps — centralize alerts from microwave, oven, etc.
💡 Light (Ambient Sensor + Camera)
- Freezer door ajar — light sensor detects if door isn't sealed
- Pilot light monitor — camera watches gas appliance pilot
- Power outage detection — watch an LED nightlight
- Mail arrival — light change inside dark mailbox
📷 Camera (Computer Vision)
- Analog gauge reader — water/gas meter, oil tank level
- Parking spot monitor — check if street spot is taken
- Security camera — always-on, motion-triggered
- Pet feeder level — visual check on food/water
Why This Matters
The VibeMonitor approach represents a broader insight: modern smartphones are absurdly capable general-purpose sensor platforms. Prepaid carriers sell them at a loss hoping you'll buy their plans. You don't have to.
For the price of a single "smart" vibration sensor, you get a device with a 6+ inch screen for debugging, a multi-day battery, WiFi, multiple sensors, and a full Linux-based OS that can run arbitrary code.
The code is open source. The notifications are self-hosted (or use free services). There's no subscription, no cloud dependency, no vendor lock-in. Just a cheap phone doing exactly what you tell it to do.
VibeMonitor created by Marshall Richards
github.com/marshallrichards/VibeMonitor
Original write-up inspired this post. All credit for the app and core ideas goes to Marshall.