# Testprocedure op Raspberry Pi 3-hardware De geautomatiseerde tests (`make test`, `make test-bookworm`) dekken de configuratie, validatie, de webinterface, de helper (inclusief netwerk-rollback), de agent en de healthcheck. Wat alleen op echte hardware te controleren is, staat hieronder. Voer dit uit voor iedere nieuwe release en voor elk nieuw type scherm. **Benodigd:** Raspberry Pi 3 Model B of B+, officiële voeding (5,1 V/2,5 A), nieuwe microSD-kaart van 16 GB of groter, HDMI-monitor, ethernetkabel, een wifi-netwerk, een laptop op hetzelfde netwerk. Noteer per stap: ✅ / ❌ + opmerking, de imageversie en het schermtype. ## 1. Flashen en eerste boot - [ ] Schrijf de `.img.xz` met Raspberry Pi Imager **zonder** OS-aanpassingen. - [ ] Eerste boot: de rootpartitie wordt vergroot (`df -h /` toont later ongeveer de kaartgrootte). De Pi herstart zichzelf eenmaal. - [ ] Binnen 90 s na stroom aan verschijnt het setupscherm met de setupcode, `http://kiosk.local:8080` en het IP-adres. Er is geen muiscursor en er zijn geen dialoogvensters. - [ ] SSH is uit (`ssh daynivoadmin@kiosk.local` wordt geweigerd), en er is geen bruikbaar standaardwachtwoord. ## 2. Initiële configuratie - [ ] `http://kiosk.local:8080` en `http://:8080` tonen de setuppagina. - [ ] Een verkeerde setupcode wordt geweigerd. Na 5 pogingen volgt een wachttijd. - [ ] Een zwak wachtwoord (`admin12345`) wordt geweigerd. - [ ] Met de juiste code en een sterk wachtwoord: dashboard. Het scherm schakelt binnen 10 s naar de kiosk-URL. - [ ] De setupcode werkt daarna niet meer (`/setup` stuurt door). ## 3. Kiosk - [ ] De pagina is fullscreen, zonder adresbalk, scrollbalk-pop-ups, vertaalbalk of "Chromium is niet correct afgesloten". - [ ] Na 30 minuten is het scherm niet gedimd of zwart geworden. - [ ] **Pagina herladen** (dashboard): de pagina herlaadt binnen 2 s, zonder zwart scherm (Chromium herstart niet). - [ ] **Chromium herstarten**: kort zwart scherm, binnen 15 s weer de pagina. - [ ] Een andere URL instellen (Kiosk → Instellingen): binnen 10 s getoond, zonder herstart van Chromium (de teller *Herstarts* blijft gelijk). - [ ] Een `http://`-URL wordt geweigerd. - [ ] Verversinterval op *Elke minuut*: de pagina herlaadt ongeveer elke minuut (zie Logboek → Kiosk-agent). - [ ] Screenshot op de Kiosk-pagina toont wat er op het scherm staat. - [ ] Daynivo-URL met `?token=`: het token is overal gemaskeerd (dashboard, `daynivo-kiosk-ctl status`, `journalctl -u daynivo-kiosk-agent`). ## 4. Herstel - [ ] `sudo pkill -9 chromium`: binnen 15 s is de pagina terug. Het logboek toont de herstart. - [ ] `sudo pkill -9 Xorg`: X en Chromium komen binnen 20 s terug. - [ ] Crashloop: `sudo daynivo-kiosk-ctl set-url https://localhost:1/` en daarna 7× `sudo pkill -9 chromium` binnen 2 minuten. De service komt in de fouttoestand (start-limit). De healthcheck logt een fout en start hem na ongeveer 5 minuten opnieuw. Er is geen eindeloze stille lus. Zet de URL daarna terug. - [ ] Vastgelopen pagina: open via SSH-tunnel DevTools of zet een testpagina met `while(true){}` in. Na ±15 s herlaadt de agent, na ±30 s herstart Chromium. - [ ] `sudo systemctl stop daynivo-kiosk-agent`: de healthcheck start hem binnen 2 minuten. - [ ] De webinterface blijft werken terwijl Chromium gestopt is (`sudo systemctl stop daynivo-kiosk-browser`). ## 5. Netwerk - [ ] Netwerkkabel eruit terwijl de pagina draait: de pagina **blijft staan** (een Daynivo-display toont zijn laatste inhoud). Het dashboard toont *Offline*. - [ ] Kabel weer erin: het dashboard toont binnen 1 minuut *Online*. - [ ] Opstarten zonder netwerk: offlinepagina met klok. Kabel erin: automatisch naar de kiosk-URL. - [ ] Wifi scannen toont netwerken. Wifi instellen (met kabel nog erin): wlan0 krijgt een adres. Bevestigen werkt. - [ ] Statisch IP op eth0 in een ander adres van hetzelfde subnet: beheer bereikbaar op het nieuwe adres, bevestigen daar. - [ ] **Rollback:** stel een statisch IP in een verkeerd subnet in en bevestig niet. Na 3 minuten is het oude adres weer bereikbaar. - [ ] **Rollback na stroomuitval:** herhaal, trek binnen 3 minuten de stroom eruit. Na het opstarten zijn de oude instellingen actief. - [ ] **Noodreset:** stel iets onbereikbaars in en bevestig het. Zet `daynivo-network-reset` op de bootpartitie en start: weer DHCP. ## 6. Systeem - [ ] Rotatie 90° en 270° (met *direct toepassen*): beeld gedraaid, pagina vult het scherm. - [ ] Resolutie 1280x720: het scherm schakelt om. Een niet-ondersteunde resolutie valt terug op automatisch. - [ ] *Scherm altijd aan* uit, 1 minuut: na een minuut gaat het scherm uit (DPMS). Zet het weer aan. - [ ] Hostname wijzigen naar `test-kiosk`: `http://test-kiosk.local:8080` werkt. - [ ] HTTPS aan: doorgestuurd naar `https://…:8080`. Na bevestiging van het certificaat werkt inloggen. - [ ] **Veilig uitschakelen**: de groene LED stopt met knipperen. De Pi komt pas terug na stroom eruit/erin. - [ ] **Raspberry Pi herstarten**: na ±60 s weer kiosk + beheer. ## 7. Betrouwbaarheid (24/7) - [ ] 10× stroom eruit tijdens normaal bedrijf (willekeurige momenten): steeds zonder ingrijpen terug in de kiosk, zonder "herstellen"-melding. - [ ] 72 uur continu draaien met verversinterval 5 min. Daarna: geheugen < 80% (dashboard), geen onderspanning, `journalctl -p err -b` zonder terugkerende fouten, `daynivo-kiosk-ctl status` alles *Actief*. - [ ] SD-kaartschrijfacties: `cat /proc/diskstats | grep mmcblk0` op t=0 en na 1 uur stationair. Het verschil in geschreven sectoren (kolom 10) is minder dan 50 MB per uur. - [ ] Hardware-watchdog actief: `systemctl show -p RuntimeWatchdogUSec` toont `15s`. ## 8. Uitrol en updates - [ ] Nieuwe kaart met `daynivo-config.json` (url, device_name, hostname, rotation) en `daynivo-authorized_keys` op de bootpartitie: bij de eerste boot toegepast, hernoemd naar `.applied`, SSH alleen met sleutel. - [ ] Ongeldige `daynivo-config.json` (http-URL): `.rejected` en `daynivo-config.error.txt` met de reden. De kiosk start met de standaardconfiguratie. - [ ] `sudo ./update.sh` vanuit een nieuwere checkout: versie in het dashboard verhoogd, configuratie en wachtwoord ongewijzigd, back-up in `/var/backups`. - [ ] Systeem → Software-updates → *Nu controleren* met een nieuwere release op Gitea: "beschikbaar". *Bijwerken naar …*: binnen enkele minuten is de nieuwe versie actief, de beheerinterface komt terug, configuratie en wachtwoord ongewijzigd. - [ ] *Automatisch bijwerken* aan, `sudo systemctl start daynivo-kiosk-update.service`: de nieuwere release wordt geïnstalleerd. Met het vinkje uit: alleen gecontroleerd. - [ ] `curl -fsSL https://daynivo.nl/kiosk/install.sh | sudo bash` op een verse Raspberry Pi OS Lite: installeert de nieuwste release, setupcode op het scherm. - [ ] `sudo ./uninstall.sh --purge` op een testkaart: geen Daynivo-services of -bestanden meer (`systemctl list-unit-files | grep daynivo` is leeg). - [ ] Installatie op een bestaande Raspberry Pi OS Lite (Bookworm) met de Daynivo-kiosk erop: URL overgenomen, `display-kiosk.service` uitgeschakeld.