Hallo,
habe auf meinem Raspberry 3 das 7 Zoll Touch Display installiert und so eingestellt das sich nach einer Minute der Bildschirmschoner(Xsrcreensaver glslideshow)aktiviert.
Nun möchte ich mit FHEM den Bildschirmschoner beenden können nur wie?
im Terminal geht das mit export DISPLAY=:0 und xscreensaver-command -deaktivate....nur von FHEM heraus nicht, andere System befehle funktionieren .z.B so {system("sudo reboot");;}..
{system("export DISPLAY=:0")};{system("xscreensaver-command -deaktivate");;} ergibt
-1
-1
jedoch keine reaktion :-[
hat jemand Rat?
Mfg Mani
Kann/darf der User fhem diese Kommandos ausführen?
Habe in der /etc/group den eintrag gemacht =>root:x:0:fhem,pi und in der /etc/sudoers diesen eintrag fhem ALL=(ALL) NOPASSWD: ALL sollte reichen oder?
/etc/sudoers hilft nur, wenn Du "sudo kommandoxxxxxx" machst.
/etc/group hilft nur, wenn die gewünschte Kommandos der Gruppe gehören, bzw. von der Gruppe ausführbar sind.
Ok, kannst du mir sagen wie ich fhem die Berechtigung geben kann das Kommando auszuführen?
Mit deiner sudoers Definition (sowas wie ALL ALL NOPASSWD ist eigentlich nicht zu empfehlen, aber gut...) , kannst Du einfach folgendes probieren:{system("sudo export DISPLAY=:0 && sudo xscreensaver-command -deaktivate");;}
EDIT: wäre auch zu prüfen, ob "deaktivate" richtig ist. Mit k oder mit c?
Hallo,
Geht leider auch nicht brauch auch im Terminal kein sudo....hab was gelesen das man wenn man das Display öffnet so eine Art id bekommt um dann die Befehle ans Display senden zu können....
Zitatbrauch auch im Terminal kein sudo
Ja aber im Terminal bist Du wahrscheinlich nicht als Benutzer "fhem" angemeldet.
Aber wenn es auch nicht funktioniert... bin ich ratlos.
Mich irritiert aber vom Anfang an das "export Display". Warum brauchst Du ein export Display? Versuchst Du dich graphisch auf einem anderen Rechner zu schalten? Mit fhem ?
Grafisch nicht ich hab am Raspberry das 7 Zolldisplay angeschlossen und um an dieses befehle abgeben zu können brauch ich den export.. befehl......im Terminal bin ich als pi angemeldet.
event gibts auch eine andere Lösung eine Bewegung vorzutäuschen, jedenfalls danke für deine Tipps. :)
Sorry, aber ich verstehe es immer noch nicht.
Man macht ein "export DISPLAY", wenn man per ssh (z.B.) aus einem anderen Computer den Xserver des Raspis übertragen will: ich möchte von meinem PC aus die grafische Oberfläsche des Pi sehen / steuern.
Anders gesagt: Wenn Du remote auf dem Pi eingeloggt bist, brauchst Du dann den export Display, "um dieses Befehl abgeben zu können."
Aber fhem läuft auf dem Pi, oder? Warum sollte er das export Display brauchen?
Probier mal mit:
"sudo XAUTHORITY=/home/pi/.Xauthority xscreensaver-command -deaktivate"
Und wenn es nicht geht, dann mit:
"sudo XAUTHORITY=/home/pi/.Xauthority DISPLAY=:0.0 xscreensaver-command -deaktivate"
(aber wiederum: m.A. ist DISPLAY nicht nötig, das Problem liegt irgendwo anders)
PS: deactivate oder deaktivate?
Hallo wow Super, jetzt gehts... :)
{system("sudo XAUTHORITY=/home/pi/.Xauthority xscreensaver-command -deactivate");;}
Besten Dank könntest du mir sagen warum das so ist?
Mfg Mani
Da das 7" Display direkt am Pi hängt, wird die X-session vom User "pi" gestartet.
Wenn ein User eine X-Session startet, werden deren Credentials in ~/.Xauthority gespeichert, damit kein anderer Benutzer diese Xsession sehen / ansteuern kann.
Wie kann ich mich jetzt als User "fhem" in dieser X-session, die mir nicht gehört, involvieren? Indem ich als sudoer (sonst darf ich nicht aufs home Verzeichnis von jemandem anderen) sudo
,
die Credentials von dieser Sitzung übernehme (dafür setze ich die Environment Variable XAUTHORITY auf die Credentials vom user "pi")XAUTHORITY=/home/pi/.Xauthority
um mein Kommando auszuführen xscreensaver-command -deactivate
Ok danke super geholfen.
Jetzt ware es m.A. eine gute Idee, deine sudoers Datei ein bisschen zu beschränken. Der User fhem darf im Moment alles auf allen Maschinen als alle Benutzer ohne Authentifizieung durchführen...