Hot's Pizza Payphone
A Raspberry Pi powered payphone with a live web dashboard, WiFi setup tools, programmable sounds, and OTA updates.
What it does
- Web dashboard for status, logs, updates, WiFi, and sounds
- Keypad sequences trigger sounds (dial digits, press #)
- Live DTMF or musical keypress tones
- Volume cycling with the LOUD button
- Automatic WiFi fallback to a setup access point
- Watchdog and OTA update with rollback on failure
Documentation
| Guide | When to read |
|---|---|
| User Guide | Operating the phone: dashboard, sounds, WiFi, updates |
| Development Guide | Developing, deploying, or SSH-ing into the Pi |
| Cloudflare Tunnel Guide | Exposing the portal to the internet securely |
Screenshot
Dashboard showing Daily Pickups chart, Service Status, System Update, and Recent Activity
Quick start (Pi)
git clone https://github.com/rarestg/hots-pizza-pi.gitcd hots-pizza-pi./setup.sh --full(installs deps, creates venv, copies to~/payphone, sets systemd units)- Browse to
http://<pi-ip>:5000 - Configure WiFi and sounds in the web portal
Hardware overview
- Raspberry Pi (Zero 2 W or better)
- Audio out via USB or onboard to the handset
- Hook switch wires on GPIO17 and GPIO27 (connected when lifted)
- LOUD button on GPIO4
- Keypad matrix on GPIO rows
[18, 23, 24, 25]and cols[12, 16, 20, 21](customize via calibration) - Needs network for portal; falls back to setup AP when offline
Architecture at a glance
payphone_service.py— GPIO, hook switch, keypad, audio playback, analyticsapp.py— FastAPI web portal (port 5000), sounds, WiFi UI, updatesscripts/payphone-wifi— NetworkManager helper (sudo)scripts/payphone-wifi-monitor.py— Connectivity watchdog and AP fallbackwatchdog.sh— Health checks, restart or rebootupdate.sh— OTA update with health check and rollback
License
MIT