Virtuelle Python Umgebung für Openhab2
Verfasst: 10. Nov 2019 22:54
Hallo zusammen,
ich möchte ein Item berechnen, für welches ich auf die persistierte Historie (in meinem Fall eine MariaDB/MySql DB Tabelle) eines anderen Items zugreifen muss. Und zwar auf mehrere Werte der letzten Tage.
Hierfür habe ich mir ein Python Script geschrieben, welches die benötigten Daten aus der DB-Tabelle liest und die Berechnung zurückgibt. Das Script funktioniert soweit fehlerfrei (Aufruf via command line / ssh).
Das Script wird eingebunden als "Thing" über
Der Aufruf funktioniert auch soweit, aber ich erhalte Python Fehlermeldungen, weil importierte Pakete nicht gefunden werden. Ich musste Python-seitig noch Pakete installieren (mysql connector). Das wollte ich, weil meine Synology noch andersweitig genutzt wird, in einer virtuellem Umgebung machen.
Habe mir also eine virtuelle Umgebung eingerichtet:
Jetzt muss ich die virtuelle Umgebung aber noch für den openhab daemon user aktivieren, damit meine in der openHAB_virtual_env installierten Python Pakete gefunden werden.
Das Aktivieren funktioniert via ssh fehlerfrei und die virtuelle Umgebung wird via ssh aktiviert. Aber nicht unter dem opehab daemon user.
Ich dachte, ich kann das einfach in einer Startup Rule unterbirngen:
Leider scheint das an Berechtigungen zu scheitern:
Ich muss das Aktivieren der openHAB_virtual_env im "current shell process" ausführen, wenn ich den "." operator weglasse, würde die openHAB_virtual_env in einem neuen shell Prozess starten und nicht in dem, in welchem das python Script ausgeführt wird.
Hier fehlt mir jetzt Erfahrung mit openhab und/oder linux. Ich komme an dieser Stelle nicht mehr weiter. Hat jemand eine Idee?
Viele Grüße
HABSeb
ich möchte ein Item berechnen, für welches ich auf die persistierte Historie (in meinem Fall eine MariaDB/MySql DB Tabelle) eines anderen Items zugreifen muss. Und zwar auf mehrere Werte der letzten Tage.
Hierfür habe ich mir ein Python Script geschrieben, welches die benötigten Daten aus der DB-Tabelle liest und die Berechnung zurückgibt. Das Script funktioniert soweit fehlerfrei (Aufruf via command line / ssh).
Das Script wird eingebunden als "Thing" über
Code: Alles auswählen
{ channel="exec:command: ..."
Habe mir also eine virtuelle Umgebung eingerichtet:
Code: Alles auswählen
sudo -u openhab python3 -m venv openHAB_virtual_env
Das Aktivieren funktioniert via ssh fehlerfrei und die virtuelle Umgebung wird via ssh aktiviert. Aber nicht unter dem opehab daemon user.
Ich dachte, ich kann das einfach in einer Startup Rule unterbirngen:
Code: Alles auswählen
rule "Activate virtual python environment"
when
System started
then
var String info
info = executeCommandLine(". /volume1/public/openHAB/conf/scripts/python/openHAB_virtual_env/bin/activate",100000)
logInfo("Python venv",info)
end
Code: Alles auswählen
2019-11-10 22:23:14.525 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'general.rules'
2019-11-10 22:23:19.608 [WARN ] [lipse.smarthome.io.net.exec.ExecUtil] - Execution failed (Exit value: -559038737. Caused by java.io.IOException: Cannot run program "." (in directory "."): error=13, Permission denied)
2019-11-10 22:23:19.609 [INFO ] [e.smarthome.model.script.Python venv] -
Hier fehlt mir jetzt Erfahrung mit openhab und/oder linux. Ich komme an dieser Stelle nicht mehr weiter. Hat jemand eine Idee?
Viele Grüße
HABSeb