notwendige FHEM Rechte zum Ausführen von Python Skripte

Begonnen von nod, 01 Oktober 2017, 10:18:07

Vorheriges Thema - Nächstes Thema

nod

Hallo Experten,

ich bin ein Neuling in Sachen FHEM und RaspberryPi, versuche mich aber trotzdem daran ein kleines Projekt damit zu verwirklichen. Folgendes möchte ich umsetzen: FHEM soll ein Python Skript (batch.py) aufrufen. Ich nutze derzeit den Befehl:
"python /home/pi/hx711py/batch.py"

Scheinbar versucht FHEM auch den Befehl auszuführen, hat aber Probleme bei den Berechtigungen. Folgendes ist im LOG dazu zu finden:
ZitatTraceback (most recent call last):
  File "/home/pi/hx711py/batch.py", line 1, in <module>
    import stockwaage, os
  File "/home/pi/hx711py/stockwaage.py", line 11, in <module>
    hx = HX711(5, 6)
  File "/home/pi/hx711py/hx711.py", line 11, in __init__
    GPIO.setup(self.PD_SCK, GPIO.OUT)
RuntimeError: No access to /dev/mem.  Try running as root!

Was kann das für Ursachen haben und wenn es sich, wie vermutet, um Berechtigungen für FHEM handelt, wie kann ich diese ändern, damit es fliegt?

Vielen Dank im Voraus für hilfreiche Antworten.
Gruß, nod

MadMax-FHEM

Kannst du das script von der linux console aus aufrufen?

Und wenn wie/als welcher User?

EDIT: ich vermute mal ohne 'sudo' wird es wohl auch unter linux nicht laufen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod

#2
Hallo,
ja aus der Shell (user "pi") funktioniert der Befehl:
python /home/pi/hx711py/batch.py


MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod


MadMax-FHEM

#5
Wenn ohne 'sudo' und du dem User 'pi' keine weiteren Rechte gegeben hast sollte es funktionieren, wenn du das Script unter /opt/fhem kopierst (sofern du fhem dort installiert hast) und dann mittels:

sudo chown fhem:dialout /opt/fhem/batch.py

die Berechtigung setzt...

EDIT: vors. du hast fhem "normal" installiert und die Berechtigungen für fhem sind die unter 'chown' genannten...

(Zum Kopieren ist gegebenenfalls ebenfalls 'sudo' notwendig, da User 'pi' in /opt/fhem normalerweise nicht schreiben darf)

Aufruf aus fhem nat. an den neuen Pfad anpassen ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod

Hallo,
leider besteht das Zugriffsproblem nach wie vor:
ZitatTraceback (most recent call last):
  File "/opt/fhem/Stockwaage/batch.py", line 1, in <module>
    import stockwaage, os
  File "/opt/fhem/Stockwaage/stockwaage.py", line 11, in <module>
    hx = HX711(5, 6)
  File "/opt/fhem/Stockwaage/hx711.py", line 11, in __init__
    GPIO.setup(self.PD_SCK, GPIO.OUT)
RuntimeError: No access to /dev/mem.  Try running as root!

MadMax-FHEM

#7
Darum hat mich ja gewundert, dass es als User 'pi' ohne 'sudo' läuft...

Was für ein System hast du?

Hast du dem User 'pi' keine zusätzlichen Rechte gegeben?

Ist das nur ein Script oder eine Reihe von Scripten?

EDIT: mal anders gefragt, was macht das Script bzw. was soll es machen?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod

#8
ZitatWas für ein System hast du?
RaspberryPi 3, leider hab ich es nicht installiert sondern ein bekannter, wie kann ich das system/version ausgeben lassen?
ZitatHast du dem User 'pi' keine zusätzlichen Rechte gegeben?
wie gesagt ich bin Anfänger und weis nicht welche Rechte "pi" hat, wie kann ich das herausfinden?
ZitatIst das nur ein Script oder eine Reihe von Scripten?
es sind insgesamt 3 skripte, welche sich gegenseitig aufrufen...
ZitatEDIT: mal anders gefragt, was macht das Script bzw. was soll es machen?
batch.py holt sich einen Wert von stockwaage.py, welches wiederum über hx711.py eine Wägezellenelektronik ausliest (digitale Schnittstelle). Wie gesagt, das ganze funktioniert in der Shell, jedoch nicht aus fhem heraus!

MadMax-FHEM

#9
Hast du alle Scripte mittels des 'chown' Befehls "angepasst"!?

Welchen Typ PI: 1, 2, 3 ;)

Und v.a. welches Betriebssystem:

Raspbian? Welches: wheezy, jessie, stretch?

Wie hast du fhem installiert?

EDIT: wenn du nur "normal" installiert hast und max. per raspi-config Einstellungen vorgenommen hast, also keine weiteren "Hacks" irgendwo aus dem Internet ausprobiert hast, dann passen die Rechte von 'pi' ja noch...

EDIT2: wo hast du die Scripte her?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod

#10
ZitatHast du alle Scripte mittels des 'chown' Befehls "angepasst"!?
ja den befehl habe ich für alle 3 skripte durchgeführt
Die Skripte sind zum Teil gegoogled bzw. auch selbst geschrieben. Wie bereits erwähnt, diese funktionieren aus der Shell heraus alle einwandfrei, bitte nicht die skripte selbst hinterfragen.

MadMax-FHEM

#11
So, hab mal ein wenig geschaut.

Mache selbst nichts bzgl. GPIOs...

Aber es sieht wohl so aus, als ob der Nutzer/User der Gruppe GPIO angehören muss...

Was sagt ein:
sudo ls -la /dev/mem

Und was kommt bei:

groups
Als User 'pi' auf der console...

Bzw. id

Wenn dem so ist, sollte folgendes den User fhem dieser Gruppe hinzufügen:
sudo adduser fhem gpio

Aber erst mal die oben genannten Ausgaben posten...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

nod

Zitatcrw-r----- 1 root kmem 1, 1 Okt  1 11:41 /dev/mem
Zitatpi root adm dialout cdrom sudo audio video plugdev games users input netdev bluetooth gpio i2c spi
Zitatuid=1000(pi) gid=1000(pi) Gruppen=1000(pi),0(root),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),101(input),108(netdev),113(bluetooth),997(gpio),998(i2c),999(spi)

MadMax-FHEM

Gut, User pi ist in der Gruppe root...

Damit ist klar, dass das Script als 'pi' alias 'root' läuft...

Wie hast du das "geschafft"?

Somit läuft dein System als root...
...nicht gut (meine Meinung!)...

Ich würde neu aufsetzen und mir genau überlegen, wem ich welche Rechte etc. gebe...
...auch (nur) meine Meinung...

Bzw. bevor ich einfach "etwas" aus dem Internet in den Rechner "hacke" mich informieren, was der Befehl etc. denn bewirkt...


Denn kurz hätte zur Lösung des Problems auch einfach gereicht, den User fhem in sudoers einzutragen und das Script mittels 'sudo' aufzurufen..


Aber ich mag nicht immer mit dem root- bzw. sudo-Hammer draufschlagen...
...einfach, funktioniert praktisch immer...
...ist aber nie schön...

Wenn du mit dem System (pi = root) trotzdem weiter arbeiten willst sollte der genannte Befehl zur Aufnahme des Users fhem in die gpio Gruppe eigentlich reichen...

Wenn du Raspbian mind. Jessie hast (soweit ich auf die Schnelle lesen konnte)...

Ansonsten einfach auch fhem in root aufnehmen, macht das Kraut dann auch nicht mehr fett...
(nicht wurklich ernst gemeint dieser "Rat")

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

System herauskriegen kannst du mittels:

cat /etc/os-release

Bzw.

uname -a

Mein Tipp:

Evtl. erst mal selbst einen PI aufsetzen, damit etwas "spielen" und lernen und dann noch mal aufsetzen und dann richtig damit arbeiten...

Evtl. einen zweiten zum Üben...

Wie du weiter machen willst liegt nat. bei dir...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)