Wenn mein Display (hier kannst du dir anschauen, wie ich es eingebaut habe) schmutzig ist, ist es ganz praktisch, wenn es eine „Putzfunktion“ gibt, die für eine kurze Zeit alle Eingaben deaktiviert, sodass beim Putzen nichts verstellt wird. Hier möchte ich dir zeigen, wie ich das umgesetzt habe.

Installation des Webservers

Für diese Funktion verwende ich einen Webserver, der ein Request entgegennimmt. Dieser führt dann ein Shell Skript aus, das die Eingaben vom Touchscreen abschaltet.

PHP Skript

Dann verwende ich ein einfaches PHP Skript, welches ein Shell-Skript als User „pi“ startet:

Dieses habe ich in /var/www/html/cleanmode.sh gespeichert.

Shell-Skript

Für das Shell-Skript muss man zuerst die ID des Touchscreens herausfinden. Mit folgendem Befehl lassen sich alle IDs anzeigen:

Anschließend probiert man mit

alle IDs durch, bis der Touchscreen nicht mehr funktioniert. In meinem Fall war es die ID 7.

Folgendes Shell-Skript muss dann angepasst werden:

Die Zeit in Zeile 2 kann man ebenfalls nach Belieben anpassen. Mein Skript liegt in /home/pi/cleanmode.sh. Sollte das bei dir anders sein, musst du den Pfad im PHP Skript entsprechend ändern.

Den Benutzer www-data mit Root-Rechten ausstatten

Damit der User www-data (Dieser wird vom Webserver verwendet) das Shell-Skript als User pi ausführen kann, braucht er Root-Rechte.

ACHTUNG: Den Benutzer www-data mit Rootrechten auszustatten, ist ein großes Sicherheitsrisiko. Dies sollte man unter keinen Umständen auf einem vom Internet erreichbaren Webserver tun!

Wir öffnen dazu mit dem Befehl

Die Datei /etc/sudoers und tragen dort unter „User privilege specification“ folgende Zeile ein:

Nach dem Speichern mit Strg+O, dem Beenden mit Strg+X und einem Neustart hat der User www-data nun Root-Rechte. Öffnet man nun im Browser folgende URL:

http://[IP_DEINES_RPi]/cleanmode.sh

sollte sich der Touchscreen abschalten und nach 60 Sekunden wieder anschalten.

Putzfunktion in Homeassistant

Auf meinem Display läuft zur Zeit Homeassistant. Dort möchte ich die Putzfunktion gerne als Button haben. Außerdem möchte ich einen Timer, der mir anzeigt, wie viel Zeit ich noch habe, bis der Touchscreen wieder aktiviert wird.

In der config.yaml habe ich folgende Konfiguration hinterlegt:

Ersteres ist der Aufruf der URL, Zweiteres der Timer.

Anschließend habe ich im Homeassistant UI einen Button unter „Helfer“ erstellt.
Eine Automatisierung steuert dann das ganze, startet also den Timer und ruft dann die URL auf:

Homeassistant Automatisierung Putzfunktion

Und hier noch in Textform: