Project ZRN — Zie Rooster Nu

Roosterkiosk
voor het WvO

Scan je druppel — zie je rooster. Een vaste terminal voor het Willem van Oranje College die telefoons overbodig maakt.

Live op Raspberry Pi
Zermelo API
Numpad scherm
Scan scherm
Rooster scherm

Een terminal, geen telefoon

Telefoons zijn verboden op school. Leerlingen kunnen nergens snel hun rooster checken. Project ZRN plaatst een vaste kiosk-terminal in de gang — druppel erop, rooster in beeld.

01

NFC-druppel

Leerling legt schooldruppel op scanner. Rooster verschijnt direct — geen inloggen, geen wachten.

02

Toetsenbord-invoer

Geen druppel? Leerlingnummer intypen werkt ook. Volledig toetsenbordgestuurd, geen touchscreen nodig.

03

Vergrendelde kiosk

Geen ontsnapping naar terminal of desktop. Dichtgezet op systeem- én kernel-niveau. Uitgebreid getest.

04

ByteBell Software

Vrijwillig gebouwd door Milan van Raaij en Nik. Professionele codebase op GitHub (private).

Startscherm
Startscherm
→
Numpad
Leerlingnummer
→
Rooster
Rooster

Datastroom

Druppel scannen

MFRC522-reader leest UID van MIFARE Classic 1K druppel. Druppels bevatten alleen UID — geen leerlingnummer in de data.

UID → leerlingnummer

Lokale SQLite-database koppelt UID aan leerlingnummer. Eerste keer: leerling typt nummer in (enrollment). Daarna: automatisch.

Zermelo API

Pi haalt rooster op via wvoo.zportal.nl/api/v3/appointments met user=<leerlingnummer>. Getest en werkend met eigen account.

Rooster op scherm

Naam, klas, leerlingnummer bovenaan. Lessen als groene blokken — vaknaam, lokaal, docent, tijd. Scrollt bij volle dag.

Stack

Hardware
Raspberry Pi 3 — draait live
Raspbian Trixie (kernel 6.18)
Fysiek toetsenbord / NumPad
MFRC522 NFC-reader — te koppelen
Scherm — te bepalen
Software
Python 3 + Flask
Zermelo REST API client
SQLite — UID ↔ leerlingnummer
Chromium kiosk-mode (Wayland)
systemd service + auto-restart
Beveiliging
Taakbalk + bureaublad uitgeschakeld
Alle sneltoetsen geblokkeerd (labwc)
VT-switch geblokkeerd — kernel-level keymap
DevTools uitgeschakeld in Chromium
flock-bewakte auto-restart loop

Wat staat er, wat ontbreekt

Klaar
  • Zermelo API koppeling — getest met eigen account
  • UI: 3 schermen, volledig toetsenbordgestuurd
  • Kiosk-lockdown uitgebreid getest en dichtgezet
  • Git-based deployment workflow (Pi ← GitHub)
  • Professionele Engelstalige codebase
  • Live op Pi — service draait stabiel
Wacht op school-ICT
  • Schoolbreed Zermelo API-token (beheerderstoken)
  • UID → leerlingnummer mapping — Meneer Potters heeft ons doorgestuurd naar ICT voor vragen over druppel-decoding en veiligheid
  • Aanschaf MFRC522 NFC-reader — school betaalt, project is vrijwillig
  • Scherm bepalen en permanent aansluiten

Wat we geleerd hebben van de school

Op school staat inmiddels een roosterpaal van een andere partij. Die laat zien wat er goed en fout kan gaan — en geeft ons concrete verbeterpunten voor Project ZRN.

Problemen met de huidige paal
⚠

Iedereen kan iemand anders inplannen

Het rooster van elke leerling is opvraagbaar zonder verificatie. Dat zou acceptabel zijn — maar de paal laat ook toe dat je voor anderen iets inplant. Dat is een serieus probleem.

⚠

Slechts één paal — altijd te druk

Eén terminal voor de hele school is te weinig. Er staat altijd een rij, zeker tussen de lessen door.

⚠

Geen docenten- of lokaalroosters

Alleen leerlingroosters worden getoond. Docenten kunnen hun eigen rooster niet opvragen, en lokalen zijn niet in te zien.

Verbeteringen in Project ZRN
✓

40-minutenrooster

Ondersteuning voor het 40-minutenrooster dat op school gebruikt wordt — correcte tijdsloten in plaats van standaard uurblokken.

✓

Vakanties duidelijk zichtbaar

Vakantiedagen en vrije periodes worden expliciet weergegeven, zodat leerlingen niet voor een leeg scherm staan.

✓

Weekrooster

Naast het dagrooster ook een overzicht van de hele week — zodat leerlingen vooruit kunnen kijken.