
In de woonkamer hangt bij mij een Lenovo Tab M9 aan de muur. Het is het bedieningspaneel van het huis: in één oogopslag de agenda, het weer, de afvalkalender en hoe vol de thuisbatterij is. Doet niemand iets, dan wordt het een fotolijst met de klok en de belangrijkste meldingen. En met één knop opent de app van het alarmsysteem.
In deze blog laat ik zien hoe ik het heb ingericht: de apps, het dashboard, de screensaver en de automations eromheen.
Wat je nodig hebt
| Onderdeel | Waarvoor |
|---|---|
| Android-tablet | Het scherm. Bij mij een Lenovo Tab M9 |
| Fully Kiosk Browser met PLUS-licentie | Toont het dashboard scherm vullend en laat Home Assistant de tablet bedienen |
| Integratie Fully Kiosk Browser | Schermknop, helderheid, huidige pagina, accu en apps starten vanuit Home Assistant |
| WallPanel (HACS) | De fotoscreensaver met klok en informatie, en verbergt de kopbalk en zijbalk |
| Kiosk Mode (HACS) | Verbergt de zoekknop en de Assist-knop van Home Assistant |
| Een slimme stekker of schakelaar | Zet de lader aan en uit, zodat de accu niet altijd vol zit. Bij mij een Shelly |
Fully Kiosk Browser
Fully Kiosk Browser is een browser voor Android die maar één ding doet: scherm vullend één website tonen. Gebruikers kunnen er niet uit, en Home Assistant kan hem op afstand bedienen. Zet in Fully Kiosk Remote Administration aan en voeg daarna de integratie toe in Home Assistant. Je krijgt dan onder meer:
- een schakelaar voor het scherm en voor de kioskvergrendeling;
- een instelling voor de schermhelderheid;
- sensoren voor de accu, de huidige pagina en de app die op de voorgrond staat;
- de acties
fully_kiosk.load_urlenfully_kiosk.start_application.
Die laatste twee gebruik ik het meest: de tablet altijd terug naar het dashboard sturen, en een andere app openen.
Voor de meeste functies in deze blog heb je een PLUS-licentie van Fully Kiosk nodig, zoals Remote Administration en de kioskmodus. Die kost eenmalig een paar euro per apparaat.
De tablet inschrijven als Device Owner
Bij mij is Fully Kiosk ingeschreven als Device Owner van de tablet. Dan is Fully Kiosk de beheerder van het apparaat, en dat geeft een paar extra mogelijkheden die je in een gewone installatie niet hebt:
- Apps stil beheren. Fully Kiosk kan apps installeren, bijwerken en verwijderen zonder dat iemand op de tablet iets hoeft te bevestigen. Ook de Android-rechten die Fully Kiosk nodig heeft, krijgt hij vanzelf.
- Op afstand herstarten. Met de knop Restart device in Home Assistant herstart je de hele tablet. Zonder Device Owner werkt alleen Restart browser, die alleen Fully Kiosk opnieuw start. Handig als de tablet een keer vastloopt en hij hoog aan de muur hangt.
- Echt op slot. Gebruikers komen niet uit de kioskmodus, niet in de Android-instellingen en kunnen de tablet niet uitzetten. De statusbalk, schermafbeeldingen, ADB en opstarten in de veilige modus kun je helemaal uitzetten.
- Altijd het dashboard na het opstarten. Fully Kiosk wordt het standaard startscherm van de tablet. Na een herstart of stroomstoring staat het dashboard er dus vanzelf weer.
Fully Kiosk maakt dat eenvoudig met de pagina Configure Device Provisioning in Fully Cloud. Je kiest daar een methode, en de pagina maakt de QR-code of de opdracht voor je:
| Methode | Voor | Let op |
|---|---|---|
| QR-code | Android 7 en nieuwer, met camera | Alleen op een nieuwe of teruggezette tablet. Op Android 9 en nieuwer kan de wifi in de QR-code |
| ADB | Android 5 en nieuwer | Kan zonder fabriek reset, via een USB-kabel en een computer |
Bij de QR-code zet je de tablet terug naar de fabrieksinstellingen en tik je op het eerste welkomstscherm een paar keer op dezelfde plek. Android opent dan een QR-scanner, en na het scannen installeert en configureert de tablet Fully Kiosk vanzelf. Volg de stappen op de pagina van Fully Kiosk, want die verschillen een beetje per Android-versie en merk.
Mijn instellingen in Fully Kiosk
Dit zijn de instellingen die ik heb aangepast, per onderdeel zoals ze in Fully Kiosk heten (Settings). Alles wat hier niet staat, laat ik op de standaardwaarde.
Web Content Settings
- Start URL: het lokale adres van het dashboard, bijvoorbeeld
http://192.168.1.10:8123/dashboard-wall/home - Enable Fullscreen Videos en Autoplay Videos: aan, voor de camerabeelden
- Enable JavaScript Alerts en Enable Popups: aan
- Play Videos in Fully: aan
Web Auto Reload
- Auto Reload on Internet Reconnect: aan. Na een storing laadt het dashboard vanzelf opnieuw.
Advanced Web Settings
- Mixed Content Mode: Always Allow Mixed Content. Het dashboard draait op
http, maar sommige kaarten laden plaatjes viahttps. - Keep Screen On while in Fullscreen Mode: aan
Kiosk Mode
- Enable Kiosk Mode: aan
- Kiosk Exit Gesture: Swipe from Left Edge, met een eigen Kiosk Mode PIN
- Disable Status Bar, Disable Volume Buttons en Disable Home Button: aan
- Disable Notifications, Disable Incoming Calls en Disable Outgoing Calls: aan
- Disable Screenshots en Disable Camera: aan
- App Whitelist:
io.homeassistant.companion.android. Alleen apps in deze lijst mogen naar voren komen, naast de apps die Fully Kiosk zelf start (zoals de Ajax-app hieronder).
Device Management
- Keep Screen On en Keep Screen On (Advanced): aan
- Screen Brightness: 35. Home Assistant zet hem op 100% als iemand het scherm gebruikt.
- Screen Off Timer: 0 seconden, dus uit. Het scherm gaat uit via Home Assistant.
- Unlock Screen, Launch on Boot en Force Immersive Fullscreen: aan
- Get Device Admin: aan
- Bluetooth Mode: Disable Bluetooth
Remote Administration
- Enable Remote Administration en Remote Admin from Local Network: aan, met een eigen wachtwoord. Dit is nodig voor de integratie in Home Assistant.
- Remote Admin from Fully Cloud: uit. De tablet is dan alleen in je eigen netwerk te bedienen.
Device Owner Settings (alleen als Fully Kiosk Device Owner is)
- Disable Status Bar, Mute Audio and Disable Volume Buttons en Disable Screen Capture: aan
- Disable ADB en Disable Boot in Safe Mode: aan
- System Update Policy: As soon as available
- App Runtime Permission Policy: Grant. Fully Kiosk krijgt de rechten die het nodig heeft zonder dat je ze stuk voor stuk hoeft te bevestigen.
Other Settings
- Restart Fully After Crash en Restart Fully After Update: aan. De tablet herstelt zichzelf na een crash of update.
- Dark Mode: Force Dark Mode ON
De screensaver van Fully Kiosk zelf laat ik uit. Die rol neemt WallPanel over, en Home Assistant bepaalt wanneer.
Het dashboard
Het dashboard is een sections-weergave met twee kolommen, in het thema Catppuccin Mocha. Bovenaan deze blog zie je hoe het eruitziet. Staan de zonnepanelen daar op Niet beschikbaar? Dat klopt: vroeg in de ochtend geeft mijn GoodWe-omvormer nog geen gegevens door, en dan toont Home Assistant de sensor als niet beschikbaar.
Links staan de klok, de agenda voor de komende drie dagen en een paar tegels: de accu van de tablet, de temperatuur in de woonkamer, het weer, de temperatuur buiten, de maximumtemperatuur van morgen en de zonsopkomst.
Rechts staan:
- de afvalkalender van Twente Milieu, met per container hoeveel dagen het nog duurt;
- een rij knoppen voor de lampen, de camera’s, de beveiliging, muziek en de airco’s;
- de thuisbatterij en de zonnepanelen als voortgangsbalk;
- de stroomprijs van nu, en het goedkoopste en duurste uur van vandaag, in groen, oranje of rood.
Kopbalk, zijbalk en knoppen verbergen
Op een wandpaneel wil je alleen de kaarten zien, zonder de kopbalk, de zijbalk en de knoppen van Home Assistant. Dat doen twee onderdelen samen, allebei in de dashboardconfiguratie (Bewerken → Raw configuration editor), op het hoogste niveau:
- WallPanel verbergt de kopbalk en de zijbalk met
hide_toolbarenhide_sidebar(zie de volledige configuratie bij de screensaver hieronder). - Kiosk Mode verbergt wat er dan nog over is: de zoekknop en de knop van Assist.
kiosk_mode:
hide_search: true
hide_assistant: true
Wil je het dashboard op je eigen computer nog gewoon kunnen bewerken? Zet dan ?edit=1 achter het adres, dan staat Kiosk Mode tijdelijk uit.
Pop-ups in plaats van extra pagina’s
Wie op de knop Lampen tikt, krijgt geen nieuwe pagina maar een pop-up over het dashboard heen. Dat doe ik met Bubble Card: een pop-up heeft een hash, bijvoorbeeld #Lampen, en een knop met navigate naar #Lampen opent hem. Zo heb ik pop-ups voor de lampen, de buienradar, de weersverwachting, de thermostaat, de Sonos-speakers en de airco’s.
Op een wandpaneel is één instelling belangrijk: auto_close. Na 30 seconden sluit de pop-up vanzelf, zodat het scherm altijd terugkeert naar het overzicht.
type: custom:bubble-card
card_type: pop-up
hash: '#Lampen'
auto_close: '30000'
cards:
- type: grid
columns: 4
square: true
cards:
- type: button
entity: light.keuken
name: Keuken
tap_action:
action: toggle
De screensaver met WallPanel
Na een tijdje niets doen wordt het dashboard een fotolijst. Dat doet WallPanel. De foto’s komen uit de map Media van Home Assistant en wisselen elke minuut, in willekeurige volgorde en met een overgang van vijf seconden. Over de foto heen staat een informatie vak met:
- de klok;
- de temperatuur nu, de maximumtemperatuur vandaag en die van morgen;
- een melding voor morgen: welke container er wordt opgehaald, of wie er jarig is.
Die melding is een markdown-kaart die alleen iets laat zien als het morgen is. Zo blijft het informatievak leeg als er niets bijzonders is.
WallPanel stel je in via de dashboardconfiguratie (Bewerken → Raw configuration editor), op het hoogste niveau:
wallpanel:
enabled: true
hide_toolbar: true
hide_sidebar: true
screensaver_entity: input_boolean.wallpanel_screensaver
image_url: media-source://media_source/local
media_order: random
display_time: 60
crossfade_time: 5
image_fit_landscape: cover
cards:
- type: custom:digital-clock
- type: entities
entities:
- entity: sensor.knmi_temperatuur
name: Temperatuur
- entity: sensor.knmi_max_temperatuur_morgen
name: Morgen
- type: markdown
content: >-
{% set namen = {
'organic waste pickup': 'groene container',
'paper waste pickup': 'papiercontainer',
'packages waste pickup': 'plastic container',
'non-recyclable waste pickup': 'grijze container'
} %}
{% set ev = states.calendar.twente_milieu %}
{% if ev and ev.attributes.start_time
and (as_datetime(ev.attributes.start_time).date() - now().date()).days == 1 %}
{% set soort = ev.attributes.message | lower %}
Morgen wordt de {{ namen.get(soort, soort) }} opgehaald 🗑️
{% endif %}
De screensaver aansturen vanuit Home Assistant
Het belangrijkste stuk is screensaver_entity. WallPanel volgt dan een helper: staat die aan, dan is de screensaver aan. En andersom: tikt iemand de screensaver weg, dan zet WallPanel de helper zelf uit. Zo bepaalt Home Assistant wanneer de screensaver komt, in plaats van een vaste timer op de tablet.
De helper aanmaken. Ga naar Instellingen → Apparaten en diensten → Helpers → Helper aanmaken en kies Schakelaar (in het Engels Toggle). Noem hem wallpanel_screensaver. Home Assistant maakt dan input_boolean.wallpanel_screensaver, dezelfde naam als bij screensaver_entity hierboven.
Een paar automations regelen daarna wanneer de helper aan- en uitgaat:
| Wanneer | Wat er gebeurt |
|---|---|
| De tablet staat 30 seconden op het hoofdscherm | Screensaver aan |
| Iemand tikt de screensaver weg | Na 2,5 minuut weer aan, als de tablet nog op het hoofdscherm staat |
| De tablet gaat naar een andere pagina, zoals de camera’s | Screensaver uit, zodat je niet wordt onderbroken |
| Screensaver aan / uit | Helderheid naar 35% / 100% |
| 06:00 / 22:15 | Scherm aan / uit |
Om te weten welke pagina openstaat, gebruik ik de sensor Huidige pagina van Fully Kiosk. De eerste drie regels passen in één automation. for: zorgt voor het wachten, zodat er geen losse vertragingen nodig zijn:
alias: Wandtablet - screensaver
triggers:
- trigger: state
entity_id: sensor.wandtablet_huidige_pagina
to: http://192.168.1.10:8123/dashboard-wall/home
for: '00:00:30'
id: hoofdscherm
- trigger: state
entity_id: input_boolean.wallpanel_screensaver
to: 'off'
for: '00:02:30'
id: weggetikt
- trigger: state
entity_id: sensor.wandtablet_huidige_pagina
from: http://192.168.1.10:8123/dashboard-wall/home
id: andere_pagina
actions:
- choose:
- conditions:
- condition: trigger
id: [hoofdscherm, weggetikt]
- condition: state
entity_id: sensor.wandtablet_huidige_pagina
state: http://192.168.1.10:8123/dashboard-wall/home
sequence:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.wallpanel_screensaver
- conditions:
- condition: trigger
id: andere_pagina
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.wallpanel_screensaver
mode: restart
Vervang het adres door dat van je eigen dashboard, met het lokale IP-adres van Home Assistant (zie de tips onderaan). Je vindt het precies zoals het in de sensor staat bij Instellingen → Apparaten en diensten → Fully Kiosk Browser → Huidige pagina.
De helderheid is een eenvoudige automation:
alias: Wandtablet - helderheid bij screensaver
triggers:
- trigger: state
entity_id: input_boolean.wallpanel_screensaver
to: 'on'
id: screensaver
- trigger: state
entity_id: input_boolean.wallpanel_screensaver
to: 'off'
id: actief
actions:
- action: number.set_value
target:
entity_id: number.wandtablet_schermhelderheid
data:
value: "{{ 35 if trigger.id == 'screensaver' else 100 }}"
mode: restart
Met één knop naar de beveiligingsapp
Ons alarmsysteem is van Ajax, en dat bedien je met de eigen app van Ajax. Die app staat op dezelfde tablet. Op het dashboard staat een knop met een schild die een script start:
- Fully Kiosk opent de Ajax-app.
- Na anderhalve minuut haalt Fully Kiosk zichzelf weer naar voren, met het dashboard.
Zo kun je het alarm aan- of uitzetten zonder dat de tablet daarna in de Ajax-app blijft hangen.
alias: Wandtablet - Ajax-app openen
sequence:
- action: fully_kiosk.start_application
data:
device_id: <id van je tablet>
application: com.ajaxsystems
- delay: '00:01:30'
- action: fully_kiosk.start_application
data:
device_id: <id van je tablet>
application: com.fullykiosk.emm
mode: restart
De naam van een app (zoals com.ajaxsystems) vind je in de Play Store: het is het deel na id= in de link van de app.
Slim laden met een slimme stekker
Een tablet die dag en nacht aan de lader hangt, staat altijd op 100%. Daar wordt een accu niet beter van: hij slijt sneller en kan op den duur zelfs opzwellen. Daarom hangt de lader aan een schakelaar die Home Assistant aan en uit kan zetten, en laadt de tablet alleen tussen 15% en 90%.
Welke schakelaar je gebruikt, maakt niet uit. Bij mij is het een Shelly, maar een slimme stekker werkt net zo goed, bijvoorbeeld een Zigbee-stekker of een stekker met wifi of Matter. Zolang hij in Home Assistant als switch verschijnt, kun je hem in de automation hieronder gebruiken. Vervang dan alleen switch.lader_tablet door je eigen stekker.
alias: Wandtablet - laden tussen 15% en 90%
triggers:
- trigger: numeric_state
entity_id: sensor.wandtablet_batterij
below: 15
id: laden
- trigger: numeric_state
entity_id: sensor.wandtablet_batterij
above: 90
id: stoppen
actions:
- choose:
- conditions:
- condition: trigger
id: laden
sequence:
- action: switch.turn_on
target:
entity_id: switch.lader_tablet
- conditions:
- condition: trigger
id: stoppen
sequence:
- action: switch.turn_off
target:
entity_id: switch.lader_tablet
mode: single
De accu van de tablet staat ook als tegel op het dashboard. Zo zie je meteen of het laden nog werkt.
Tips
- Zet automatische updates van Android en apps uit op de tablet, of laat ze ’s nachts draaien. Een update midden op de dag kan Fully Kiosk sluiten.
- Gebruik het lokale IP-adres van Home Assistant, bijvoorbeeld
http://192.168.1.10:8123, en niet je Nabu Casa-adres of een adres via een VPN. Valt je internet weg, dan werkt de tablet gewoon door: lampen, verwarming en de meeste automations draaien lokaal. Met een adres via internet staat de tablet dan op een foutmelding, juist op het moment dat je hem nodig hebt. - Geef de tablet én Home Assistant een vast IP-adres in je router. Dan klopt het adres in Fully Kiosk altijd, en vindt de integratie de tablet altijd terug.
- Stuur bij het opstarten altijd het hoofdscherm. Een automation die bij het aangaan van het scherm
fully_kiosk.load_urlmet je dashboard aanroept, voorkomt dat de tablet op een oude pagina blijft staan. - Zet de screensaver weer aan na een herstart van Home Assistant. Na een herstart weet WallPanel niet altijd meer dat de screensaver aan moet. Een automation met de trigger Home Assistant start die na een paar minuten
input_boolean.wallpanel_screensaveraanzet, lost dat op.
Meer lezen
- Alle bestanden uit deze blog op GitHub: Klaar om over te nemen, in de map
wandtabletvan mijn repository Fonfey/HomeAssistant - Configure Device Provisioning (Fully Cloud): QR-code of ADB om Fully Kiosk als Device Owner in te schrijven
- Fully Kiosk Browser-integratie: scherm, helderheid, huidige pagina en de acties
load_urlenstart_application - WallPanel: wandpaneelmodus en fotoscreensaver voor dashboards
- Kiosk Mode: kopbalk en zijbalk verbergen
- Bubble Card: pop-ups die je opent met een
#hash - Shelly-integratie: voorbeeld van een schakelaar voor de lader; elke slimme stekker werkt