Monitor HDMI per html schalten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo und guten Abend,

    ich nutze HomeAssistant und möchte gerne einen Pi4 mit einem Touch Monitor per HDMI verwenden.

    Es handelt sich um ein 15,4 Zoll Touch.

    Der Touch funktioniert ohne Probleme.

    Ich möchte diesen Monitor gerne per html Befehl ein und Ausschalten.

    Raspberry OS Image aktuell mit dem Imager erstellt.

    PHP mit Apache2 ist installiert.

    Aufruf phpinfo.php vom Laptop funktioniert einwandfrei.

    Bash:

    display_off.sh

    DISPLAY=:0 xrandr --output HDMI-2 --off

    dusplay_on.sh

    DISPLAY=:0 xrandr --output HDMI-2 --auto

    PHP:

    display_off.php

    <?php

    shell_exec('bash /var/www/html/display_off.sh');

    ?>

    display_on.php

    <?php

    $output = shell_exec('bash /var/www/html/display_on.sh')

    ?>

    Berechtigung alle entsprechend gesetzt sowie die erlaubnis in der ini ist gegeben.

    Leider lassen sich die php Scripte nicht von einem anderen PC auslösen.

    Es passiert einfach nichts.

    Über die CLI funktioniert das einwandfrei.

    Habt ihr noch eine Idee?

  • Hallo,

    HTML ist eine Markup-Sprache, mit der du das Layout eines HTML-Dokuments (i.d.R. eine Webseite) festlegst. HTML an sich kann gar nichts schalten.

    Vom Vorgehen her kannst du folgenden machen: die bindest die Funktion zum An-/Ausschalten an eine Route (URL). Wenn auf der Route z.B. ein GET-Request ankommt, welchen du z.B. über das Senden eines Formulars / Button aus HTML heraus auslöst, dann wird der Monitor an- / ausgeschaltet. Hört sich vielleicht kompliziert an, ist es aber nicht.

    Ich selber nutze kein PHP, von daher kann ich dir keine fertigen Implementierung liefern. Dazu sollten sich aber problemlos Beispiele im Netz finden lassen.

    Gruß, noisefloor

  • Berechtigung alle entsprechend gesetzt

    Über die CLI funktioniert das einwandfrei.

    Linux ist ein Multiüser Betriebssystem. Ein Programm wird mit den Umgebunsvariablen, sohin auch mit der uid= , des aufrufenden Users gestartet. Der User www-data ist ein Systemuser (uid < 1000) und hat keine eigene Grafikumgebung, sodass er "xrandr", das in die X-Org/Wayland Konfiguration eingreift, nicht erfolgreich ausführen kann.

    Wenn Du aus einem Grafikterminal das Script aufrufst, geschieht das als User pi, der auf einem Grafiksystem eingeloggt ist. Das Script startet dann mit den Umgebungsvariablen des Users pi und seinem X- Environement, deshalb funktioniert es - als eingeloggter Grafikuser - einwandfrei.

    Deshalb kannst Du versuchen, die beiden Scripte als User pi im Homer Verueichnis des Users pi zu erstellen und dem User www-data die Berechtigung zu erteilen, als User pi das Script auszuführen. < man acl >

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Linux ist ein Multiüser Betriebssystem. Ein Programm wird mit den Umgebunsvariablen, sohin auch mit der uid= , des aufrufenden Users gestartet. Der User www-data ist ein Systemuser (uid < 1000) und hat keine eigene Grafikumgebung, sodass er "xrandr", das in die X-Org/Wayland Konfiguration eingreift, nicht erfolgreich ausführen kann.

    Wenn Du aus einem Grafikterminal das Script aufrufst, geschieht das als User pi, der auf einem Grafiksystem eingeloggt ist. Das Script startet dann mit den Umgebungsvariablen des Users pi und seinem X- Environement, deshalb funktioniert es - als eingeloggter Grafikuser - einwandfrei.

    Deshalb kannst Du versuchen, die beiden Scripte als User pi im Homer Verueichnis des Users pi zu erstellen und dem User www-data die Berechtigung zu erteilen, als User pi das Script auszuführen. < man acl >

    Servus !

    ok das war mir schon fast klar das es an der Berechtigung liegt.

    Die display_off.sh Datei habe ich jetzt in mein Home Verzeichnis gelegt.

    Welche Berechtigung braucht die sh Datei nun ?

    sudo chown www-data display_off.sh

    Das reicht aber offensichtlich nicht aus.

    Leider lässt sich xrandr im home Verzeichnis mit der Bash auch nicht mehr ausführen.

    Wenn ich den Befehl direkt eingebe dann klappt es.

  • Schade, dass Du so schnell aufgibst.

    Dabei sind schon seit ca. 1971 die man-pages auf jedem unixoiden Betriebssystem mitinstalliert, so auch bei Deinem Linux, was sich auch seit der Erfindung des interaktiven Internets (Web 2.0) nicht geändert hat.

    In der man-page von "set file acl" < man setfacl > wäre unter EXAMPLES schon das erste Beispiel zutreffend gewesen, wenn Du den Username von lisa auf christian www-data und die Rechte von r auf rx änderst.

    Die Scripte funktionieren mit dem Environmemt des Users christian. Deshalb sollten sie auch dem User christian gehören und im Homeverzeichnis des Users christian abgelegt sein.

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (21. März 2023 um 19:03)

  • Schade, dass Du so schnell aufgibst.

    Dabei sind schon seit ca. 1971 die man-pages auf jedem unixoiden Betriebssystem mitinstalliert, so auch bei Deinem Linux, was sich auch seit der Erfindung des interaktiven Internets (Web 2.0) nicht geändert hat.

    In der man-page von "set file acl" < man setfacl > wäre unter EXAMPLES schon das erste Beispiel zutreffend gewesen, wenn Du den Username von lisa auf christian und die Rechte von r auf rx änderst.

    Die Scripte funktionieren mit dem Environmemt des Users christian. Deshalb sollten sie auch dem User christian gehören und im Homeverzeichnis des Users christian abgelegt sein.

    Servus !

    also die display_off.sh bekommt die Rechte im home Verzeichnis ?

    setfacl -m u:christian:rx display_off.sh

    Jetzt kann ich das php Script nicht mehr ausführen. Keine Berechtigung

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!