ID.nl logo
Zo kun je programmeren in Python - Deel 4
© PXimport
Zekerheid & gemak

Zo kun je programmeren in Python - Deel 4

In de href="https://computertotaal.nl/artikelen/pc/zo-kun-je-programmeren-in-python-deel-3/" rel="noopener noreferrer" target="_blank">vorige les</a> gebruikten we in Python de functies input en print voor invoer en uitvoer. In deze les gaan we hiermee verder en bespreken we allerlei manieren om de uitvoer aan te passen. Omdat we vaak de elementen uit een lijst of dictionary op een speciale manier willen tonen, gaan we ook nog dieper in op hoe je door de elementen van een lijst of dictionary loopt.

In de vorige les gebruikte je de functie input om een getal aan de gebruiker te vragen en de functie print om uitvoer op het scherm te tonen. Die uitvoer bleef tot nu toe vrij elementair. Daarom bekijken we eerst allerlei mogelijkheden om de uitvoer aan te passen.

De uitvoer van print aanpassen

In de vorige les gebruikten we deze opdracht om een getal uit een dictionary op het scherm te tonen:

print(getallen[getal])

Maar wat als je meerdere objecten op dezelfde regel wilt tonen? Dat kan eenvoudig door meerdere objecten aan de functie print door te geven, gescheiden door een komma. Verander bijvoorbeeld de laatste regel in het laatste programma van vorige les door:

>>> print(getal, "is gelijk aan", getallen[getal])
1 is gelijk aan één

Alle objecten die je aan print doorgeeft, worden gescheiden door een spatie getoond.

Na de objecten die je aan de functie print doorgeeft, kun je nog argumenten toevoegen die de uitvoer van print veranderen, namelijk sep en end. Met sep (afkorting van separator) verander je de spatie tussen objecten door een andere afscheiding, en met end vervang je het einde van de uitvoer (standaard ‘\n’ waarmee je een newline of een nieuwe regel aanduidt) door iets anders. Bijvoorbeeld:

>>> print(getal, getallen[getal], sep = ': ', end = '\n\n')
1: één
>>>

Door aan het argument end twee newlines toe te kennen, komt er een lege regel na de uitvoer.

Plaatshouders

Als je meerdere objecten in één uitvoer met print wilt opnemen en/of complexere zaken aan de uitvoer wilt veranderen, komt de functie format van pas. In de eenvoudigste vorm pas je die functie toe op een string waarin je met {} plaats vrijhoudt. Het argument dat je aan de functie doorgeeft, komt op de plaats van die {}:

>>> 'Je hebt {} gekozen.'.format(1)
'Je hebt 1 gekozen.'

Dat werkt ook met meerdere plaatshouders:

>>> 'Je hebt {} gekozen tussen de getallen {} en {}.'.format(2, 1, 10)
'Je hebt 2 gekozen tussen de getallen 1 en 10.'

Je kunt de plaatshouders ook een volgnummer geven, zodat ze in een andere volgorde in de uitvoer komen dan de argumenten die je aan format doorgeeft:

>>> '{1} <= {0} <= {2}'.format(2, 1, 10)
'1 <= 2 <= 10'

Maar vaak is het duidelijker als je de argumenten een naam geeft en die namen ook in de plaatshouders gebruikt:

>>> '{min} <= {getal} <= {max}'.format(min=1, max=10, getal=2)
'1 <= 2 <= 10'

Door een lijst lopen met for

Vaak wil je niet één regel uitvoer tonen met print, maar meerdere, bijvoorbeeld voor alle elementen in een lijst of dictionary. We hebben dus een manier nodig om al die elementen af te gaan. Dat kan met een for-lus, zoals in het volgende programma:

namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']
for naam in namen:
print(naam)

Python gaat elk element uit de lijst met namen af en toont dit element met print. Als je zowel de index als de inhoud van elk element wilt tonen, maak je gebruik van de handige functie enumerate:

namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']

for index, naam in enumerate(namen):
print('{}: {}'.format(index, naam))

Door een dictionary lopen met for

We kunnen met een for-lus ook door alle elementen van een dictionary lopen. Afhankelijk van waarin je juist geïnteresseerd bent, kan dat op drie manieren. We tonen in het volgende programma achtereenvolgens hoe je door alleen de sleutels gaat, door alleen de waardes en door de sleutels met hun bijbehorende waardes:

scores = {'lies': 6231, 'bas': 2, 'kees': 18, 'mireille': 482, 'aniek': 35, 'bert': 184}

