Hallo Forum,
ich möchte auf meinem Pi3 unter Raspbian einen CO2-Sensor nutzen, der seriell über GPIO-Ports eingebunden ist. Der Benutzer "pi" ist Mitglied folgenden Gruppen:
pi@raspberrypi:~ $ groups pi
pi : pi adm tty dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio
Ich habe eine udev-Regel erstellt:
Nach Systemstart sehen die betreffenden Berechtigungen so aus:
pi@raspberrypi:~ $ ls -l /dev/ttyAMA0
crw-rw-rw- 1 root dialout 204, 64 Aug 4 20:13 /dev/ttyAMA0
Der Abruf des gemessenen CO2-Werts funktioniert fehlerfrei:
Nach diesem Abruf allerdings sind die Berechtigungen plötzlich zurückgesetzt und die Gruppe dialout nicht mehr gesetzt:
Und bei nochmaliger Messwertabfrage folgt schlüssigerweise eine Exception:
pi@raspberrypi:~/mh-z19 $ python3 -m mh_z19
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 265, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
PermissionError: [Errno 13] Permission denied: '/dev/ttyAMA0'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pi/mh-z19/mh_z19.py", line 55, in mh_z19
ser = connect_serial()
File "/home/pi/mh-z19/mh_z19.py", line 51, in connect_serial
timeout=1.0)
File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 240, in __init__
self.open()
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 268, in open
raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyAMA0: [Errno 13] Permission denied: '/dev/ttyAMA0'
null
Display More
Manuell können die Permissions wieder gesetzt werden:
Aber auch das hält nur für jeweils eine Abfrage
Ich habe mal den verwendeten Skript-Code inspiziert, muss aber zugeben, dass ich nicht jede Programmzeile verstehe. Werden dort irgendwo Berechtigungen zurückgenommen?
Könnt Ihr euch einen Reim darauf machen oder wisst eine Lösung, wie ich die Zugriffsberechtigung permanent setzen kann?
Hier der Python-Code, der aus diesem Projekt übernommen wurde:
https://github.com/UedaTakeyuki/mh-z19/blob/master/mh_z19.py