Een familie dashboard op mijn Raspberry Pi
Polteq Challenge bonus!
We zijn een gezin van vier personen. Twee volwassenen met allebei een full-time baan, en twee kinderen met hun eigen volle agenda. We hebben onze agenda’s digitaal (in Apple iCloud), maar het zou ook wel handig zijn als we in huis ergens de agenda kunnen bekijken. We hebben daarvoor een familie kalender, maar ja, daar moeten we dus handmatig de digitale agenda op overnemen. Dat gebeurt niet altijd, of niet goed, dus echt goed werkt dit niet.
Maar, een Raspberry Pi met wat extra’s is onze oplossing!
Een dashboard voor de familie
Als oplossing voor het delen en zichtbaar maken van informatie voor de hele familie wilde ik graag een scherm in de woonkamer hebben waarop we deze snel kunnen zien. Dit scherm moet niet te groot zijn, maar wel leesbaar. De informatie moet automatisch updaten.
Er zijn verschillende dashboard oplossingen voor een Raspberry Pi. Om te kijken welke oplossing het beste is heb ik de volgende requirements opgesteld:
- Installeerbaar/bruikbaar op een Raspberry Pi 3
- Bruikbaar in een scherm resolutie van 800x600 (de resolutie van mijn beoogde scherm)
- Integratie met iCloud agenda
- Integratie met Home Assistant (onze home automation solution)
- Liefst gratis (want het is niet iets wat we echt nodig hebben, en ik weet ook niet hoe veel we het gaan gebruiken)
Ik heb de volgende oplossingen in overweging genomen:
- DAKboard: Een makkelijke web oplossing. Open de site en je hebt een dashboard. Visueel ziet deze er goed uit, en hij is gemaakt precies voor wat ik er mee wil, een dashboard display. Integratie met iCloud is mogelijk, Home Assistant niet. Voor de uitgebreidere functies is wel een abonnement van $5 per maand vereist
- Dashing: Een simpele oplossing, maar deze wordt niet meer bijgehouden. Laatste commit is van vijf jaar geleden, dus deze valt bij voorbaat af.
- Magic Mirror2: Een oplossing voor een magische spiegel (een display achter een spiegel). Kan ook op een gewoon scherm worden gebruikt. Open source en met veel plugins. Gebruik van iCloud heeft wat werk nodig maar lijkt wel mogelijk te zijn. Voor Home Assistant zijn meerdere plugins beschikbaar. Zelf plugins schrijven lijkt te doen te zijn, er is documentatie en alle andere plugins zijn open source.
Uiteindelijk heb ik gekozen voor Magic Mirror, met name omdat deze zoveel plugins heeft (ik zie meteen nog veel uitbreidingen op de basis van een agenda en home automation) en gratis is. En stiekem ook omdat het net iets meer werk is dan een DAKboard oplossing.
De hardware
Ik had nog een Raspberry Pi 4, 4GB liggen. Ik ga deze gebruiken omdat ik deze Raspberry Pi ook gebruik als server en hier nog wat meer andere software op heb draaien. Dat maakt op zich niks uit, maar alle andere Raspberry Pi’s zijn hier of te zwak voor (Raspberry Pi Zero), of ze hebben een dedicated OS er op staan (zoals Home Assistant OS). Dus, een Raspberry Pi 4 met Raspberry OS.
Voor het scherm zijn er heel veel mogelijkheden, van een standaard HDMI scherm, tot losse schermen, tot eInk schermen. Je kunt kiezen voor een touch screen of een standaard scherm. Uiteindelijk heb ik gekozen voor het officiële Raspberry Pi 7” touch screen. Het is misschien niet het allerbest scherm voor die prijs, maar je weet wel zeker dat het werkt. Daarnaast zijn er ook vele verschillende cases voor te krijgen.
Als case heb ik gekozen voor een witte SmartiPi Touch Pro white. Deze case kan de Raspberry Pi, het touch screen, een ventilator en een camera bevatten, helemaal afgesloten. Hij is makkelijk op te hangen, heeft een stroomkabel extensie en doordat hij wit is valt hij beter weg tegen onze witte muur.
Nou had ik toevallig ook nog een oude Raspberry Pi camera liggen, dus die past dan ook meteen mooi in de case.
De basis
Voordat ik met de Magic Mirror installatie kan beginnen moest ik eerst de Raspberry Pi zelf installeren. Dit is iets wat ik al vaker heb gedaan (dit is mijn zevende), maar dit keer heb ik gedocumenteerd hoe ik dat heb gedaan. Ik heb de Raspberry Pi opgezet voor headless gebruik. Dat betekend dat je hem kunt gebruiken zonder scherm, toetsenbord of muis, en ik laat hem ook vanzelf connectie maken met mijn Wi-Fi, dan hoef ik er zelfs geen RJ-45 kabel in te steken.
Hoe zet je een Raspberry Pi op voor Headless gebruik? (Engels)
Daarnaast heb ik mijn terminal een beetje opgeleukt. Hiervoor heb ik de shell omgezet naar Zsh (Z shell) en Oh My Zsh geïnstalleerd om plugins en themes te kunnen gebruiken.
Hoe installeer je Oh My Zsh op een Raspberry Pi (Engels)
Omdat ik zo min mogelijk beheer wil doen op mijn Raspberry Pi, en ik in het verleden problemen heb gehad met een wegvallende Wi-Fi verbinding heb ik Watchdog geïnstalleerd en ingesteld om mijn Wi-Fi verbinding te monitoren en de Raspberry Pi te herstarten als deze wegvalt.
Hoe monitor je de Wi-Fi verbinding op een Raspberry Pi (Engels)
Scherm en case
Nadat ik de basis van de Raspberry Pi had opgezet heb ik het scherm en de SmartiPi case in elkaar gezet. Het was belangrijk om dit in een keer samen te doen, omdat de SmartiPi sommige schroefjes en kabels op een andere manier gebruikt dan standaard is bij het scherm. Gelukkig staan er duidelijke instructies over online, dus na een half uurtje voorzichtig werk had ik alles in elkaar, inclusief de oude camera en de meegeleverde fan.
1. Het werkt! Mijn nieuwe touch screen in de SmartiPi Touch Pro, met de Raspberry OS desktop
Magic Mirror
Nu dat de hardware allemaal goed werkt, is het tijd voor de software. Magic Mirror is niet moeilijk te installeren. Wil je weten hoe ik het heb aangepakt, dan kun je hier een (Engelstalige) post vinden. Daar beschrijf ik ook hoe je Magic Mirror automatisch kan laten opstarten als de Raspberry Pi start.
Settings & modules
De kracht van Magic Mirror zit in vele instellingen die je aan kunt passen en de modules die je kunt installeren.
Voor het aanpassen van de configuratie van Magic Mirror of een specifieke module maak ik gebruik van remote editing. Dit betekend dat ik een bestand op mijn Raspberry Pi met Visual Studio Code op mijn MacBook kan bewerken. Een stuk makkelijker dan in Nano. Hoe ik dat doe, kun je hier lezen.
Aan de instellingen heb ik niet super veel aangepast. Ik heb het IP adres van mijn MacBook toegevoegd zodat ik het dashboard ook in m’n browser daar kan weergeven. Ik heb de zoom aangepast naar 0.9 zodat het iets beter leesbaar is op het kleine scherm. Daarnaast even goed gekeken naar de taal en locale, beiden voor Nederland (nl en nl-NL).
Modules kun je managen met mmpm, echter omdat ik ook Apache op deze Raspberry Pi heb draaien werkt dit voor mij niet (mmpm wil graag Nginx installeren en gebruiken, maar die gebruikt dezelfde default poorten als Apache). Je hebt mmpm niet per sé nodig, ik doe mijn module management handmatig.
Daarna ben ik gaan spelen met de modules. Deze kun je hier vinden, gesorteerd per categorie.
Enkele modules die ik nu gebruik:
- MMM-Carousel zodat ik verschillende schermen kan maken waardoor je kunt bladeren met het touch screen.
- De standaard klok
- MMM-WeeklySchedule zodat ik ons vaste schema (school, opvang, thuis of kantoor werken) kan weergeven
- MMM-homeassistant-sensors zodat ik de status van enkele sensoren (de raam open/dicht sensoren) uit onze Home Assistant setup kan weergeven.
- De standaard weer module, met zowel het huidige weer als een voorspelling voor de komende dagen
- De standaard agenda module, die een paar van onze agenda’s weergeeft: de familie agenda, de agenda van de basisschool van m’n dochter en de standaard Nederlandse feestdagen.
- MMM-MyGarbage die op basis van een (zelfgemaakte) csv weergeeft welke afvalbak aan de beurt is.
Ik wil graag nog een plattegrond van ons huis maken en daarop de actuele Home Assistant sensoren weergeven (temperatuur, lucht vochtigheid, raam of deur open/dicht, lampen aan/uit). Daarnaast zou het mooi zijn als ik de API van m’n Ford kan aanspreken zodat je kunt zien hoeveel kilometer hij nog kan rijden, of hij op slot is en of hij onderhoud nodig heeft. Dat kan nu al via een mobiele app, maar moet ook mogelijk zijn via een API.
Ook zou ik iets willen doen met de camera, bijvoorbeeld dat als er iemand voor het scherm staat dat hij dan aan gaat.
Gebruik
2. In gebruik, het scherm in de SmartiPi case opgehangen, met Magic Mirror
We hebben het scherm naast de thermostaat opgehangen. Als het even niet gebruikt wordt gaat het scherm vanzelf uit, even aanraken en je kunt weer zien. Je kunt door links/rechts onder aan te raken naar de volgende of vorige pagina gaan. Het is een makkelijke manier om alle informatie overzichtelijk te hebben voor iedereen in ons huis.