Pi Time Zone Clock

February 18, 2026 · View on GitHub

A Raspberry Pi dashboard clock displaying dual time zones (Jerusalem local + UTC), weather, air quality, Hebrew calendar dates, Pikud HaOref red alerts, and Times of Israel headlines. Automatically switches to Shabbat mode with parasha and candle lighting/havdalah times.

Pi Time Zone Clock

Features

  • Dual clocks — Jerusalem local time + UTC, ticking every second
  • Weather — Current temperature and conditions via OpenWeatherMap
  • Air Quality — AQI and PM2.5 via IQAir
  • Hebrew Calendar — Current Hebrew date via Hebcal
  • Red Alerts — Pikud HaOref missile alerts with pulsing indicator
  • News — Scrolling headlines from Times of Israel RSS
  • Shabbat Mode — Auto-detects Shabbat; shows parasha, candle lighting, and havdalah times
  • Settings UI — Web-based configuration at /settings
  • Kiosk ready — Designed for fullscreen Chromium on a Pi

Repository Structure

├── app/                   # Application code
│   ├── server.js
│   ├── package.json
│   ├── config/
│   ├── services/
│   ├── routes/
│   ├── public/
│   └── deploy/
├── docs/                  # Design & planning
│   └── wireframes/
└── README.md

Quick Start

# Clone and install
git clone https://github.com/danielrosehill/Pi-Time-Zone-Clock.git
cd Pi-Time-Zone-Clock/app
npm install

# Configure API keys
cp .env.example .env
# Edit .env with your OpenWeatherMap and IQAir keys

# Run
npm start
# Open http://localhost:3000

Configuration

Environment Variables (app/.env)

VariableDescriptionRequired
OPENWEATHER_API_KEYOpenWeatherMap API keyYes
IQAIR_API_KEYIQAir API keyYes
PORTServer port (default: 3000)No
LATITUDELocation latitude (default: 31.77)No
LONGITUDELocation longitude (default: 35.23)No
GEONAME_IDGeoNames city ID (default: 281184 / Jerusalem)No
TIMEZONEIANA timezone (default: Asia/Jerusalem)No

Settings UI

Visit http://localhost:3000/settings to configure:

  • Bottom bar mode (auto/news/shabbat)
  • Alert polling on/off and interval
  • News RSS feed URL
  • Time format (12/24hr)
  • Location coordinates

Raspberry Pi Deployment

# On the Pi:
cd /home/pi/Pi-Time-Zone-Clock/app
sudo bash deploy/setup.sh

This installs Node.js, dependencies, creates a systemd service (pi-clock), and prepares the kiosk launcher.

# Start kiosk (fullscreen Chromium)
./deploy/chromium-kiosk.sh

# Service management
sudo systemctl status pi-clock
sudo journalctl -u pi-clock -f

API Endpoints

EndpointDescription
GET /api/stateFull dashboard state (all services)
GET /api/weatherCurrent weather
GET /api/airqualityAir quality data
GET /api/hebrew-dateHebrew calendar date
GET /api/shabbatShabbat status and times
GET /api/alertsRed alert status
GET /api/newsNews headlines
GET /api/settingsCurrent settings
POST /api/settingsUpdate settings

Architecture

  • Backend: Node.js + Express. Each data service polls its API on independent intervals and updates a shared in-memory state object.
  • Frontend: Vanilla HTML/CSS/JS. Client-side clock ticks at 1s; dashboard polls /api/state every 10s.
  • No build step — lightweight enough to run directly on a Pi Zero 2W+.

Photos

Running on a 10-inch monitor:

Full dashboard with news panel

Clock close-up

Fonts