print('Spelers')
for speler in scores:
print(speler)

print()

print('Scores')
for score in scores.values():
print(score)

print()

print('Spelers met score')
for speler, score in scores.items():
print('{}: {}'.format(speler, score))

De sleutels van een dictionary kun je ook opvragen met de functie keys, maar dat is hier niet nodig. Bijvoorbeeld:

scores.keys()

Tupels

In de for-lus waarmee we zowel de index als de waarde van alle elementen van een lijst doorlopen en de for-lus waarmee we zowel de sleutel als de waarde van alle elementen van een dictionary doorlopen zie je dat we twee elementen tegelijk na de for zetten: index, naam respectievelijk speler, score. Twee elementen met een komma ertussen vormen een speciaal datatype in Python: een tupel (tuple). Je kunt ook variabelen van het type tuple aanmaken, maar dat heb je normaal niet vaak nodig.

List comprehension

For-lussen zijn handig, maar voor complexere bewerkingen wat omslachtig. Stel dat we de lengte van de langste naam uit een lijst willen berekenen. Met een for-lus kunnen we dat als volgt doen:

namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']

max_lengte = 0

for naam in namen:
lengte = len(naam)
if lengte > max_lengte:
max_lengte = lengte

print(max_lengte)

Dit werkt en is vrij duidelijk, maar het kan beter. Voor dit soort bewerkingen heeft Python een handig concept: list comprehension. Daarmee kunnen we de hele voorgaande berekening vervangen door één regel:

namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']

print(max([len(naam) for naam in namen]))

Deze regel zegt: voor elke naam in de lijst met namen bereken je de lengte van de naam, en daarvan bereken je het maximum. Het stuk [len(naam) for naam in namen] is een beknopte manier waarmee we een lijst aanmaken van de lengtes van alle elementen in de lijst namen.

Tekst uitlijnen en opvullen

Dan gaan we nu even terug naar de functie format. Daarmee kunnen we tekst uitlijnen, zowel links, rechts als gecentreerd, en lege ruimte opvullen met willekeurige tekens. Een voorbeeld:

>>> '{:=^15}'.format('Titel')
'=====Titel====='

En met iets als:

print('{naam:<6} : {score:0>6}'.format(naam='kees', score=3))

krijgen we als uitvoer:

kees : 000003

Met ^ centreren we tekst, met < lijnen we tekst links uit en met > lijnen we tekst rechts uit. Na het uitlijningsteken komt het totaal aantal tekens dat de tekst maximum mag innemen. Vóór het uitlijningsteken kan nog optioneel een teken komen waarmee we lege ruimte opvullen. En als we de argumenten van format een naam geven, komt die naam vóór de dubbele punt.

Samenvatting

In deze les hebben we allerlei manieren gezien om de uitvoer van print aan te passen, zoals tekst uitlijnen en lege ruimte opvullen. We hebben ook gezien hoe je door de elementen van een lijst of dictionary loopt, zodat je die een voor een kunt tonen. Verder zijn we ook op list comprehension ingegaan, een krachtige manier om zonder lus berekeningen uit te voeren op alle elementen in een lijst of dictionary. In de volgende les gaan we het weer over invoer en uitvoer hebben, maar dan met bestanden. Bovendien kijken we ook hoe je foutmeldingen in je programma afvangt.

Opdracht 1

Neem de volgende dictionary met scores: scores = {'lies': 6231, 'bas': 2, 'kees': 18, 'mireille': 482, 'aniek': 35, 'bert': 184} Gebruik list comprehension om een lijst met tupels aan te maken waarvan elk tupel bestaat uit de naam met een hoofdletter en de score gedeeld door 100.

Uitwerking

>>> scores = {'lies': 6231, 'bas': 2, 'kees': 18, 'mireille': 482, 'aniek': 35, 'bert': 184}>>> [(speler.capitalize(), score/100) for (speler, score) in scores.items()][('Lies', 62.31), ('Bas', 0.02), ('Kees', 0.18), ('Mireille', 4.82), ('Aniek', 0.35), ('Bert', 1.84)] Met scores.items() krijgen we een lijst van tupels terug van de sleutels en waardes van de dictionary. Met list comprehension passen we in elk van deze tupels de sleutel en waarde zoals gevraagd aan.

Opdracht 2

Neem de volgende dictionary met scores: scores = {'lies': 6231, 'bas': 2, 'kees': 18, 'mireille': 482, 'aniek': 35, 'bert': 184} Met alle kennis uit deze les kun je deze personen en hun scores in een tabel tonen, met als linkerkolom de namen en als rechterkolom de bijbehorende scores. De namen moeten links uitgelijnd zijn en de scores rechts met nullen vooraan. Je code moet met namen en scores van willekeurige lengte kunnen werken.

