Het dashboard op de wandtablet: klok, agenda (afspraken onleesbaar gemaakt), temperaturen, afvalkalender, knoppen, thuisbatterij en stroomprijzen

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_url en fully_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 via https.
  • 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_toolbar en hide_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.

Pop-up met knoppen voor de lampen in de keuken, woonkamer, Hektar, overkapping, plantenbak en buiten
De pop-up voor de lampen.
Pop-up met de thermostaat van de woonkamer
De pop-up voor de thermostaat.

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

Het informatievak van de screensaver met de klok, de temperatuur nu, de maximumtemperatuur en de temperatuur van morgen
Het informatievak over de foto. De dag voor een ophaaldag of verjaardag staat er ook een melding onder. De foto zelf heb ik vervaagd.

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:

  1. Fully Kiosk opent de Ajax-app.
  2. 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_url met 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_screensaver aanzet, lost dat op.

Meer lezen