{"id":27772295,"url":"https://github.com/kardzhilov/ruterscreen","last_synced_at":"2026-04-09T05:31:38.833Z","repository":{"id":287078091,"uuid":"956463920","full_name":"Kardzhilov/ruterScreen","owner":"Kardzhilov","description":"🚉 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.","archived":false,"fork":false,"pushed_at":"2025-06-19T09:49:00.000Z","size":16934,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-19T10:26:44.858Z","etag":null,"topics":["3d-printing","iot","norway","public-transport","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kardzhilov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-28T09:49:49.000Z","updated_at":"2025-06-19T09:49:03.000Z","dependencies_parsed_at":"2025-04-09T21:35:10.973Z","dependency_job_id":"f798e9a9-f286-4b63-8780-b2e549195f8d","html_url":"https://github.com/Kardzhilov/ruterScreen","commit_stats":null,"previous_names":["kardzhilov/ruterscreen"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kardzhilov/ruterScreen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardzhilov%2FruterScreen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardzhilov%2FruterScreen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardzhilov%2FruterScreen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardzhilov%2FruterScreen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kardzhilov","download_url":"https://codeload.github.com/Kardzhilov/ruterScreen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardzhilov%2FruterScreen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266905603,"owners_count":24004148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-printing","iot","norway","public-transport","raspberry-pi"],"created_at":"2025-04-29T23:58:20.639Z","updated_at":"2026-04-09T05:31:38.827Z","avatar_url":"https://github.com/Kardzhilov.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚉 RuterScreen\n\nA Raspberry Pi-powered display for showing real-time public transport timetables in Oslo/Viken.\n\n\u003e **Note:** **Weather display is now added!** You can choose to show weather information alongside your public transport timetable using the combined display mode.\n\nThe setup script will guide you through configuring:\n1. 🖥️ Display mode (timetable-only or combined weather+timetable)\n2. 🔗 Your Ruter stop URL\n3. 🌤️ Your weather location ID (if using combined mode)\n4. 🔆 Display brightness levels\n5. 👋 Motion detection settings (if using PIR sensor)\n6. 🔄 Screen orientation\n7. 🚀 Auto-start settings\n\n### 🌤️ Weather Widget Configuration\n\nFor the weather widget, you'll need to:\n1. Visit [weatherwidget.org](https://weatherwidget.org/)\n2. Search for your city and copy the location ID (e.g., \"wl8757\" for Oslo)\n3. Choose between Oslo (pre-configured) or enter your custom location ID during setup\n\n### 🌤️ Quick Display Configuration\n\nIf you want to change the display mode or weather location ID without running the full setup, you can use:\n```bash\n./scripts/update_weather.sh\n```\n\nThis script allows you to:\n- Switch between timetable-only and combined display modes\n- Update the weather location ID (for combined mode)\n- 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.\n\n![Finished Product](images/Finished.jpg)\n\n## 📋 Overview\n\nRuterScreen 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.\n\n## 🔄 Data Source\n\nThis 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.\n\n### 🔄 Alternative Data Source\n\nAn alternative source is [Entur's Tavla](https://tavla.entur.no/), which offers:\n- 🗺️ Coverage for all of Norway (not just Oslo \u0026 Viken)\n- ⚙️ More customization options\n- 🚢 Additional transport types (including ferries and flights)\n\nHowever, Tavla requires:\n- 👤 User registration for custom views\n- 📱 More screen space (their logo takes significant space on a 7\" display)\n\nYou 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.\n\n## ✨ Features\n- 🚍 Real-time display of Ruter timetables from any stop\n- 🌤️ Optional integrated weather widget from weatherwidget.org\n- 📱 Flexible display modes: timetable-only or combined weather+timetable\n- 👋 Motion-activated display with automatic dimming\n- 🔆 Customizable brightness levels and timeout settings\n- 🔄 Auto-refresh to keep timetable alive in the case of an internet outage or ruter servers downtime\n- 🚀 Auto-start on boot\n\n## 🚀 Quick Start\n\n1. 🛠️ [Build the hardware](stl/BUILD.md) using the 3D printable case\n2. 📥 Clone this repository:\n   ```bash\n   git clone https://github.com/yourusername/RuterScreen.git\n   cd RuterScreen\n   ```\n3. ⚙️ Run the setup script:\n   ```bash\n   ./setup.sh\n   ```\n4. 📝 Follow the interactive prompts to configure your display\n\n## 💻 Software Components\n\n### 📜 Core Scripts\n- `setup.sh` - Interactive configuration script\n- `scripts/brightness.sh` - Controls display brightness\n- `scripts/motion_brightness.py` - Handles motion detection and auto-dimming\n- `scripts/launchSite.sh` - Manages the display of the Ruter timetable (with optional weather widget)\n- `display.html` - Combined layout for weather widget + timetable display\n- `display-timetable-only.html` - Full-screen timetable layout\n\n### ⭐ Features\n- **👋 Motion Detection**: Automatically dims/brightens the display based on presence\n- **🔄 Auto-refresh**: Keeps the timetable current without manual intervention\n- **⚙️ Configurable Settings**: Easily adjust brightness, timeout, and other parameters\n\n## ⚙️ Configuration\n\nThe setup script will guide you through configuring:\n1. �️ Display mode (timetable-only or combined weather+timetable)\n2. �🔗 Your Ruter stop URL\n3. 🌤️ Your preferred weather service URL (if using combined mode)\n4. 🔆 Display brightness levels\n5. 👋 Motion detection settings (if using PIR sensor)\n6. 🔄 Screen orientation\n7. 🚀 Auto-start settings\n\n### 🌤️ Quick Display Configuration\n\nIf you want to change the display mode or weather service URL without running the full setup, you can use:\n```bash\n./scripts/update_weather.sh\n```\n\nThis script allows you to:\n- Switch between timetable-only and combined display modes\n- Update the weather service URL (for combined mode)\n- Quick access to popular weather services\n\n## 🛠️ Hardware Requirements\n\n- 🖥️ Raspberry Pi (3B+, 4, or newer recommended) running Raspberry Pi OS with labwc Wayland compositor \n    - *This was the default option when i installed the OS, the other window managers had weird bugs when rotating a touch screen*\n\u003e ⚠️ 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. \n- 📺 [7-inch DSI LCD Display](https://aliexpress.com/item/1005006739026067.html)\n- 👋 PIR Motion Sensor, [model HC-SR501](https://aliexpress.com/item/32824574702.html) (optional)\n- 🖨️ 3D printed case (see [Build Instructions](stl/BUILD.md))\n- 🔩 M3 and M2.5 screws detailed in the Build instructions.\n\n## 📝 Todo\n- 🖱️ Disable cursor being displayed\n    - **⚠️ Blocked** until rapberry pi os updates to a version of labwc that includes this change https://github.com/labwc/labwc/pull/2633\n- 🎥 Add a gif of the screen going from black to lit as the main image of this readme.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 💬 Support\n\nIf you encounter any issues:\n1. 📝 Open an issue on GitHub\n2. ℹ️ Include your configuration and any relevant error messages\n\n## 📄 License\n\nThis project is licensed under the **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International** (CC BY-NC-SA 4.0).  \nThis means you are free to **modify and share** this work, but **commercial use is not allowed**.  \n\n[Read the full license here](https://creativecommons.org/licenses/by-nc-sa/4.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardzhilov%2Fruterscreen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkardzhilov%2Fruterscreen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardzhilov%2Fruterscreen/lists"}