Uitwerking

scores = {'lies': 6231, 'bas': 2, 'kees': 18, 'mireille': 482, 'aniek': 35, 'bert': 184} max_naam = max([len(naam) for naam in scores]) max_getal = max([len(str(score)) for score in scores.values()]) for speler, score in scores.items(): print('{speler:<{speler_breedte}}{score:0>{score_breedte}}'.format(speler=speler, speler_breedte=max_naam+3, score=score, score_breedte=max_getal)) Dit is een heel compact programma waarin alle kennis tot nu toe en van deze les bij elkaar komt. We berekenen eerst de maximumlengte van een naam door list comprehension toe te passen op de sleutels van de dictionary met scores. Daarna doen we hetzelfde voor de maximumlengte die we nodig hebben om de scores weer te geven. Daarna lopen we door alle spelers en bijbehorende scores. We geven aan de functie format als argumenten de speler, de maximumlengte van de spelersnaam (waarbij we 3 optellen om de kolommen van elkaar te scheiden), de score en de maximumlengte van de score door. In de plaatshouder voor de speler geven we met < aan dat de naam van de speler links wordt uitgelijnd, en met {speler_breedte} daarna geven we aan hoeveel tekens lang de uitlijning dient te zijn. Daarna doen we hetzelfde voor de score, maar daar lijnen we rechts uit en vullen we de cijfers aan met nullen vooraan. Merk op dat alles in onze code wat begint met print op één lange regel komt.

Cheatsheet

for: een lus die voor alle elementen in een lijst of dictionary uitgevoerd wordt. list comprehension: een beknopte manier om een lijst aan te maken. newline: het teken \n waarmee je een nieuwe regel aanduidt. tupel: een reeks objecten met een komma ertussen.

▼ Volgende artikel
Maak kennis met Grocy: de slimme huishoudmanager
© Odua Images
Huis

Maak kennis met Grocy: de slimme huishoudmanager

Vergeet je voldoende voorraden in te slaan in huis? Vind je te vaak voedsel in de koelkast waarvan de houdbaarheid verstreken is? Heb je moeite om huishoudelijke taken te plannen? Met Grocy heb je een oplossing om je huishouden te beheren. Het programma is gratis, webgebaseerd en eenvoudig op je eigen thuisserver te installeren.

In dit artikel laten we zien hoe je met Grocy je huishouden kunt organiseren en digitaliseren:

  • Installeer Grocy op je eigen server via Docker
  • Geef je voorraadlocaties en hoeveelheden aan
  • Houd bij wat je inkoopt, verbruikt en wanneer iets verloopt
  • Voeg recepten toe en plan maaltijden op basis van je voorraad
  • Stel automatische boodschappenlijsten samen
  • Plan huishoudelijke klusjes en stel herinneringen in

Ook handig: Druk huishouden? Deze apps weten er wel raad mee

Code downloaden

In dit artikel staat een voorbeeld van wat YAML-code. Omdat YAML erg gevoelig is voor foute spaties, kun je die code beter downloaden en daarna bekijken of kopiëren. Zie het bestand grocycode.txt.

Bedrijven beheren hun voorraden en taken doorgaans met ERP-software (Enterprise Resource Planning) om alles in goede banen te leiden. In de meeste huishoudens gebeurt dit ad hoc of met de hulp van een boodschappen-app. Maar toch kan het nuttig zijn om specifieke software te gebruiken om je huishoudelijke voorraden en taken te optimaliseren.

Een van die oplossingen is Grocy, dat op de website wordt omschreven als ‘ERP beyond your fridge’. De naam Grocy verwijst naar groceries (Engels voor boodschappen), en de focus ligt op het beheer van je boodschappen en voorraden in je koelkast en andere plaatsen in huis. Maar het gaat verder: je kunt er ook je huishoudelijke taken mee inplannen en handleidingen van huishoudelijke apparaten bij de hand houden.

1 Grocy installeren

Grocy installeer je op je eigen server. Hoewel er ook een Windows-desktopprogramma voor bestaat (Grocy Desktop) is het voordeel van de serverversie dat je er toegang tot hebt vanaf al je apparaten, ook je tablet of smartphone. Dat is handig wanneer je in huis met taken bezig bent en even snel op je mobiele apparaat iets wilt opzoeken of aanpassen. Grocy heeft ook een mobiele app die met je eigen server verbindt.

Het team van LinuxServer.io biedt een Docker-image aan om Grocy op je server te draaien.

Maak op je Linux-server een bestand compose.yml aan met de volgende inhoud:

---
services:
  grocy:
    image: lscr.io/linuxserver/grocy:latest
    container_name: grocy
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Amsterdam
    volumes:
      - /path/to/grocy/config:/config
    ports:
      - 9283:80
    restart: unless-stopped

Wijzig /path/to/grocy/config naar het pad op je Linux-server waar je de data van Grocy wilt plaatsen. Voer dan in dezelfde directory als waarin je het bestand compose.yml hebt opgeslagen dit commando uit:

docker compose up -d

Dat downloadt het image en start de container.

Op de website vind je ook een live-demo.

2 Aanmelden en instellingen

Surf nu naar http://ip-adres:9283, waarbij je in plaats van ip-adres het werkelijke interne ip-adres van je Linux-server gebruikt. In het aanmeldvenster log je in met gebruikersnaam admin en wachtwoord admin. Daarna krijg je een Stock overview met 0 producten te zien, maar het is aanbevolen om eerst het standaardwachtwoord te wijzigen. Doe dat door bovenaan rechts op de gebruikersnaam admin te klikken en dan Change password.

Je kunt daarna meerdere gebruikers aanmaken voor alle gezinsleden, die je elk specifieke rechten kunt geven. Het is ook nuttig om voor verschillende apparaten verschillende gebruikers aan te maken. Je kunt immers per gebruiker enkele instellingen aanpassen in het menu dat onder het icoontje naast de gebruikersnaam opent. Stel bijvoorbeeld bij een gebruiker voor een tablet in de keuken in dat het scherm aanblijft, zodat de tablet niet in slaapmodus gaat terwijl je je handen vol hebt. Overigens kun je de taal naar Nederlands wijzigen via het icoontje van de moersleutel rechtsboven en dan User settings te kiezen.

Indien gewenst stel je Grocy voor individuele gebruikers specifieke rechten in.

3 Locaties en hoeveelheidseenheden

Voordat je de virtuele voorraad kunt vullen, is het nodig om een aantal basisgegevens in te vullen. Klik hiervoor links op Beheer masterdata. Maar voordat je producten kunt aanmaken, dien je eerst locaties en hoeveelheidseenheden te definiëren. Locaties zijn fysieke locaties in je huis. Dat kunnen kamers zijn (keuken, berging, kelder), maar je kunt het zo specifiek maken als je wilt, bijvoorbeeld voorraadkast, snoepkast of theehoekje. Het is aanbevolen om sowieso locaties aan te maken voor je koelkast en diepvries, omdat de houdbaarheid van producten die hier in- en uitgaan speciale aandacht vereist. Klik dus links op Locaties en dan bovenaan op Toevoegen. Maak zo een voor een de benodigde locaties aan. Vink zeker Is diepvries aan bij je diepvries.

Bij Hoeveelheidseenheden vul je alle eenheden van hoeveelheden in voor producten die je koopt. Denk daarbij aan een fles, pak, blik, brik, stuk, sneetje, milliliter, gram enzovoort. Het is mogelijk om pas naar gelang je producten toevoegt hier eenheden te definiëren, maar maak alvast enkele algemene aan.

Je kunt ook Productcategorieën aanmaken. Dit is niet strikt noodzakelijk, maar door producten aan categorieën toe te kennen, heb je bijvoorbeeld altijd een overzicht van wat je op het gebied van fruit, snoep, deegwaren enzovoort in huis hebt. Ook Winkels zijn optioneel. Je kunt hiermee de prijsgeschiedenis van producten in verschillende winkels volgen.

Definieer in Grocy de locaties waar je producten bijhoudt.

4 Producten definiëren

Om een product te definiëren, klik je links, nog altijd onder Beheer masterdata, op Producten en dan bovenaan op Toevoegen. Je ziet nu een heleboel velden om in te vullen, waarvan de meeste optioneel zijn; de verplichte velden zijn rood-omkaderd. Voor iets eenvoudigs als een wc-rol hoef je alleen maar de naam in te voeren, de standaardlocatie en de eenheden voor de voorraad, aankoop, verbruik en voor prijzen. Die drie laatste zijn standaard hetzelfde als de eenheid voor de voorraad. Je kunt ook een afbeelding uploaden.

