NEWS
Apple TV steuern - exec Befehl ohne Funktion
-
Hej liebes Forum,
nachdem ich mich mit Blockly etwas mit ioBroker vertraut gemacht habe, versuche ich nun mein erstes richtiges JS Skript zu schreiben. Bisher habe ich eher Erfahrungen mit C und Java in der Uni gemacht. Komme daher nich gĂ€nzlich ohne Vorwissen was das Programmieren angeht. JS ist dennoch eher Neuland fĂŒr mich.
Zum Problem: Ich möchte mir aktuell ein JS Skript schreiben, mit dem ich mein Apple TV bedienen kann. Als Basis dient dieses Projekt: pyatv. Der Befehl wird zwar richtig erstellt, aber bei exec passiert bisher nichts. Das Apple Tv rĂŒhrt sich keine Meter.
Was auf der normalen Konsole einwandfrei funktioniert, will mit dem JS Skript bisher nicht so wirklich. Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert. Die Klasse fĂŒr die Apple TV funktioniert soweit, dass der Befehl richtig erstellt wird. Wenn ich den Befehl der erstellt wird aus dem Log kopiere und regulĂ€r in der Konsole ausfĂŒhre klappt es wie es soll. Das Skript auf dem Server lĂ€sst sich vom User iobroker ausfĂŒhren.

Daher meine Frage wo in meinem Skript der Fehler liegt?
Quellcode -
Hej liebes Forum,
nachdem ich mich mit Blockly etwas mit ioBroker vertraut gemacht habe, versuche ich nun mein erstes richtiges JS Skript zu schreiben. Bisher habe ich eher Erfahrungen mit C und Java in der Uni gemacht. Komme daher nich gĂ€nzlich ohne Vorwissen was das Programmieren angeht. JS ist dennoch eher Neuland fĂŒr mich.
Zum Problem: Ich möchte mir aktuell ein JS Skript schreiben, mit dem ich mein Apple TV bedienen kann. Als Basis dient dieses Projekt: pyatv. Der Befehl wird zwar richtig erstellt, aber bei exec passiert bisher nichts. Das Apple Tv rĂŒhrt sich keine Meter.
Was auf der normalen Konsole einwandfrei funktioniert, will mit dem JS Skript bisher nicht so wirklich. Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert. Die Klasse fĂŒr die Apple TV funktioniert soweit, dass der Befehl richtig erstellt wird. Wenn ich den Befehl der erstellt wird aus dem Log kopiere und regulĂ€r in der Konsole ausfĂŒhre klappt es wie es soll. Das Skript auf dem Server lĂ€sst sich vom User iobroker ausfĂŒhren.

Daher meine Frage wo in meinem Skript der Fehler liegt?
Quellcode@iphilbln könnte ein rechte problem sein - der service-user iobroker fĂŒhrt das exec aus - evtl hat der keine rechte, die befehle auszufĂŒhren
mach dir mal ein test-blocky mit nur dem exec befehl und kopiere einen funktionerenden befehl dort rein - da kannst du dann debuggen - das ergebnis ansehen, was vom exec kommt
-
@iphilbln könnte ein rechte problem sein - der service-user iobroker fĂŒhrt das exec aus - evtl hat der keine rechte, die befehle auszufĂŒhren
mach dir mal ein test-blocky mit nur dem exec befehl und kopiere einen funktionerenden befehl dort rein - da kannst du dann debuggen - das ergebnis ansehen, was vom exec kommt
@liv-in-sky hatte ich auch erst in Verdacht aber result bleibt leer, was bedeutet dass eigentlich keine Fehler geworfen werden. Was mich aber stutzig macht ist, dass selbst mittelst dem
atvscriptBefehlen, welche ein JSON zurĂŒckgeben Result leer bleibt. In Der Konsole kann ich die Befehle halt ganz normal mit dem User iobroker ausfĂŒhren. So ganz verstehe ich daher nicht was du mit dem Rechteproblem fĂŒr den service-user iobroker meinen könntest. Vllt könntest du nochmal kurz nĂ€her erklĂ€ren was du damit meinst und wie ich das testen kann. -
@liv-in-sky hatte ich auch erst in Verdacht aber result bleibt leer, was bedeutet dass eigentlich keine Fehler geworfen werden. Was mich aber stutzig macht ist, dass selbst mittelst dem
atvscriptBefehlen, welche ein JSON zurĂŒckgeben Result leer bleibt. In Der Konsole kann ich die Befehle halt ganz normal mit dem User iobroker ausfĂŒhren. So ganz verstehe ich daher nicht was du mit dem Rechteproblem fĂŒr den service-user iobroker meinen könntest. Vllt könntest du nochmal kurz nĂ€her erklĂ€ren was du damit meinst und wie ich das testen kann.@iphilbln Dann liegt es auch nicht an den Rechten. Viele wissen einfach nicht, dass JS etc. im User-Context des Users "iobroker" ausgefĂŒhrt werden ;)
Fast schon zu einfach, aber auch gerne vergessen: "exec" im JS-Adapter erlaubt?

-
@liv-in-sky hatte ich auch erst in Verdacht aber result bleibt leer, was bedeutet dass eigentlich keine Fehler geworfen werden. Was mich aber stutzig macht ist, dass selbst mittelst dem
atvscriptBefehlen, welche ein JSON zurĂŒckgeben Result leer bleibt. In Der Konsole kann ich die Befehle halt ganz normal mit dem User iobroker ausfĂŒhren. So ganz verstehe ich daher nicht was du mit dem Rechteproblem fĂŒr den service-user iobroker meinen könntest. Vllt könntest du nochmal kurz nĂ€her erklĂ€ren was du damit meinst und wie ich das testen kann.habe das noch gefunden https://forum.iobroker.net/topic/44184/exec-fĂŒhrt-py-nicht-aus?_=1660464290121
oder
https://forum.iobroker.net/topic/43995/python-skript-mit-blockly-exec-ausfĂŒhren/4wie fĂŒhrst du etwas mit dem iobroker user auf der console aus ?
versuche mal den ganzen pfad beim aufruf zu nutzen - ich glaube , in deinem script rufst du das programm direkt auf - ohne pfad
um etwas zu sehen nutze ich den exec block auf diese weise:


-
@iphilbln Dann liegt es auch nicht an den Rechten. Viele wissen einfach nicht, dass JS etc. im User-Context des Users "iobroker" ausgefĂŒhrt werden ;)
Fast schon zu einfach, aber auch gerne vergessen: "exec" im JS-Adapter erlaubt?

Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert - steht oben :-)
-
Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert - steht oben :-)
@liv-in-sky sagte in Apple TV steuern - exec Befehl ohne Funktion:
Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert - steht oben :-)
...doch glatt wieder ĂŒberlesen :man-facepalming:
-
Der Punkt exec Kommando ausfĂŒhren ist im javascript Adapter aktiviert - steht oben :-)
@liv-in-sky werde ich heute Abend mal austesten und berichten. Jetzt gehts erstmal ab zum See die Sonne gebieĂen. đ
Danke schon mal fĂŒr eure Hilfe. -
@liv-in-sky also ich bin jetzt schon ein StĂŒck weiter gekommen. Probleme macht der Kurzbefehl zum Aufruf des Skripts. Was in der Konsole mit dem user iobroker klappt funktioniert so nicht mittels execute.
Hier mal ein Beispiel aus der Konsole:

Hier in Blockly, wo das Ergebnis leer bleibt:

Wenn ich das Skript direkt in exec anspreche, wird das Skript auch ausgefĂŒhrt und das Apple TV fĂŒhrt das Kommando durch.
Hier noch kurze Infos wo das Skript liegt und den Rechten.


Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel
atvscriptausfĂŒhren kann bzw wo der gespeichert ist?Vielleicht ist das noch hilfreich: In meine .bashrc Datei musste ich auch erst den Pfad exportieren
# add pyatv path to bash export PATH="/home/iobroker/.local/bin:$PATH" -
@liv-in-sky also ich bin jetzt schon ein StĂŒck weiter gekommen. Probleme macht der Kurzbefehl zum Aufruf des Skripts. Was in der Konsole mit dem user iobroker klappt funktioniert so nicht mittels execute.
Hier mal ein Beispiel aus der Konsole:

Hier in Blockly, wo das Ergebnis leer bleibt:

Wenn ich das Skript direkt in exec anspreche, wird das Skript auch ausgefĂŒhrt und das Apple TV fĂŒhrt das Kommando durch.
Hier noch kurze Infos wo das Skript liegt und den Rechten.


Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel
atvscriptausfĂŒhren kann bzw wo der gespeichert ist?Vielleicht ist das noch hilfreich: In meine .bashrc Datei musste ich auch erst den Pfad exportieren
# add pyatv path to bash export PATH="/home/iobroker/.local/bin:$PATH"glaube, da kann ich dir nicht mehr weiterhelfen :-(
-
ich habe noch nie den user iobroker ĂŒber ssh genutzt - der user ist ein system user von iobroker - das dies so funktioniert wuĂte ich nicht - hast du dem user einfach ein password gegeben ?
-
ich wĂŒrde im test-blocky den ganzen pfad angeben vor dem scriptnamen - bzw es mal testen.
-
in deinem blockly ist das loglevel auf "keins" gestellt - Àndere das mal auf "debug" - evtl gibt es dann mehr infos
@iphilbln sagte in Apple TV steuern - exec Befehl ohne Funktion:
Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel atvscript ausfĂŒhren kann bzw wo der gespeichert ist?
das steht doch im bild darĂŒber, wo das script gespeichert ist: /home/iobroker/.local/lib/phyton3.9/......
- hast du mal so einen aufruf gestestet: https://forum.iobroker.net/post/612043
-
-
Ich habe eben mal probiert. Kleines Script:
#!/usr/bin/python import json iv="236" ov="233" ol="99" daten = json.dumps({'input': iv, 'output': ov, 'outload': ol}) print datenDann Blockly:

Funktioniert (kpl. Pfadangabe + Extension) :)
-
glaube, da kann ich dir nicht mehr weiterhelfen :-(
-
ich habe noch nie den user iobroker ĂŒber ssh genutzt - der user ist ein system user von iobroker - das dies so funktioniert wuĂte ich nicht - hast du dem user einfach ein password gegeben ?
-
ich wĂŒrde im test-blocky den ganzen pfad angeben vor dem scriptnamen - bzw es mal testen.
-
in deinem blockly ist das loglevel auf "keins" gestellt - Àndere das mal auf "debug" - evtl gibt es dann mehr infos
@iphilbln sagte in Apple TV steuern - exec Befehl ohne Funktion:
Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel atvscript ausfĂŒhren kann bzw wo der gespeichert ist?
das steht doch im bild darĂŒber, wo das script gespeichert ist: /home/iobroker/.local/lib/phyton3.9/......
- hast du mal so einen aufruf gestestet: https://forum.iobroker.net/post/612043
@liv-in-sky
Mein iobroker lĂ€uft auf einem ganz normalen Debian Lxc Container in meiner Proxmox VE. Wieso sollte man sich also nicht per ssh einwĂ€hlen können. Sollte bei deiner Installation auch klappen, ganz egal auf welchem GerĂ€t du deinen iobroker ausfĂŒhrst. Wie das mit deinem Kennwort ist, kann ich dir allerdings nicht sagen. Kenne mich mit fertigen Images nicht aus, hab iobroker manuell installiert. -
-
@liv-in-sky
Mein iobroker lĂ€uft auf einem ganz normalen Debian Lxc Container in meiner Proxmox VE. Wieso sollte man sich also nicht per ssh einwĂ€hlen können. Sollte bei deiner Installation auch klappen, ganz egal auf welchem GerĂ€t du deinen iobroker ausfĂŒhrst. Wie das mit deinem Kennwort ist, kann ich dir allerdings nicht sagen. Kenne mich mit fertigen Images nicht aus, hab iobroker manuell installiert.@iphilbln sagte in Apple TV steuern - exec Befehl ohne Funktion:
@liv-in-sky
Mein iobroker lĂ€uft auf einem ganz normalen Debian Lxc Container in meiner Proxmox VE. Wieso sollte man sich also nicht per ssh einwĂ€hlen können. Sollte bei deiner Installation auch klappen, ganz egal auf welchem GerĂ€t du deinen iobroker ausfĂŒhrst. Wie das mit deinem Kennwort ist, kann ich dir allerdings nicht sagen. Kenne mich mit fertigen Images nicht aus, hab iobroker manuell installiert.das ist es ja- ich habe die selbe installation - da kann ich mich ohne Ă€nderungen nicht mit dem iobroker -user einlogen - aber ist nicht so wichtig - war nur neugierig
das mit dem alias verstehe ich nicht so wirklich - ein alias in debian wird ja in der .bashrc angelegt z.b.
alias ll='ls -l'ich weiĂ nicht, wie sich iobroker letztlich in das system einloggt. wenn ich im /home/iobroker die .bashrc Ă€ndere und ein alias eingebe, ist das nicht in exec-block verfĂŒgbar. man ist auch nicht standardmĂ€Ăig im /home/iobroker verzeichnis, wenn man den exec ausfĂŒhrt
da muss ein entwickler sagen können, wie das funktioniert und was du wo definieren musst, um ein alias zu verwenden
-
@iphilbln sagte in Apple TV steuern - exec Befehl ohne Funktion:
@liv-in-sky
Mein iobroker lĂ€uft auf einem ganz normalen Debian Lxc Container in meiner Proxmox VE. Wieso sollte man sich also nicht per ssh einwĂ€hlen können. Sollte bei deiner Installation auch klappen, ganz egal auf welchem GerĂ€t du deinen iobroker ausfĂŒhrst. Wie das mit deinem Kennwort ist, kann ich dir allerdings nicht sagen. Kenne mich mit fertigen Images nicht aus, hab iobroker manuell installiert.das ist es ja- ich habe die selbe installation - da kann ich mich ohne Ă€nderungen nicht mit dem iobroker -user einlogen - aber ist nicht so wichtig - war nur neugierig
das mit dem alias verstehe ich nicht so wirklich - ein alias in debian wird ja in der .bashrc angelegt z.b.
alias ll='ls -l'ich weiĂ nicht, wie sich iobroker letztlich in das system einloggt. wenn ich im /home/iobroker die .bashrc Ă€ndere und ein alias eingebe, ist das nicht in exec-block verfĂŒgbar. man ist auch nicht standardmĂ€Ăig im /home/iobroker verzeichnis, wenn man den exec ausfĂŒhrt
da muss ein entwickler sagen können, wie das funktioniert und was du wo definieren musst, um ein alias zu verwenden
@liv-in-sky ach ok, dann hab ich dich falsch verstanden denke ich. Mein default user, den ich zu begin erstellt habe und unter dem ich iobroker installiert habe, heiĂt halt iobroker. FĂŒhrt dieser nicht dann auch den iobroker dann aus? WĂŒrde mich jedenfalls wundern wenn es parallel noch einen User iobroker gibt. WĂ€re mir jedenfalls neu, dass es dann ein anderer User ausfĂŒhrt.
Wenn ich das jetzt richtig gelesen habe, mĂŒsste man eine interactive Shell öffnen und dort dann den Befehl ausfĂŒhren.
Interactive Shell -
@liv-in-sky ach ok, dann hab ich dich falsch verstanden denke ich. Mein default user, den ich zu begin erstellt habe und unter dem ich iobroker installiert habe, heiĂt halt iobroker. FĂŒhrt dieser nicht dann auch den iobroker dann aus? WĂŒrde mich jedenfalls wundern wenn es parallel noch einen User iobroker gibt. WĂ€re mir jedenfalls neu, dass es dann ein anderer User ausfĂŒhrt.
Wenn ich das jetzt richtig gelesen habe, mĂŒsste man eine interactive Shell öffnen und dort dann den Befehl ausfĂŒhren.
Interactive Shell@iphilbln warum musst du das alias verwenden ? könntest du das nicht umgehen ?
-
@iphilbln warum musst du das alias verwenden ? könntest du das nicht umgehen ?
@liv-in-sky meinst du jetzt indem ich den absoluten Pfad verwende oder wie sollte man es umgehen?
-
@liv-in-sky meinst du jetzt indem ich den absoluten Pfad verwende oder wie sollte man es umgehen?
@iphilbln ja genau
-
@iphilbln ja genau
@liv-in-sky wĂŒrde ich halt gerne vermeiden und einen Weg finden das auch mit alias verwenden zu können.
Aber im Notfall geb ich dir recht, könnte man es halt mit dem absoluten Pfad implementieren. -
@liv-in-sky wĂŒrde ich halt gerne vermeiden und einen Weg finden das auch mit alias verwenden zu können.
Aber im Notfall geb ich dir recht, könnte man es halt mit dem absoluten Pfad implementieren.@iphilbln dann frage mal bei @AlCalzone, @apollon77 oder @foxriver76 - vielleicht wissen die entwickler des js-controllers einen trick dafĂŒr, wie man mit dem exec befehl ein alias des linux systems nutzen kann
wenn von den 3en das keiner weiĂ, ....
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden