https://github.com/kardzhilov/ruterscreen
π A Raspberry Pi-powered display for real-time Ruter public transport timetables in Oslo/Viken, featuring motion-activated screen dimming and 3D-printable case designs.
https://github.com/kardzhilov/ruterscreen
3d-printing iot norway public-transport raspberry-pi
Last synced: 7 months ago
JSON representation
π A Raspberry Pi-powered display for real-time Ruter public transport timetables in Oslo/Viken, featuring motion-activated screen dimming and 3D-printable case designs.
- Host: GitHub
- URL: https://github.com/kardzhilov/ruterscreen
- Owner: Kardzhilov
- License: other
- Created: 2025-03-28T09:49:49.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-06-19T09:49:00.000Z (8 months ago)
- Last Synced: 2025-06-19T10:26:44.858Z (8 months ago)
- Topics: 3d-printing, iot, norway, public-transport, raspberry-pi
- Language: Shell
- Homepage:
- Size: 16.1 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π RuterScreen
A Raspberry Pi-powered display for showing real-tThe setup script will guide you through configuring:
1. π₯οΈ Display mode (timetable-only or combined weather+timetable)
2. π Your Ruter stop URL
3. π€οΈ Your weather location ID (if using combined mode)
4. π Display brightness levels
5. π Motion detection settings (if using PIR sensor)
6. π Screen orientation
7. π Auto-start settings
### π€οΈ Weather Widget Configuration
For the weather widget, you'll need to:
1. Visit [weatherwidget.org](https://weatherwidget.org/)
2. Search for your city and copy the location ID (e.g., "wl8757" for Oslo)
3. Choose between Oslo (pre-configured) or enter your custom location ID during setup
### π€οΈ Quick Display Configuration
If you want to change the display mode or weather location ID without running the full setup, you can use:
```bash
./scripts/update_weather.sh
```
This script allows you to:
- Switch between timetable-only and combined display modes
- Update the weather location ID (for combined mode)
- Quick access to Oslo or custom location configuration. This project combines hardware and software to create an always-on display that shows public transport departures from your chosen stop in Oslo/Viken, Norway.

## π Overview
RuterScreen provides a dedicated display for Ruter's public transport timetables with optional integrated weather forecast, featuring automatic screen dimming when no one is around to save energy and extend display life. Choose between a full-screen timetable display or a combined layout with weather information in the top portion and Ruter timetables in the main area below.
## π Data Source
This project uses [Ruter's MonitorScreen service](https://mon.ruter.no/) as the primary data source. This provides a clean, minimalist display perfect for smaller screens.
### π Alternative Data Source
An alternative source is [Entur's Tavla](https://tavla.entur.no/), which offers:
- πΊοΈ Coverage for all of Norway (not just Oslo & Viken)
- βοΈ More customization options
- π’ Additional transport types (including ferries and flights)
However, Tavla requires:
- π€ User registration for custom views
- π± More screen space (their logo takes significant space on a 7" display)
You can modify this project to use Tavla instead of mon.ruter.no if you prefer their features. The setup script will guide you through configuring either option.
## β¨ Features
- π Real-time display of Ruter timetables from any stop
- π€οΈ Optional integrated weather widget from weatherwidget.org
- π± Flexible display modes: timetable-only or combined weather+timetable
- π Motion-activated display with automatic dimming
- π Customizable brightness levels and timeout settings
- π Auto-refresh to keep timetable alive in the case of an internet outage or ruter servers downtime
- π Auto-start on boot
## π Quick Start
1. π οΈ [Build the hardware](stl/BUILD.md) using the 3D printable case
2. π₯ Clone this repository:
```bash
git clone https://github.com/yourusername/RuterScreen.git
cd RuterScreen
```
3. βοΈ Run the setup script:
```bash
./setup.sh
```
4. π Follow the interactive prompts to configure your display
## π» Software Components
### π Core Scripts
- `setup.sh` - Interactive configuration script
- `scripts/brightness.sh` - Controls display brightness
- `scripts/motion_brightness.py` - Handles motion detection and auto-dimming
- `scripts/launchSite.sh` - Manages the display of the Ruter timetable (with optional weather widget)
- `display.html` - Combined layout for weather widget + timetable display
- `display-timetable-only.html` - Full-screen timetable layout
### β Features
- **π Motion Detection**: Automatically dims/brightens the display based on presence
- **π Auto-refresh**: Keeps the timetable current without manual intervention
- **βοΈ Configurable Settings**: Easily adjust brightness, timeout, and other parameters
## βοΈ Configuration
The setup script will guide you through configuring:
1. οΏ½οΈ Display mode (timetable-only or combined weather+timetable)
2. οΏ½π Your Ruter stop URL
3. π€οΈ Your preferred weather service URL (if using combined mode)
4. π Display brightness levels
5. π Motion detection settings (if using PIR sensor)
6. π Screen orientation
7. π Auto-start settings
### π€οΈ Quick Display Configuration
If you want to change the display mode or weather service URL without running the full setup, you can use:
```bash
./scripts/update_weather.sh
```
This script allows you to:
- Switch between timetable-only and combined display modes
- Update the weather service URL (for combined mode)
- Quick access to popular weather services
## π οΈ Hardware Requirements
- π₯οΈ Raspberry Pi (3B+, 4, or newer recommended) running Raspberry Pi OS with labwc Wayland compositor
- *This was the default option when i installed the OS, the other window managers had weird bugs when rotating a touch screen*
> β οΈ I used a Raspberry Pi 2B since i had one laying arround but I would discurage using it since you have to then get a usb wifi antenna and configure it to work. It took actual hours to compile the wifi driver since the 2b is so slow.
- πΊ [7-inch DSI LCD Display](https://aliexpress.com/item/1005006739026067.html)
- π PIR Motion Sensor, [model HC-SR501](https://aliexpress.com/item/32824574702.html) (optional)
- π¨οΈ 3D printed case (see [Build Instructions](stl/BUILD.md))
- π© M3 and M2.5 screws detailed in the Build instructions.
## π Todo
- π±οΈ Disable cursor being displayed
- **β οΈ Blocked** until rapberry pi os updates to a version of labwc that includes this change https://github.com/labwc/labwc/pull/2633
- π₯ Add a gif of the screen going from black to lit as the main image of this readme.
## π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## π¬ Support
If you encounter any issues:
1. π Open an issue on GitHub
2. βΉοΈ Include your configuration and any relevant error messages
## π License
This project is licensed under the **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International** (CC BY-NC-SA 4.0).
This means you are free to **modify and share** this work, but **commercial use is not allowed**.
[Read the full license here](https://creativecommons.org/licenses/by-nc-sa/4.0/).