Van de optionele velden is Minimale voorraadhoeveelheid heel handig. Hierin voer je in hoeveel je altijd van het product in huis wilt hebben, gerekend in de voorraadeenheid. Als je voorraad onder dit aantal komt, toont Grocy het product in een andere achtergrondkleur in je voorraad. Klik tot slot op Opslaan en doorgaan, waarna je optioneel een streepjescode voor het product kunt toevoegen en specifieke conversies van hoeveelheden, zoals hoeveel gram per pak. Klik daarna op Opslaan en terugkeren naar producten.

Een product heeft diverse mogelijke eigenschappen.

5 Producten aankopen en verbruiken

Zodra een product aan de masterdata is toegevoegd, kun je aankopen van dit product hier registreren. Klik links op Aankoop (ditmaal niet meer onder Beheer masterdata), kies het product of klik op het icoontje om de streepjescode te scannen. Vul de hoeveelheid en de eenheid in en eventueel een vervaldatum. Gaat het om een product zonder vervaldatum, vink dan Verloopt nooit aan. Als je het product daarna op meerdere locaties wilt opslaan, kun je een deel van je voorraad verplaatsen door links op Overdragen te klikken.

Een product verbruiken doe je door links op Verbruiken te klikken. Je kiest het product en eventueel de locatie waaruit je het verbruikt. Daarna klik je op OK om het uit de voorraad te halen of Markeer als geopend om het te openen. Het zit dan nog altijd in je voorraad, maar voor producten met een houdbaarheid na opening begint de termijn nu te tellen. Je kunt ook aangeven dat je het product uit je voorraad haalt omdat het bedorven is of een specifiek voorraaditem selecteren wanneer je er enkele met meerdere vervaldatums hebt, of geopende en nog niet geopende.

Wanneer je een product verbruikt, past Grocy je voorraad aan.

6 Minder verspilling

Als je van al je voeding, cosmetica en andere producten met houdbaarheidsdatum de juiste gegevens bijhoudt in Grocy, krijg je in de voorraad altijd duidelijk te zien welke producten over datum zijn en welke binnen vijf dagen verlopen. Zo kun je op tijd die producten gebruiken zodat je ze niet hoeft weg te gooien.

Ook de producten die te weinig in voorraad zijn, krijgen een andere achtergrondkleur in de voorraad, zodat je ziet welke producten je moet aanvullen. In Boodschappenlijst kun je zelfs met één klik op een knop al die producten aan je boodschappenlijstje toevoegen, en met andere knoppen de producten die over datum zijn. Je kunt ook handmatig nog andere producten aan je boodschappenlijstje toevoegen.

Alle producten worden overigens per productcategorie getoond voor wat meer overzicht. Doe je uiteindelijk je boodschappen, dan kun je de aangekochte producten onmiddellijk in het lijstje afvinken om ze aan je voorraad toe te voegen.

Je voorraad geeft je een onmiddellijk overzicht van wat je eerst moet verbruiken en aankopen.

7 Gerelateerde producten

Wanneer je een product aanmaakt, kun je dit ook linken aan een ‘parent product’. Dat is handig als je bijvoorbeeld verschillende soorten, merken of hoeveelheidsverpakkingen van een product hebt die elk een eigen barcode hebben, terwijl het voor je voorraad of recepten niet uitmaakt welk van die producten je kiest. Stel dat je altijd drie repen chocola in je voorraad wilt hebben, maar het niet uitmaakt of het pure chocolade of melkchocolade is, dan kies je bij die twee laatste de chocolade als ‘parent product’.

Of stel dat je soms een pak van zes eieren koopt en soms een pak van twaalf. Dan definieer je een product ei, en twee producten 6 eieren en 12 eieren die naar het product ei verwijzen als ‘parent product’. Als voorraadeenheid neem je bij die twee laatste stuk, want je slaat eieren per stuk op. Als aankoopeenheid neem je echter doos, want je koopt die producten per doos.

Als je dit product opslaat, kun je onder de streepjescode ook hoeveelheidseenheid-conversies instellen voor dit product, waarin je dan instelt dat een doos uit zes stuks bestaat. En als je dan bij ei hebt gedefinieerd dat je altijd zes eieren wilt hebben en dan een doos van twaalf koopt en er zeven uit verbruikt, wordt er in je voorraad getoond dat je nog vijf eieren hebt en je de voorraad moet aanvullen.

Definieer een doos eieren met verwijzing naar het product ‘ei’.

8 Recepten

