Building the PiSpot Watch—An IoT Adventure

Building the PiSpot Watch—An IoT Adventure
PiSpot Watch in action in Guadeloupe, France © Sergio Fernández
Scientists investigate that which already exists; Engineers create that which has never existed.

Theodore von Karman

I wish I could have titled this post "The day my product competed against Apple Watch", but then I would have to omit the tiny detail that my watch could have doubled as a medieval self-defense gadget.

No, this wasn't a sleek stainless steel timepiece with a seamless Retina display and silky-smooth wrist straps. There was no keynote stage, no Tim Cook, and certainly no billion-dollar marketing campaign. But there I was, staring down at a scrappy yet lovable Raspberry Pi Zero bolted snugly onto my wrist—my own personal "PiSpot" smartwatch. And yes, for one beautiful, bewildering moment, I considered it an Apple Watch challenger.

Okay, let's rewind. The PiSpot didn't start with grand world-conquering ambitions. Instead, it began humbly, scrolling through dozens of job postings on Upwork. "IoT wearable project in Guadeloupe," the listing teased. Passions were sparked, interviews exchanged, and before long, I found myself elbow-deep in Raspberry Pis, software deployments, and hardware build.

Little did I know, this adventure—and trust me, it's the right term—was going to introduce me to such an eclectic stack of technologies, yet at its heart, was a human story of learning, adapting, frustration, and triumph—in short, everything a messy and rewarding project should be.

If you've ever worked closely with hardware before, you'll know the old saying in the Valley—"Hardware is hard"— Clearly nothing in hardware is ever simple. It's fiddly, unpredictable, but rewarding. Let's step behind the scenes of how I brought to life our quirky little device at Good Peoples Connected (GPConnect)—a rugged yet minimalist wearable hotspot voucher-generator called PiSpot Watch.

The GitHub repository for the PiSpot Watch is available here. The deployment files for the PiSpot Suite (Because there is another project I will not delve into, called PiSpot Show—which is another device for showing voucher codes on a TV screen) are here.

PiSpot Show cases © Sergio Fernández

Raspberry Pi

Right, let's set the context. This project centered around assembling a portable and compact device that could reliably provide internet voucher codes on demand for venues utilizing Hotspot Wi-Fi services through "Spotipo", a guest Wi-Fi portal solution. The client had a vision: tap a button, show a code, have it stylish and wearable.

At the start, I quickly selected the Pi Zero for its compact form factor, low-power consumption, and open-source appeal—it had just enough horsepower to run Raspbian with minimal overhead. On top, I stacked two indispensable HATs: the PaPiRus Zero (e-ink display, saving precious battery life) and another unnamed HAT for the battery (as somehow PiJuice Zero would not work)

Learning hardware: love it, hate it, "FreeCAD it"

If you've never worked on hardware, you're blissfully unaware of how tough and frustrating it can truly get. There were unexpected delays in shipments. Broken pins. Batteries that didn't last nearly long enough, forcing me to iterate through a seemingly endless line-up of mAh ratings... etc.

But by far, the hardest—and, paradoxically, most rewarding—aspect of hardware building was designing and printing the enclosure itself. Picture this scenario: I officially hated anything remotely resembling "industrial design" before. Sketching could very well have started on napkins. Cubes and spheres were luxuries of geometry classes I gladly skipped.

But to give this device a chance of looking half-decent, I begrudgingly—then obsessively—learned FreeCAD, a powerful yet daunting open-source technical drawing tool. Soon my screen was a chaotic battlefield of vertices, sketch lines, constraints, and curves. It was miserable bliss.

Determined to see my creation physically realized, I pulled the trigger: bought a FlashForge Finder 3D printer, smiling cautiously as I loaded my first spool of vibrant blue PLA. It was noisy, smelled funny, and honestly expensive—but exhilarating. Watching my first functional, blue enclosure take shape was worth every annoyance I got battling humidity issues, warped prints, and bed-leveling drama.

Straps? PiSpot was thicker than an Apple Watch, so finding the right strap took more time and searches than I'd like to admit.

"Mass"-producing PiSpot Watch cases © Sergio Fernández

A shipment from Sainte-Anne—and needless fury in Spain

With prototypes printed and scripts debugged, the client sent me critical HATs and specialized components from Guadeloupe. Finally, hardware was on its way—only SEUR, the courier in Spain, had no such intention. I vividly recall countless futile customer service calls ("Oh yes, today for sure"), emails ignored, and ultimately discovering they hadn't even attempted delivery once—I still get flashbacks of frustrated fury. In the end, the package need to be re-sent.

AWX, Automation, and playing with Ansible

You never handcraft a hundred Pis. You script it. You deploy it. You automate it. For maximum reliability—and minimal madness—I deployed AWX, the open-source upstream project for Ansible Tower. Using Playbooks written meticulously (and sometimes frantically), I could ensure repeatability in installing packages, configuring services, enabling security mechanisms, configuring Wi-Fi (remember wpa_supplicant?), and even orchestrating secret handling securely through HashiCorp Vault.

Every PiSpot unit was provisioned remotely via these Ansible Playbooks:

  • Base System Setup: Installing and tweaking configurations for Raspbian, tweaking battery settings, and hardware I/O configurations like disabling the HDMI output or disabling LEDs.
  • PaPiRus Setup: Installing the gratis driver, configuring the appropriate screen size, and ensuring SPI & I2C communication were functioning smoothly (thank you, raspi-config scripting!).
  • IoT integrations & secrets: Fetching secrets securely from the Vault and configuring the Spotipo integration on-the-fly thanks to my Python glue.
  • Monitoring & Logging: I configured FluentBit agents for lightweight collection and central forwarding of logs, minimizing troubleshooting efforts (keeping my sanity) later on.

Pushing a Button, Showing a Voucher: Python unveiled

With hardware and core architecture configured, the core functionality was quite straightforward but required some careful coding:

  1. Buttons connected directly to GPIO pins.
  2. Clicking invokes a Python script utilizing hvac library to retrieve secrets from Vault securely at runtime.
  3. Spotipo REST API integration via requests library to generate Wi-Fi vouchers.
  4. The codes displayed briefly via e-ink display.

With my scripting and service management, everything was wrapped neatly in a manageable and easily deployed software distribution.

Over-the-air policy updates

Proactively securing our workflow, I created update scripts (UpdateSecretID.yaml, UpdatePackages.yaml) to dynamically refresh secrets and maintain software updates remotely, leveraging AWX to orchestrate updates to multiple PiSpot devices concurrently, making fleet management surprisingly painless.

And then reality hit home (and wallet): The human factor

Regrettably, not all adventures conclude harmoniously. Despite the tireless work, endless calls, and uncountable late-night debugging sessions, financial commitments weren't entirely honored. Half the agreed payment simply never materialized, a harsh lesson learned about contracts and client trust. Yet, while frustrating and disappointing, this project gifted me learnings that far outlasted the sting of financial loss—at least emotionally, if not economically.

Reflecting on a Raspberry-flavored odyssey

Oddly enough, despite mixed feelings dealing with missed payments, courier crises, and never-ending case designs, looking back now I recall the whole PiSpot saga fondly. It genuinely stretched and shaped me as an engineer, a developer, a designer, and a human being.

Was it really competing with Apple? Probably not. Nobody would seriously pick our 3D-printed chunky blue watch over Cupertino's finest sleek lines. But that scrappy Raspberry Pi on my wrist symbolized something unique—and uniquely human: the triumph of curiosity, determination, and relentless self-learning.

No keynote. No billion-dollar pitch. Just a whole lot of heart, frustration, and beautiful chaos.

Well, Apple: your move. 😉

Sergio Fernández

Sergio Fernández

Senior Cloud DevOps Engineer specializing in Kubernetes.
Murcia, Spain