NEWS
exec Befehl um python script auszuführen
-
Hallo,
ich habe da mal ne Frage:
Iobroker läuft auf ein Macbook mit Ventura 13.7.1Nun habe ich eine Datei mit einem python script geschrieben, welches die Daten aus meinem Wechselrichter FoxESS T5-G3 abholt.
Wenn ich die Datei, die auf dem Desktop liegt, mit dem Befehlt im Terminal "python3 Foxess.py" ausführen lasse bekomme ich die Werte als Text -> {'month': 31.899999999999636, 'today': 0.5, 'cumulative': 10161.9}.Nun meine Frage:
Kann ich mit exec (Blockly) das Terminal aufrufen, auf Desktop wechseln und den Befehl "python3 Foxess.py" ausführen lassen. Das Ergebnis sollte dann in einer Variable erscheinen.
Habe mit exec noch nicht viel gearbeitet.Vielen Dank im Voraus für die Hilfe
Meintre -
Grundsätzlich geht das. Wurde auch mehrfach hier im Forum beschrieben.
Stolperfallen sind meist die Berechtigungen. Skript wird als User iobroker ausgeführtBesser wäre es (wenn es nicht zu komplex ist) das Python nach JavaScript übersetzen zu lasse. Und im Skript Adapter nativ ausführen zu lassen.
Probier mal ChatGPT. Das ist in Code Übersetzung ganz gut. Bei den letzten glitches kann man dir dann hier helfen -
@oliverio Das geht leider nicht so einfach, da eine "foxesscloudAPI" Bibliothek benutzt wird!
Kannst Du mir mal den Code in Blockly aufschreiben?
-
was meinst du mit code aufschreiben? du willst doch blockly verwenden?
dazu wählst du den exec block aus und trägst deinen befehl ein.
wie eine rückanwort zu verarbeiten ist, kannst du hier im forum suchen, da gibt es mehrere beispiele.zum testen kannst du auf der shell den folgenden befehl eingeben um dann befehle als user iobroker auszuführen
sudo -u iobroker bash
danach sollte im prompt (wenn er richtig eingestellt ist) was von iobroker stehen.
wenn dann der befehl immer noch richtig funktioniert, dann sollte es in blockly keine probleme geben. -
Du kannst das python Skript so erweitern, dass es die Werte zum Simple Api Adapter im iobroker schickt. Dann braucht es nur noch per Cronjob / Shedule, je nachdem, was Apple bietet, regelmäßig aufgerufen werden.