User Tools

Site Tools


haussteuerung:display_panel

Display Panel

Install

Wegen zu vielen Problemen mit Wayland wird hier Trixie mit X11 genutzt.

Das Hauptproblem ist, dass das Display beim Stromsparen einen nervigen Bildschirm anzeigt … “No Signal” …

Einstellungen

  • sudo raspi-config
    • I2C Aktivieren
    • 1Wire aktivieren
    • umstellen von Wayland auf X11
    • Screen Blanking aus !

100 Mbit Fix

  • Man muss dafür per SSH mit WLAN auf dem Pi sein ….
  • sudo nano /etc/systemd/system/eth0fix.service
    • [Unit]
      Description=100MBit Fix for eth0
      After=network-online.target
      Requires=network-online.target
       
      [Service]
      ExecStart=/sbin/ethtool -s eth0 speed 100 duplex full autoneg on
      Type=oneshot
       
      [Install]
      WantedBy=multi-user.target
  • sudo systemctl enable eth0fix.service
  • sudo systemctl restart eth0fix.service

Updates

  • Command Line
    sudo apt update && sudo apt upgrade -y && sudo apt install -y git git-lfs silversearcher-ag wavemon hexedit sudoku tcpdump iptraf mc htop dcfldd nano usbutils ranger ncdu can-utils multitail fd-find lsof x11vnc minicom joystick i2c-tools speedtest-cli iotop fio ir-keytable curl inxi lshw nala fzf duf
  • UI Tools
    sudo apt update && sudo apt upgrade -y && sudo apt install -y flameshot terminator cutecom jstest-gtk xclip
  • Nutzloses Zeug
    sudo apt autoremove -y modem* cups* avahi* triggerhappy* rpi-connect openvpn xscreensaver

ser2net

Browser

... steuern

falls benötigt …

# Chromium in Fullscreen
sleep 15
#WID=$(DISPLAY=:0 xdotool search --onlyvisible --class chromium|head -1)
#DISPLAY=:0 xdotool windowactivate ${WID}
#DISPLAY=:0 xdotool key F11
 
# An Display Position navigieren mit der Maus und Vollbild auslösen
DISPLAY=:0 /usr/bin/xdotool mousemove --sync 954 200 click 1

Autostart

  • :!: Alles in die Autostart packen ist keine gute Option. xset wird nicht sauber gestartet.
  • nano /home/pi/start_kiosk.sh
    start_kiosk.sh
    #!/bin/bash
     
    # Warte kurz, bis der Desktop vollständig geladen ist (WICHTIG!)
    sleep 5
     
    # Energieeinstellungen deaktivieren
    xset s off
    xset s noblank
    xset -dpms
     
    # Chromium Crash-Flags bereinigen
    # 1. Sperrdateien löschen (WICHTIG!)
    # Verhindert die Meldung "Profil wird bereits verwendet"
    rm -f /home/pi/.config/chromium/SingletonLock
    rm -f /home/pi/.config/chromium/Default/SingletonLock
     
    # 2. 'Local State' säubern (Globaler Status)
    sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/'Local State'
     
    # 3. 'Preferences' säubern (Profil Status)
    # Dieser eine Befehl erschlägt "Crashed", "SessionCrashed" und andere Zustände auf einmal
    sed -i 's/"exit_type":"[^"]\+"/"exit_type":"Normal"/;s/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
     
    # Chromium starten (Kiosk Modus als Beispiel, ansonsten deine Flags nutzen)
    chromium --noerrdialogs --touch-events=enabled
  • Unter Debian Trixie (X11) liegt die autostart dann hier :
    sudo nano /etc/xdg/lxsession/rpd-x/autostart
    autostart
    @lxpanel-pi
    @pcmanfm-pi
    @bash /home/pi/start_kiosk.sh

    Sonst liegt die Autostart hier /home/pi/.config/lxsession/LXDE-pi/autostart

  • chmod +x /home/pi/start_kiosk.sh
  • Nach einem Restart kann man xset -q prüfen ob Screenblanking und Screensaver Timeout deaktiviert sind:
    pi@SHome-Display:~ $ xset -q
    ...
    Screen Saver:
      prefer blanking:  no    allow exposures:  yes
      timeout:  0    cycle:  600
    ...

X11VNC

  • sudo apt install x11vnc
  • für einen ersten Test kann man das verwenden
    x11vnc -usepw -forever -display :0
  • Einrichtung als Dienst
  • sudo x11vnc -storepasswd /etc/x11vnc.pass
  • sudo nano /lib/systemd/system/x11vnc.service
  • [Unit]
    Description=Start X11VNC
    After=multi-user.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/x11vnc -display :0 -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared
    
    [Install]
    WantedBy=multi-user.target
  • sudo systemctl enable x11vnc.service

Fullscreen

  • für Fullscreen Kontroller brauchen wir die HA Integration “Browser Mod” (Installieren über HACS)
    https://github.com/thomasloven/hass-browser_mod
  • auf dem Endgerät dann die Seite öffnen
    http://192.168.30.28:8123/browser-mod
    • Register aktivieren
    • sinnvollen Namen in Browser ID eingeben WZ_Display_10Zoll
  • Jetzt sollte der Browser als Device in HA auftauchen
  • Wir brauchen BroiwserMod um JavaScript auszuführen um Fullscreen Toggel hinzubekommen
  • Das Ausblenden von HA Elementen passiert mit kiosk-mode
    https://github.com/NemesisRE/kiosk-mode
  • Konfig vom kiosk-mode passiert im YAML Modus des Dashboards!
    kiosk_mode:
      user_settings:
        - users:
            - wohnzimmer
          hide_sidebar: true
          hide_header: false
          hide_assistant: true

    Das muss am Anfang ergänzt werden. Damit wird für den User wohnzimmer die Sidebar und der Assistant abgeschaltet.

  • Den Fullscreen Button kann man so erstellen:
    • Button mit Interaktion → Aktion ausführen → javascript
    • Target Browser auswählen → WZ Display (dafür braucht man browser_mod)
    • Code :
        if (!document.fullscreenElement) {
          document.documentElement.requestFullscreen();
        } else {
          document.exitFullscreen();
        }

Display On / Off

Das Display kann über den GPIO Pin 36 vom Raspberry Pi an- und abgeschaltet werden. Das geht über ein einfaches toggeln. Am Ende macht das Python Script (gestartet als Service) aber noch einiges mehr…

import RPi.GPIO as GPIO
import time
 
# GPIO-Setup (BOARD-Modus für physische Pin-Nummern)
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
 
# Pin 36 (GPIO 16) für Display ON/OFF
GPIO.setup(36, GPIO.OUT)
 
def toggleOnOff():
    GPIO.output(36, GPIO.HIGH)
    time.sleep(0.4)
    GPIO.output(36, GPIO.LOW)
    print("Display toggled!")
 
# Toggle ausführen
toggleOnOff()

Funktionen

  • Display an / aus
  • Raspberry in HA mittels Autodiscover anmelden
  • Schalten des Displays über HA
  • Melden von Bewegung an HA (MQTT)
  • einfaches Systemn Monitoring (vor allem Temperatur)

Venv einrichten

  • sudo apt -y update && sudo apt-get install -y build-essential cmake make gcc pkg-config python3-dev python3-virtualenv libsystemd-dev libopenblas-dev python3-setuptools
  • cd ~ && mkdir -p DisplayHA && cd DisplayHA
  • python -m venv . && source bin/activate
  • pip3 install --upgrade pip && pip3 install RPi.GPIO pynput smbus paho-mqtt psutil setuptools
  • Compile VL53 Lib …
    • sudo apt-get install build-essential python-dev
    • cd ~ && git clone https://github.com/pimoroni/VL53L0X_rasp_python.git && cd VL53L0X_rasp_python
    • pip install .
    • VL53L0X.py in den Scriptordner kopieren …
      cp ~/VL53L0X_rasp_python/python/VL53L0X.py ~/DisplayHA/
  • Tests starten …

Motion Detect

  • Sensor : VL53L0X

Service

  • Aktivieren
    sudo systemctl enable display.service
    sudo systemctl daemon-reload
    sudo systemctl start display.service
  • Log ansehen
    journalctl -u display.service -f
  • sudo nano /lib/systemd/system/display.service
    [Unit]
    Description=Smart Display Controller (venv/User Mode)
    # Wir warten, bis das Netzwerk und die Grafikoberfläche da sind
    After=network-online.target graphical.target
    Wants=network-online.target
     
    [Service]
    # --- User Context ---
    User=pi
    Group=pi
     
    # --- Arbeitsverzeichnis ---
    # Setzt das Verzeichnis, damit relative Pfade funktionieren
    WorkingDirectory=/home/pi/DisplayHA
     
    # --- Environment ---
    # Diese Variablen sind wichtig für DDC/CI oder xrandr Interaktionen
    Environment=DISPLAY=:0
    Environment=XAUTHORITY=/home/pi/.Xauthority
    # Erzwingt unbuffered Output, damit Logs sofort im Journal erscheinen
    Environment=PYTHONUNBUFFERED=1
     
    # --- ExecStart: Der Trick für das venv ---
    # Statt 'source bin/activate' rufen wir direkt das Python im venv auf.
    # PASSE DEN PFAD ZUM VENV AN, falls dein Ordner anders heißt (z.B. .venv)!
    ExecStart=/home/pi/DisplayHA/bin/python /home/pi/DisplayHA/SmartDisplay.py
     
    # --- Restart Verhalten ---
    Restart=always
    RestartSec=10s
     
    [Install]
    WantedBy=graphical.target
haussteuerung/display_panel.txt · Last modified: by dominik

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki