Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Phyton über JavaScript starten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    973

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    693

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

[Frage] Phyton über JavaScript starten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 7 Kommentatoren 7.4k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    Blacki
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    ich haben seit einigen Tagen iobroker auf meinen Rpi laufen und versuche gerade einige meiner alten python scripte über den JavaScript Adapter zum laufen zu bringen.

    Im konkrten Fall versuche ich eine WiFi-Steckdose zu starten (das py script funzt einwandfrei).

    Beim Versuch das script über den JavaScript-Adapter zu starten scheitere ich jedoch kläglich.

    Im Forum hatte ich dazu folgenden code gefunden.

    createState('startPython');
    on({id: 'startPython', change: 'any'}, function (obj) {
       if (obj.newState.val === 'true' || obj.newState.val === true) {
         var python = require('child_process').spawn('python',
         // second argument is array of parameters, e.g.:
         ["/homescripts/light/MasterLightOn.py"]);
         python.stdout.on('data', function(){ log(data); });
         python.on('close', function(code){ 
           if (code !== 0) {  
                 log('Error: ' + code); 
           } else {
                 log('OK');
           }
         });
    
      }
    });
    

    Leider funzt das nicht. Kann mir jemand sagen was ich da falsch mache?

    Danke

    Blacki

    1 Antwort Letzte Antwort
    0
    • arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      was ist damit

      exec("sudo python /pfad/zu/script/script.py", function(err, stdout, stderr) {

      });

      
      createState('startPython');
      
      on({id: 'startPython', change: 'any'}, function (obj) {
         if (obj.newState.val === 'true' || obj.newState.val === true) {
            exec("sudo python /homescripts/light/MasterLightOn.py", function(err, stdout, stderr) {
      
            });
        }
      });
      

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        Blacki
        schrieb am zuletzt editiert von
        #3

        Hallo arteck,

        erstmal Danke für Dein feedback. Leider schaltet sich die Steckdose immer noch nicht an.

        Vielleicht bin ich auch auf dem komplett falschen Trip:

        Zunächst hatte ich das py script auf den Rpi gepackt. Mit "python3 homescripts/light/MasterLightOn.py"

        kann ich die Dose dann auch aktivieren.

        Mein nächster Schritt ist nun über JavaScript die Verbindung mit iobroker herzustellen.

        Mein Verständnis des Vorgehens war, dass man zunächst einen State erzeugt.

        Das JS reagiert auf eine Statusänderung und stößt das PY Script an.

        Die Statusänderungen habe ich bislang über den Reiter "Objekt" manuell gemacht (vlt. ist das der Fehler)

        Bei der Umstellung von false auf true passiert aber nix.

        Danach wollte ich ein JS mit setState erstellen und diesen in CloudAdapter bzw. in VIS einbinden.

        Wäre das prinzipiell richtig?

        Danke & Gruß

        Blacki

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @Blacki:

          Mit "python3 homescripts/light/MasterLightOn.py" kann ich die Dose dann auch aktivieren. `
          Dann muss das auch so in exec()

                exec("python3 /homescripts/light/MasterLightOn.py", function(err, stdout, stderr) {
                    if(err) log('Exec-Fehler: '+ stderr, 'error'); 
          
          

          Ist das Verzeichnis "homescripts" ein root-Verzeichnis ?

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • B Offline
            B Offline
            Blacki
            schrieb am zuletzt editiert von
            #5

            Hallo Paul,

            hab den Code geändert.

            createState('startPython');
            
            on({id: 'startPython', change: 'any'}, function (obj) {
               if (obj.newState.val === 'true' || obj.newState.val === true) {
                  exec("python3 /homescripts/light/MasterLightOn.py", function(err, stdout, stderr) {
            
                  });
              }
            });
            
            

            Dann über Objekte Wert von StartPython auf "true" gesetzt. Keine Wirkung.

            Ja ist ein root Verzeichnis.

            Danke

            Blacki

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              Hättest Du auch die Zeile mit dem error log übernommen, würdest Du vielleicht im Log sehen, worin der Fehler liegt.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                Blacki
                schrieb am zuletzt editiert von
                #7

                Asche auf mein Haupt. Vergessen. Klassicher Fail.

                Die Datei wird nicht gefunden…

                javascript.0 script.js.MasterLightOn: Exec-Fehler: python3: can't open file '/homescripts/light/MasterLightOn.py': [Errno 2] No such file or directory

                Der Pfad ist richtig. Muss ich die IP davorstellen, oder so?

                Danke

                Blacki

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @Blacki:

                  Der Pfad ist richtig. `
                  Sicher ? Oder glaubst Du, dass python lügt ?
                  @Blacki:

                  Muss ich die IP davorstellen, oder so? `
                  Was soll da eine IP ? ioBroker läuft doch auf dem Rechner, auf dem Du das Kommando per Terminal erfolgreich ausführtst ?

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • B Offline
                    B Offline
                    Blacki
                    schrieb am zuletzt editiert von
                    #9

                    Hallo Paul,

                    Der komplette Pfad wie in Putty angezeigt:

                    pi@ioBroker-RasPi:~ $ python3 homescripts/light/MasterLightOn.py

                    Dieser Befehl funzt. Ich steh auf der Leitung bzw. bin zu blöd.

                    Gruß

                    Blacki
                    2613_screen.jpg

                    1 Antwort Letzte Antwort
                    0
                    • Jey CeeJ Online
                      Jey CeeJ Online
                      Jey Cee
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      @Blacki:

                      exec("python3 /homescripts/light/MasterLightOn.py", function(err, stdout, stderr) `
                      Wenn das die Zeile ist wie du sie jetzt verwendest und das
                      @Blacki:

                      python3 homescripts/light/MasterLightOn.py `
                      der Pfad ist wie er sein sollte, dann ist da vielleicht einfach das "/" vor homescripts zu viel.

                      Persönlicher Support
                      Spenden -> paypal.me/J3YC33

                      1 Antwort Letzte Antwort
                      0
                      • B Offline
                        B Offline
                        Blacki
                        schrieb am zuletzt editiert von
                        #11

                        Hallo Jey Cee,

                        Das hatte ich auch schon probiert bzw.

                        Ich teste grad per try&error dieMöglichkeiten durch.

                        Irgendwas passt da nicht.

                        Gruß

                        Blacki

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

                          Vielleicht ein Zugriffsrechte-Problem ? Setze mal die Datei "MasterLightOn.py" für alle User auf lesbar und ausführbar.
                          493_py_rechte.jpg

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • B Offline
                            B Offline
                            Blacki
                            schrieb am zuletzt editiert von
                            #13

                            Hallo Paul,

                            Erstmal Danke für den Tipp. Habe jetzt ein paar Stunden alles durchprobiert.

                            Das Js findet die Datei einfach nicht. Daher mal ein Grundsatzfrage.

                            Die Datei und iobroker laufen auf dem gleichen Pi. Kann der iobroker Zugriffsrechte vorausgesetzt

                            Auf das gesamt Filesystem zugreifen oder muss die Datei an speziellen Orten liegen (root,)

                            Danke

                            Blacki

                            1 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #14

                              @Blacki:

                              Kann der iobroker Zugriffsrechte vorausgesetzt

                              Auf das gesamt Filesystem zugreifen oder muss die Datei an speziellen Orten liegen (root,) `
                              Die Exec-Funktion des JS-Adapters kann auf alle Dateien zugreifen, wenn der angegebene Pfad stimmt und entsprechende Zugriffsrechte existieren. Laut Fehlerlog wird beim Aufruf über exec() python3 auch ausgeführt, python3 meckert allerdings, dass das Skript nicht gefunden wird.

                              javascript.0 script.js.MasterLightOn: Exec-Fehler: python3: can't open file '/homescripts/light/MasterLightOn.py': [Errno 2] No such file or directory 
                              

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • arteckA Offline
                                arteckA Offline
                                arteck
                                Developer Most Active
                                schrieb am zuletzt editiert von
                                #15

                                das ist nicht der komplette pfad

                                das ist bestimmt /home/pi/homescripts/light/MasterLightOn.py

                                wo landest du im Putty im welchen ordner auf dem PI???

                                mach cd ..

                                und dann ls

                                poste das screenshot

                                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                1 Antwort Letzte Antwort
                                0
                                • D Offline
                                  D Offline
                                  derrapf
                                  schrieb am zuletzt editiert von
                                  #16

                                  Hi

                                  Ich weiss zwar nicht ob Du schon eine Lösung hast, aber Dein Problem wird sein dass python nicht gefunden wird. Du musst den Pfad zu python noch mit angeben. Findest Du leicht raus in dem Du auf der Console which python3 eingibst.

                                  Angenommen phyton3 ist unter /usr/bin/python installiert dann musst Du schreiben:

                                  ...
                                  exec("/usr/bin/python3 /homescripts/light/MasterLightOn.py", function(err, stdout, stderr) {...
                                  ...
                                  
                                  

                                  Gruss Ralf

                                  1 Antwort Letzte Antwort
                                  0
                                  • BluefoxB Offline
                                    BluefoxB Offline
                                    Bluefox
                                    schrieb am zuletzt editiert von
                                    #17

                                    @arteck:

                                    das ist nicht der komplette pfad

                                    das ist bestimmt /home/pi/homescripts/light/MasterLightOn.py

                                    wo landest du im Putty im welchen ordner auf dem PI???

                                    mach cd ..

                                    und dann ls

                                    poste das screenshot `
                                    Das ist richtiger Tipp.

                                    1 Antwort Letzte Antwort
                                    0
                                    • C Offline
                                      C Offline
                                      Chuckwallas
                                      schrieb am zuletzt editiert von
                                      #18

                                      Hallo,
                                      bevor ich einen neuen Thread eröffne, möchte ich hier anknüpfen.

                                      Auch ich habe ein Python Script auf meinem Raspberry und ich bekomme das mit dem oben aufgeführten JavaScript zum laufen. Mein Skript startet einen Motor, bzw. ein Relais, und schaltet es nach 10 Sekunden wieder ab. Wenn ich den State auf True setze, wird auch ordentlich das Skript gestartet. (Als das geklappt hat, hab ich vor Freude fast den Schreibtisch umgeworfen, da ich mit Java vorher eigentlich noch nie was zu tun hatte).

                                      Kann ich den State auch automatisch von True auf False zurück ändern lassen? Hintergrund ist nun der, dass ich das Objekt in Vis mit einem Button verknüpft habe, und wenn ich den toggle, ändert sich der Status korrekter Weise auf True, aber da bleibt er dann auch. Ich könnte über den Button auch erst wieder auf False umschalten, aber ich fände es schöner wenn ich am Button auch sehen kann, dass der Vorgang am Motor nach 10 Sekunden beendet wurde.

                                      Vielen Dank im Voraus
                                      vg

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      907

                                      Online

                                      32.6k

                                      Benutzer

                                      82.0k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe