Skip to content

Hot's Pizza Payphone

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 overview Dashboard showing Daily Pickups chart, Service Status, System Update, and Recent Activity

Quick start (Pi)

  1. git clone https://github.com/rarestg/hots-pizza-pi.git
  2. cd hots-pizza-pi
  3. ./setup.sh --full (installs deps, creates venv, copies to ~/payphone, sets systemd units)
  4. Browse to http://<pi-ip>:5000
  5. 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, analytics
  • app.py — FastAPI web portal (port 5000), sounds, WiFi UI, updates
  • scripts/payphone-wifi — NetworkManager helper (sudo)
  • scripts/payphone-wifi-monitor.py — Connectivity watchdog and AP fallback
  • watchdog.sh — Health checks, restart or reboot
  • update.sh — OTA update with health check and rollback

License

MIT