Het is ook mogelijk om recepten aan Grocy toe te voegen. Je geeft het recept een naam en vult het aantal porties in. Beschrijf de bereiding in het tekstveld en klik dan op Opslaan en doorgaan. Voeg daarna één voor één de benodigde ingrediënten toe.

Zodra je dit recept hebt opgeslagen, komt het in de lijst van recepten terecht, waarbij direct getoond wordt voor welke recepten je alle ingrediënten op voorraad hebt of welke recepten je het best binnenkort maakt om producten die bijna over de datum zijn te gebruiken.

Voor elk recept kun je ook het gewenst aantal porties aanpassen. Grocy rekent alle benodigde ingrediënten dan om. Als je bij de onderliggende producten de prijs en het aantal calorieën hebt ingevuld, krijg je hier te zien hoeveel het kost om dit recept te bereiden en hoeveel calorieën je ermee binnenkrijgt. Ontbrekende ingrediënten voeg je overigens eenvoudig toe aan je boodschappenlijstje met een klik op het winkelwagentje bovenaan. En links onder Maaltijdplan kun je recepten op een specifieke dag inplannen.

Link producten uit je voorraad aan de ingrediëntenlijst van je recept.

9 Klusjes

Een ander menu-onderdeel is Klusjes, waarmee je periodieke klusjes kunt inplannen en aan leden van je huishouden kunt toekennen. Je definieert eerst je klusjes onder Beheer masterdata. Voeg een klusje toe, geef het een naam, en kies de frequentie en startdatum. Je kunt ook instellen aan welke gebruiker het klusje toegewezen wordt, en zelfs welk product je bij het uitvoeren van het klusje verbruikt en in welke hoeveelheid. Dat is handig bijvoorbeeld als je bij het inruimen van de vaatwasmachine telkens een vaatwastablet verbruikt.

Als je daarna links op Klusjes klikt (deze keer niet onder Beheer masterdata), dan krijg je alle klusjes te zien die er moeten gebeuren en voor elk klusje wanneer het moet worden uitgevoerd, de laatste keer dat het is gebeurd en aan wie het is toegewezen.

Een gekleurde achtergrond wijst erop met welke klusjes je te laat bent, welke er vandaag moeten gebeuren en welke er binnen de vijf dagen moeten worden gedaan. Wanneer je een klusje hebt gedaan, klik je op het groene icoontje om het als gedaan te markeren of op het grijze icoontje om het deze keer over te slaan. Met een klik op de drie puntjes kun je ook een klusje op een andere datum opnieuw inplannen of een klusjesdagboek bekijken.

Behoud het overzicht over je huishoudelijke klusjes dankzij Grocy.

10 Taken

Zaken die je eenmalig of slechts sporadisch hoeft te doen, kun je in het onderdeel Taken definiëren en opvolgen. Om het overzicht te bewaren, definieer je alvast wat categorieën van taken in Beheer masterdata / Taakcategorieën. Denk daarbij aan categorieën zoals Tuin, Huis, Hobby enzovoort.

Daarna maak je onder Taken een nieuwe taak met een klik op Toevoegen. Je geeft de taak een naam, een uiterste datum, optioneel een categorie en finaal ook een gebruiker waaraan je de taak toewijst.

Wanneer je op deze manier taken hebt toegevoegd, krijg je onder Taken een overzicht, waarbij de taken worden gesorteerd op de uiterlijke datum waarop ze moeten worden uitgevoerd. Taken die je al had moeten uitvoeren, krijgen een rode achtergrond, taken die voor vandaag zijn gepland blauw en de taken die je de komende vijf dagen moet uitvoeren geel.

Je kunt filteren op categorie en status, en zoeken op een term wanneer je veel taken in je lijstje hebt. Heb je een taak uitgevoerd, dan vink je die gewoon af.

Vergeet nooit meer taken dankzij het overzicht van Grocy.

11 Batterijen en kalender

Ook je oplaadbare batterijen kun je in Grocy onderbrengen. Definieer een batterij onder Beheer masterdata / Batterijen, geef ze een naam, omschrijving en beschrijf in welk apparaat je ze gebruikt. Voer dan in om de hoeveel dagen je die batterij moet opladen.

Daarna krijg je onder Batterijen (deze keer niet onder Beheer masterdata) te zien wanneer je batterijen het laatst geladen zijn en wanneer de volgende laadcyclus is gepland. Net zoals bij de taken en dergelijke krijg je hier ook met een gekleurde achtergrond de status van het laden van de batterijen te zien. En laad je een batterij op, dan klik je hier eenvoudig op het groene knopje ervoor om de status aan te passen.

Uiteindelijk komen alle gebeurtenissen samen in de kalender. Daar zie je in één oogopslag welke taken je dient uit te voeren, wanneer je klusjes zijn ingepland, wanneer producten vervallen, wanneer je welke maaltijden hebt gepland en wanneer je batterijen weer zou moeten opladen.

Met een klik op de gebeurtenis in de kalender ga je door naar de desbetreffende Grocy-pagina. Je kunt deze kalender ook delen door middel van een url in iCal-formaat, maar dan moet je wel zorgen dat de gebruiker of het programma waarmee je dit deelt toegang tot je Grocy-installatie heeft zonder authenticatie.

Grocy verzamelt al je taken, klusjes, vervaldata, maaltijden en batterijlaadbeurten in één kalender.

12 Apparaten en meer

Een laatste functionaliteit die Grocy aanbiedt, vind je onder Apparaten. Hier voeg je een apparaat toe waar je notities bij maakt en een gebruikershandleiding uploadt. Zo heb je altijd de handleidingen van al je apparaten bij de hand. Het pdf-document wordt in de webinterface van Grocy getoond.

Verder is Grocy ook uitgebreid aan te passen. Zo kun je aan elke entiteit (zoals een product of een klusje) eigen velden toevoegen, voor als je extra informatie wilt bijhouden. Dat doe je in Beheer masterdata / Gebruikersvelden. Je kunt zelfs volledig nieuwe objecten definiëren in Beheer masterdata / Gebruikersentiteit. Al met al is Grocy dus een krachtig en flexibel hulpmiddel om je huishouden te optimaliseren.

Houd de handleidingen van al je apparaten bij op één plaats.

▼ Volgende artikel
Review Samsung Galaxy S25 Edge - Dunste smartphone met dikke prijs
© Rens Blom
Huis

Review Samsung Galaxy S25 Edge - Dunste smartphone met dikke prijs

De Samsung Galaxy S25 Edge is een opvallend dunne en lichte smartphone, maar wel een met een groot scherm. Met name jongere vrouwen zien zo'n type toestel wel zitten, stelt Samsung. Is de S25 Edge daadwerkelijk een goede keuze? Je leest het in deze review.

Uitstekend
Conclusie

We hebben de Samsung Galaxy S25 Edge met veel plezier gebruikt, op de kortere accuduur na. En dat vinden we toch wel een heel belangrijk punt in een smartphone. Zeker in een dure smartphone. De prijs vormt bovendien ons tweede struikelblok. De S25 Edge heeft een adviesprijs van 1249 euro, terwijl je de S25 Plus inmiddels al voor zo'n 900 euro hebt. Die telefoon biedt een betere accuduur in ruil voor een wat dikkere en zwaardere behuizing, en lijkt verder sprekend op de S25 Edge. Wij adviseren de meeste mensen daarom de S25 Plus, al willen we dat advies wat afzwakken als de S25 Edge sterk in prijs daalt. De kortere accuduur is echter een blijvend aandachtspunt.

Plus- en minpunten
  • Heel dun en licht
  • Compleet in functies
  • Zeven jaar updates
  • Kortere accuduur
  • Erg hoge adviesprijs

Als je de S25 overweegt, is het goed om te weten dat deze smartphone onderdeel uitmaakt van de S25-serie. Die is begin 2025 uitgebracht en bestaat uit de S25, S25 Plus en S25 Ultra. De prijzen van deze toestellen lopen ook in deze volgorde op. De S25 Edge debuteert eind mei voor een adviesprijs van 1249 euro, waarmee hij zich qua prijs tussen de S25 Plus en S25 Ultra nestelt. Een stevige prijs voor een dunne telefoon dus. 

©Rens Blom

Bijzonder slank ontwerp

Want dun, dat is de S25 Edge zeker. Hij meet slechts 5,8 millimeter, exclusief de camerabalk die wat extra uitsteekt. De geringe dikte zie je bijvoorbeeld terug bij de usb-c-poort, waar nauwelijks een rand omheen zit.

©Rens Blom

Ook in je hand voel je dat de S25 Edge dunner is dan andere smartphones. Maakt dat iets uit? Mwah, de een zal het cool vinden, terwijl de ander er een hoesje omheen doet en daarna weinig aandacht heeft voor de dikte van het toestel. Hieronder zie je de S25 Edge onder een Apple iPhone 16. Ja, de Samsung-telefoon is dunner, maar niet zó dun dat de iPhone oogt als een koelkast.

©Rens Blom

Wat je sowieso merkt, is het gewicht. De smartphone weegt 163 gram, en dat is echt weinig voor een telefoon met een 6,7-inch scherm. Het verschil met andere toestellen bedraagt enkele tientallen grammen, waardoor de S25 Edge comfortabeler in de hand ligt en minder aanwezig is in je broekzak. Minder comfortabel is typen op de S25 Edge als hij bijvoorbeeld op tafel ligt. Het toestel wiebelt dan nogal omdat het camera-eiland achterop duidelijk uitsteekt.

©Rens Blom

Het camera-eiland van de S25 Edge steekt duidelijk uit.

Volgens Samsung is de S25 Edge ondanks zijn dunne en lichte behuizing heel stevig – stevig genoeg om het toestel in de achterzak van je spijkerbroek te laten als je gaat zitten. Wij hebben ons inderdaad geen zorgen gemaakt om de degelijkheid, maar zeggen erbij dat we er ook niet op uit zijn geweest om de smartphone te beschadigen.

Een prettige zekerheid is de IP68-certificatie, die duidelijk maakt dat de telefoon tegen stof en water kan. De andere S25-modellen hebben ook een IP68-certicering. Draadloos opladen kan de S25 Edge ook, met maximaal 15 watt. Dat is niet heel rap, maar prima voor wie zijn toestel bijvoorbeeld 's nachts oplaadt.

Kortere accuduur

Over opladen gesproken: dat moet de S25 Edge waarschijnlijk elke nacht. Om de smartphone zo licht en dun te krijgen, is er gekozen voor een kleine accu van 3900 mAh. Ter vergelijking: veel smartphones met een even groot scherm hebben een 5000 tot 5500 mAh-accu. De accu in Samsungs Galaxy S25 Plus moet het doen met 4900 mAh. Het is dan ook niet vreemd dat de S25 Edge minder lang meegaat op een acculading en geen fantastische accuduur biedt. Jammer, maar het valt ons eerlijk gezegd nog mee. We kunnen de telefoon normaal gesproken met wat aandacht tot het slapengaan gebruiken. Op drukke dagen lukt dat zeker niet en is een powerbank of oplader al vóór het avondeten nodig.

Opladen via de usb-c-kabel kan met maximaal 25 watt, en dat is niet zo snel. Maar doordat de accu aan de kleine kant is, is de accu toch lekker snel vol. Niettemin kunnen veel concurrerende smartphones een stuk sneller opladen.

©Rens Blom

Specificaties

De overige specificaties van de S25 Edge weten echter wel te overtuigen en passen meer bij de hoge prijs van 1249 euro. We noemen een vliegensvlugge Qualcomm Snapdragon 8 Elite-processor met 12 GB werkgeheugen, minimaal 256 GB opslagcapaciteit en zeven jaar software-updates. Deze specificaties heeft de Edge-versie overgenomen van zijn S25-broers.

©Rens Blom

Het scherm lijkt geleend van de S25 Plus en is van uitstekende kwaliteit: kleurrijk, lekker fel als het moet en soepel ogend dankzij de 120Hz-verversingssnelheid. 

Interessant zijn de camera's. Dat zijn er slechts twee: een hoofdcamera en een groothoekcamera. Een zoomcamera, zoals aanwezig in de andere S25-modellen, is weggelaten om de Edge-versie zo dun te maken. Zoomen doet de Edge daarom via de hoofdcamera door een uitsnede te maken van een – let op – 200 megapixel-foto. Een prima methode, al is de echte smartphonefotograaf beter af met een toestel met een losstaande, geavanceerde zoomcamera.

Onderstaande serie foto's toont van boven naar beneden de hoofdcamera, de groothoekcamera en de zoommodus.

©Rens Blom

Conclusie: Samsung Galaxy S25 Edge kopen?

Al met al hebben we de Samsung Galaxy S25 Edge met veel plezier gebruikt, op de kortere accuduur na. En dat vinden we toch wel een heel belangrijk punt in een smartphone – zeker in een dure smartphone. De prijs vormt bovendien ons tweede struikelblok. De S25 Edge heeft een adviesprijs van 1249 euro, terwijl je de S25 Plus inmiddels al hebt voor zo'n 900 euro. Die telefoon biedt een betere accuduur in ruil voor een wat dikkere en zwaardere behuizing, en lijkt verder sprekend op de S25 Edge. Wij adviseren de meeste mensen daarom de S25 Plus, al willen we dat advies wat afzwakken als de S25 Edge sterk in prijs daalt. De kortere accuduur is echter een blijvend aandachtspunt.