Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Apple TV steuern - exec Befehl ohne Funktion

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Apple TV steuern - exec Befehl ohne Funktion

    This topic has been deleted. Only users with topic management privileges can see it.
    • iPhilBln
      iPhilBln last edited by iPhilBln

      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.
      Bildschirmfoto 2022-08-14 um 00.57.20.png
      Daher meine Frage wo in meinem Skript der Fehler liegt?
      Quellcode

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @iPhilBln last edited by

        @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 1 Reply Last reply Reply Quote 0
        • iPhilBln
          iPhilBln @liv-in-sky last edited by

          @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 atvscript Befehlen, 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.

          SBorg liv-in-sky 2 Replies Last reply Reply Quote 0
          • SBorg
            SBorg Forum Testing Most Active @iPhilBln last edited by

            @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?

            Bild 001.png

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @iPhilBln last edited by

              @iphilbln

              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/4

              wie 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:

              Image 019.png

              Image 020.png

              1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @SBorg last edited by

                @sborg

                Der Punkt exec Kommando ausführen ist im javascript Adapter aktiviert - steht oben 🙂

                SBorg iPhilBln 2 Replies Last reply Reply Quote 1
                • SBorg
                  SBorg Forum Testing Most Active @liv-in-sky last edited by

                  @liv-in-sky sagte in Apple TV steuern - exec Befehl ohne Funktion:

                  @sborg

                  Der Punkt exec Kommando ausführen ist im javascript Adapter aktiviert - steht oben 🙂

                  ...doch glatt wieder überlesen 🤦‍♂️

                  1 Reply Last reply Reply Quote 0
                  • iPhilBln
                    iPhilBln @liv-in-sky last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • iPhilBln
                      iPhilBln last edited by iPhilBln

                      @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:
                      Bildschirmfoto 2022-08-14 um 22.04.11.png
                      Hier in Blockly, wo das Ergebnis leer bleibt:
                      Bildschirmfoto 2022-08-14 um 22.04.41.png

                      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.
                      Bildschirmfoto 2022-08-14 um 22.22.42.png
                      Bildschirmfoto 2022-08-14 um 22.33.33.png

                      Die Frage ist jetzt, wie man mithilfe von exec den Kurzbefehel atvscript ausfü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 iPhilBln 2 Replies Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @iPhilBln last edited by

                        @iphilbln

                        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
                        iPhilBln 1 Reply Last reply Reply Quote 0
                        • SBorg
                          SBorg Forum Testing Most Active last edited by

                          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 daten
                          
                          

                          Dann Blockly:
                          Bild 001.png

                          Funktioniert (kpl. Pfadangabe + Extension) 🙂

                          1 Reply Last reply Reply Quote 1
                          • iPhilBln
                            iPhilBln last edited by

                            Ich glaube das habt ihr jetzt falsch verstanden. Das Ausführen des Skripts über den absoluten Pfad klappt einwandfrei. Es hakt dabei, dass Skript über sein Alias anzusprechen bzw. auszuführen.

                            1 Reply Last reply Reply Quote 0
                            • iPhilBln
                              iPhilBln @liv-in-sky last edited by

                              @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 1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @iPhilBln last edited by

                                @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 1 Reply Last reply Reply Quote 0
                                • iPhilBln
                                  iPhilBln @liv-in-sky last edited by

                                  @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 1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @iPhilBln last edited by

                                    @iphilbln warum musst du das alias verwenden ? könntest du das nicht umgehen ?

                                    iPhilBln 1 Reply Last reply Reply Quote 0
                                    • iPhilBln
                                      iPhilBln @liv-in-sky last edited by

                                      @liv-in-sky meinst du jetzt indem ich den absoluten Pfad verwende oder wie sollte man es umgehen?

                                      liv-in-sky 1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @iPhilBln last edited by

                                        @iphilbln ja genau

                                        iPhilBln 1 Reply Last reply Reply Quote 0
                                        • iPhilBln
                                          iPhilBln @liv-in-sky last edited by

                                          @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 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @iPhilBln last edited by

                                            @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ß, ....

                                            iPhilBln apollon77 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            614
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            34
                                            2793
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo