Python applications

Networked Polling Terminals

A client/server polling system connecting Raspberry Pi terminals to a central desktop monitoring and reporting application.

My contribution

Python client/server application development

Project archive
Networked Polling Terminals
Networked Polling Terminals
ENGINEERING HIGHLIGHTS

What stands out.

  • Local buffering & reconnection sync
  • Central poll setup & reporting
  • Five-terminal physical demonstration
Project overview

From the problem to the implementation.

The problem

Organizations need to collect responses at several locations and review their status and results in one place.

The approach

  • Programmed networked Raspberry Pi client and Python server components.
  • Built PyQt interfaces for poll setup, device status and live totals.
  • Added reporting workflows with filters for location, date, time and response.

What came together

A distributed polling application with terminal interfaces, centralized data and an operator reporting workflow.

Project footage

See it in action

Simulated polling workflow

Simulated demonstration — polling workflow. Silent demonstration.

Open video

Five-terminal test

Test with five polling terminals operating together. Silent demonstration.

Open video

Desktop reporting application

Polling-system Windows reporting demonstration. Silent demonstration.

Open video
System view

How the system works

Polling terminal

Raspberry Pi client collects a response at the device.

Local buffer

SQLite stores submissions when the network is unavailable.

Synchronization

The client transfers queued records after reconnection.

Central data

SQL Server stores records from the connected terminals.

Windows application

PyQt provides poll setup, device status, live totals and reporting.

Technical notes

The detail behind the build

Terminals and a central operator application

Raspberry Pi polling terminals collect responses at different locations. A Windows application creates polls, selects the active poll, monitors device status and displays results.

Recording through a disconnection

When a terminal loses its network connection, it stores responses locally. After reconnection, queued records are synchronized with the server and transferred local records are cleared. Device time is synchronized periodically from the network/server.

Making results useful

The Python/PyQt application shows counts and percentages for the full system or an individual terminal, monitors incoming responses and provides reporting filters such as region, date, time and selected option.

Seeing the system work

The media includes a physical demonstration with five terminals, a simulated workflow and a reporting-interface demonstration. Together, they explain the relationship between the devices, central data and operator controls.

Implementation

Software, hardware & tools.

Software

  • Python client/server applications
  • Local buffering & central SQL Server records

Hardware

  • Raspberry Pi terminals
  • Pi Camera
  • Custom PCB
  • Local-network connection

Technology stack

  • Client/server systems
  • Offline synchronization
  • Reporting
Shared work

Project contributions.

Hossein Aalamshahi
System design
Continue the conversation

Working on a related challenge?

Get in touch about Python, embedded systems or a research opportunity.

Next project

Object Detection & Tracking on Zynq

FPGA & embedded vision