NEWS
Python script über Blockly wird nicht ausgeführt
-
Nabend zusammen,
ich benötige Hilfe, weil mein Python-script zwar auf der Konsole ordnungsgemäß funktioniert, nicht jedoch über blockly.
Blockly sieht so aus:
das python script so:
#!/usr/bin/python3.7 from blinkpy import blinkpy blink = blinkpy.Blink(username='xxx@gmx.de', password='yyy', refresh_rate=30) blink.start() sync_module = blink.sync['Daheim'] sync_module.arm = False
- das script ist pi:pi zugeordnet und liegt unter /opt/iobroker
- die Rechte sind 755
- ein python3 /opt/iobroker/blink-disarm.py bring auch nicht das Ergebnis
wie gesagt, auf der Konsole einwandfrei - über blockly nicht. Habe ich einen Gedankenfehler ?
Gruß
PiSchleuder -
@Pischleuder Wahrscheinlich fehlende Rechte? Gehört der User "iobroker" der Gruppe pi an? Blockly/JS wird unter dem User "iobroker" ausgeführt. Wenn dieser also nicht in der Gruppe "pi" ist, kann er auch nicht das Python-Skript ausführen.
Test per Konsole:sudo -u iobroker python3 /opt/iobroker/blink-disarm.py
Vermutliche Ausgabe: sudo: /opt/iobroker/blink-disarm.py kann nicht ausgeführt werden: Keine Berechtigung
-
Moin,
dann kommt:
$ sudo -u iobroker /opt/iobroker/blink-arm.py Traceback (most recent call last): File "/opt/iobroker/blink-arm.py", line 2, in <module> from blinkpy import blinkpy ModuleNotFoundError: No module named 'blinkpy'
rufe ich allerdings so auf:
$ sudo -u pi /opt/iobroker/blink-arm.py
dann läuft das script ohne Fehler durch.
Füge ich das so aber im blockly exec Aufruf ein, wird nichts gestartet.
-
Zumindest ist dann klar warum es per Blockly nicht funktioniert. Testweise kannst du mal den User "iobroker" der Gruppe "pi" hinzufügen:
usermod -aG pi iobroker
-
Hi,
danke für Deine Mühe - funktioniert aber auch nicht.
Habe den loglevel auf error gesetzt und das script wird rot angezeigt.
Weiterhin habe ich auch keine Möglichkeit sh auszuführen - das hatte vorher einwandfrei funktioniert. Kann es sein, dass bei einem der adapter updates etwas schief gelaufen ist ? -
@Pischleuder sagte in Python script über Blockly wird nicht ausgeführt:
dass bei einem der adapter updates etwas schief gelaufen ist ?
Hi, kann natürlich immer mal sein, aber du hast eher ein Problem mit deinen Zugriffsrechten. Ich habe jetzt mal mit einem hochkomplexen Python-Skript getestet, funktioniert soweit... :
Ich habe es ebenfalls als normaler User angelegt, Rechte 755 und im "home"-Verzeichnis des Users "iobroker". Versuche mal so eine rudimentäre Python-Variante, ev. hat er kein Recht per Import Module nach zu laden.
Bei "sh" gilt natürlich das gleiche, läuft nur wenn auch der User iobroker das Shell-Skript ausführen kann/darf. -
@Pischleuder sagte in Python script über Blockly wird nicht ausgeführt:
Füge ich das so aber im blockly exec Aufruf ein, wird nichts gestartet
sudo -u pi /opt/iobroker/blink-arm.pyioBroker darf nur bestimmte Sachen per sudo, und sich als pi ausgeben, gehört nicht dazu.
@Pischleuder sagte in Python script über Blockly wird nicht ausgeführt:
ModuleNotFoundError: No module named 'blinkpy'
Das solltest du beheben, dann läuft es auch aus Blockly heraus. Da ich davon ausgehe, dass du den Installationsbefehl
pip3 install blinkpy
für das Modul als Pi ausgeführt hast, musst du es vermutlich als ioBroker nochmal wiederholen:
sudo -H -u iobroker pip3 install blinkpy
-
@AlCalzone said in Python script über Blockly wird nicht ausgeführt:
@Pischleuder sagte in Python script über Blockly wird nicht ausgeführt:
Füge ich das so aber im blockly exec Aufruf ein, wird nichts gestartet
sudo -u pi /opt/iobroker/blink-arm.pyfür das Modul als Pi ausgeführt hast, musst du es vermutlich als ioBroker nochmal wiederholen:
sudo -H -u iobroker pip3 install blinkpy
Moin,
Du bist mein Held
Das ist es gewesen, nun wird das script sauber ausgeführt - vielen Dank !