Ich versuche meine Pythonprogramme zur Steuerung einer LED Leiste mit GUI über PyQt und mit pycharm als IDE zu programmieren. In dem Pycharm Projekt stecken Routinen zur Ansteuerung der GPIO Pins, die ich vorher einzeln zum Test außerhalb von pycharm per sudo mit root Rechten starten musste. Ohne Root Rechte komme ich wohl nicht an die entsprechenden Pins ran.
Es geht um eine LED Leiste von adafruit (https://learn.adafruit.com/neopixels-on ... -3005997-2), die auf ihrer Website auch die Notwendigkeit von root herausstellen, weil auf /dev/mem zugegriffen werden muss.
Ich habe in Pycharm den Weg über ein Shell Skript als Interpreter statt direkt Python3.7 genutzt, wie hier beschrieben:
https://esmithy.net/2015/05/05/rundebug ... 0as%20root
Im Grunde setzt das shell skript ein sudo vor das python, welches in der virtuellen Umgebung des Pycharm Projektes genutzt wird:
Code: Alles auswählen
sudo /home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7 main.py
Code: Alles auswählen
No protocol specified
qt.qpa.screen: QXcbConnection: Could not connect to display :10.0
Could not connect to any X display.
Vermutlich stimmen die Pfade und Umgebungsvariablen nicht.
Wenn ich dem "sudo" ein "su pi" anfüge, um nach meiner Interpretation den Benutzer "pi" mit "su" zum Benutzer "root" zu machen,
Code: Alles auswählen
sudo su pi /home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7 main.py
oder
sudo su - pi /home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7 main.py
Code: Alles auswählen
/home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7: /home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7: Kann die Datei nicht ausführen.
Code: Alles auswählen
sudo -su pi /home/pi/PycharmProjects/LEDStrip/venv/bin/python3.7 main.py
Code: Alles auswählen
libEGL warning: DRI2: failed to authenticate
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-pi'
Main GUI Start
Main LED Star Methode
In LEDStart
Can't open /dev/mem: Keine Berechtigung
Traceback (most recent call last):
File "main.py", line 150, in LEDStartfunct
LEDStart(self)
File "main.py", line 135, in LEDStart
strip.begin()
File "/home/pi/PycharmProjects/LEDStrip/venv/lib/python3.7/site-packages/rpi_ws281x/rpi_ws281x.py", line 131, in begin
raise RuntimeError('ws2811_init failed with code {0} ({1})'.format(resp, str_resp))
RuntimeError: ws2811_init failed with code -5 (mmap() failed)
Abgebrochen
Scheinbar bedeutet sudo -su pi, dass ich nicht mit root Rechten als Benutzer pi weiterarbeite, sondern, dass ich mit pi Rechten als pi weiterarbeite. Kann das stimmen?
Hier noch die Ausgabe von groups und pi:
Code: Alles auswählen
Hier mal die Ausgabe von id und groups für den Benutzer pi:
Code
pi@raspberrypi:~/LED Strip Tutorial $ groups
pi adm kmem dialout cdrom sudo audio video plugdev games users input netdev lpadmin gpio i2c spi
pi@raspberrypi:~/LED Strip Tutorial $ id
uid=1000(pi) gid=1000(pi) Gruppen=1000(pi),4(adm),15(kmem),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),117(lpadmin),997(gpio),998(i2c),999(spi)