Monitor HDMI per html schalten

  • 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

  • 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.

  • weder sudo, noch uid:www-data.

    Im Homeverzeichnis des Users christian sollen alle Files dem User christian gehören.

    < man acl > sollst Du (ohne spitze Klammern) im Terminal eingeben.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • weder sudo, noch uid:www-data.

    Im Homeverzeichnis des Users christian sollen alle Files dem User christian gehören.

    < man acl > sollst Du (ohne spitze Klammern) im Terminal eingeben.


    Servus !

    jetzt stehe ich total auf dem Schlauch.

    Was muss ich nun machen ? :helpnew:

  • da bin ich leider erstmal raus. Bin nicht unbedingt der Linux Mensch und brauche es wirklich nur für einen Heimautomation Monitor.

  • 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

    Edited once, last by RTFM ().

  • 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

  • #11 wurde von mir berichtigt.

    Das File selbst gehört dem User christian

    www-data soll das File als User christian ausführen dürfen.


    Servus !

    RTFM = Read The Factory Manual, oder so