Wekkers zetten gebeurt nu automatisch, vanaf mijn dienstagenda

· 3 min lezen

Mijn dienstrooster staat al een tijdje in een online agenda — de EBS-Diensten-agenda op mijn eigen Nextcloud (via CalDAV). Handig voor het overzicht, maar de wekker stelde ik nog steeds elke avond handmatig: opstaan, hond uitlaten, op tijd naar de garage. Precies drie wekkers, elke keer opnieuw beslist op basis van hoe laat de dienst de volgende dag begint. Daar wilde ik vanaf.

De uitdaging

Een dienst begint niet altijd op een heel uur. Begint ie om 06:18, dan is dat geen makkelijk getal om een avond vantevoren te onthouden. Ik rond daarom de begintijd af op een heel kwartier:

Begin van de dienstAangenomen begintijd
05:00 – 05:1405:00
05:15 – 05:2905:15
05:30 – 05:4405:30
05:45 – 05:5905:45

Vanuit die aangenomen begintijd staan elke dag dezelfde drie wekkers gepland:

WekkerWanneerBij aanvang 06:15
Opstaan2 uur vóór aanvang04:15
Wally (hond uitlaten)1,5 uur vóór aanvang04:45
Vertrek (naar de garage)0,5 uur vóór aanvang05:45

De oplossing: een kleine wekker-app

Ik heb een Android-app gemaakt die de functie van de gewone wekker vervult, maar het wanneer zelf bepaalt. Elke dag om 12:00 kijkt de app in de EBS-Diensten-agenda wat er morgen op het programma staat, rondt de begintijd af op een heel kwartier en zet meteen de drie wekkers. Staat er morgen geen dienst in de agenda, dan worden er ook geen wekkers gezet.

Verder gedraagt de app zich als een gewone wekker:

  • Donkere wekker-UI met één kaart per wekker en een grote tijd — in de stijl van de systeemwekkers.
  • Aan/uit per wekker: wil ik een keer geen ‘Wally’, dan zet ik die even uit; de kachel dagelijkse check plant hem niet opnieuw in tot ik hem weer aanzet.
  • Eigen geluid per wekker, kiezen via Instellingen.
  • De wekker gaat volwaardig af — geluid, trillen, volledig scherm ook bovenop het vergrendelscherm — met snooze en ‘wekker uit’.
  • Na de 12:00-controle zie je in de melding precies welke wekkers er staan; even aantikken opent de app.

Hoe het onder de motorkap werkt

  • De agenda wordt opgehaald met een CalDAV REPORT-query naar de Nextcloud-agenda ebs_diensten (basic auth met een app-wachtwoord).
  • De begintijd wordt naar beneden afgerond op een heel kwartier; bij meerdere events geldt de vroegste aanvang.
  • De dagelijkse 12:00-check staat als een exact alarm (setExactAndAllowWhileIdle), zodat hij ook in de batterijbesparing op tijd loopt.
  • Na een herstart van de telefoon herstelt de app de wekkers en de dagelijkse controle automatisch.
  • De agenda zelf wordt al gevuld door een eigen scraper die het EBS-rooster synchroniseert met Nextcloud (dagelijks 17:05).

Openbaar op Forgejo

De code staat openbaar op mijn Forgejo, compleet met bouw-, installatie- en testinstructies:

https://git.eddydevink.nl/eddy/android-buschauffeurswekker

Het project is gebouwd met DeepSeek V4 Flash als ontwikkelondersteuning — net als een paar andere projecten op deze site (en deze column zelf). De wekker staat nu elke dag automatisch goed, zonder dat ik ’s avonds nog over mijn rooster hoef na te denken.