Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Befehl wird im Skript nicht ausgeführt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Befehl wird im Skript nicht ausgeführt

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

      Hallo zusammen,

      Bin Neuling im Gebrauch von ioBroker und habe folgende Frage:

      Ein Befehl soll bei Variablenänderung im Skript ausgeführt werden:

      on('hm-rega.0.2764', function (obj) {
      
      current_state = getState("hm-rega.0.2764").val;
      log(current_state)
      
      if (current_state == "true")
          {
              exec('sudo /raspberry-remote/./send 11101 1 1');
          }
      else
          {
              exec('sudo /raspberry-remote/./send 11101 1 0');
          }
      
      });
      

      In der Konsole ausgeführt funktioniert die Funktion send, aber aus dem Skript nicht.

      Das Skript selbst wird aber ausgeführt, habe ich über log geprüft.

      Danke für Tips!

      ModEdit: code bitte in code Blöcke

      1 Reply Last reply Reply Quote 0
      • R
        RappiRN Most Active last edited by

        Für mich als Javascript-Laie sieht es so aus, als wenn dein Trigger nicht vollständig ist. Du triggerst ja scheinbar auf die Änderung der Variable hm-rega.0.2764. :?:

        on({id: "hm-rega.0.2764", change: "ne"}, function (obj) {
        

        So sieht der Trigger aus, wenn ich aus Blockly heraus mir den Code anzeigen lasse. Ob dann der Rest so funktioniert, weiß ich leider nicht. 😞

        Enrico

        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          Der Trigger ist in Orndung, wenn man ohne das "id:" schreibt, wird auf change: ne geprüft meine ich.

          Das Problem dürfte sein, dass der hm-rega nicht ienen String wiedrgibt sondern einen boolschen Ausdruck.

          Daher rate ich mal, dass

           === true 
          

          geht. Also keine Anführungszeichen, drei Gleichzeichen

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @HMuser:

            on('hm-rega.0.2764', function (obj) {
            
            current_state = getState("hm-rega.0.2764").val;
            log(current_state)
            
            if (current_state == "true")
                {
                    exec('sudo /raspberry-remote/./send 11101 1 1');
                }
            else
                {
                    exec('sudo /raspberry-remote/./send 11101 1 0');
                }
            
            });
            ```` `  
            

            dien script geht kuerzer da das geraet bereits durch die function obj weitergegeben wird:

            on('hm-rega.0.2764', function (obj) {
            
            current_state = obj.val;
            log(current_state)
            
            });
            

            was sagt dein log wen du das probierst

            1 Reply Last reply Reply Quote 0
            • H
              HMuser last edited by

              Hallo Dutchman,

              Wenn ich dein Skript einsetze kommt im log „undefined“

              1 Reply Last reply Reply Quote 0
              • H
                HMuser last edited by

                @tempestas:

                Daher rate ich mal, dass

                 === true 
                

                geht. Also keine Anführungszeichen, drei Gleichzeichen `

                Danke für den Hinweis, ist möglicherweise richtig, habe ich mal geändert.

                Wenn die Bedingung nicht erfüllt ist müsste er allerdings in den Else-Teil springen und trotzdem die Funktion send ausführen. Macht er leider nicht…

                1 Reply Last reply Reply Quote 0
                • T
                  tempestas last edited by

                  dutch hatte einen kleinen FEhler:

                  on('hm-rega.0.2764', function (obj) {
                  
                  current_state = obj.state.val;
                  log(current_state)
                  
                  });
                  

                  das state fehlte

                  1 Reply Last reply Reply Quote 0
                  • P
                    pix last edited by

                    Hallo,

                    Um es weiter abzukürzen, kannst du die Abfrage auf true dann so einbauen:

                    on('hm-rega.0.2764', function (obj) {
                    log(obj.state.val)
                    if (obj.state.val) exec('sudo /raspberry-remote/./send 11101 1 1');
                    else exec('sudo /raspberry-remote/./send 11101 1 0');
                    });
                    

                    Gruß

                    Pix

                    1 Reply Last reply Reply Quote 0
                    • H
                      HMuser last edited by

                      Danke für die Hinweise für schlanken Code!

                      Das eigentliche Problem ist aber halt dass ein Programm dass sich in der Konsole ausführen lässt bei Skript Aufruf nichts macht. Kann das an Dateirechten der Programms liegen?

                      Bin wirklich ratlos…

                      1 Reply Last reply Reply Quote 0
                      • P
                        pix last edited by

                        Stimmt denn der Pfad?

                        1 Reply Last reply Reply Quote 0
                        • H
                          HMuser last edited by

                          Also die Datei liegt in /raspberry-remote/. Die Syntax mit ./send habe ich aus mehreren Tutorien so übernommen, funktioniert übrigens genau so in der Konsole nicht: Da muss der . vor den Anfang, also ./raspberry-remote/send/

                          Ich sehe auch keine Fehlermeldung. Kann ich Bei Skriptausführung entstehende Fehler sichtbar machen?

                          1 Reply Last reply Reply Quote 0
                          • H
                            HMuser last edited by

                            War doch der Pfad!

                            Echter Anfängerfehler… :oops:

                            Nachdem ich /home/pi/ davorgestellt habe funktioniert alles einwandfrei!

                            Danke!

                            1 Reply Last reply Reply Quote 0
                            • P
                              pix last edited by

                              @HMuser:

                              Also die Datei liegt in /raspberry-remote/. Die Syntax mit ./send habe ich aus mehreren Tutorien so übernommen, funktioniert übrigens genau so in der Konsole nicht: Da muss der . vor den Anfang, also ./raspberry-remote/send/

                              Ich sehe auch keine Fehlermeldung. Kann ich Bei Skriptausführung entstehende Fehler sichtbar machen? `
                              Ja, das geht.

                              Du müsstest der exec-Ausführung einen callback verpassen. Hier ist ein Beispiel von ruhr70: http://forum.iobroker.net/viewtopic.php … 935#p26547

                              ! Auszug aus dem Code:````
                              function abfrageConsole() {
                              exec(abfrage, function(err, stdout, stderr) { // <--------DAS IST DIE RELEVANTE ZEILE
                              if (err) {
                              log(err,"error");
                              return;
                              }
                              stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen
                              stdout = stdout.split(/ +/g); // array erstellen, Lerzeichen als Trenner

                                  var anzProzesse = (stdout.length-1) / 11;
                              
                                  //log(stdout);
                                  //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse);
                              
                                  var jsonArr = createArrayJson(stdout);
                                  var mem         = Math.floor(getMemAbsolut(jsonArr)/1024);
                                  var cpu         = Math.floor(getCpu(jsonArr)*10)/10;
                                  var memPercent  = Math.floor(getMem(jsonArr)*10)/10;
                              

                              ! setState(idProzesse ,writeJson(jsonArr));
                              setState(idMemAll ,mem);
                              setState(idAnzProzesse ,anzProzesse);
                              setState(idCpuAll ,cpu);
                              setState(idMemPercent ,memPercent);
                              });
                              }

                              
                              Gruß
                              
                              Pix
                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              665
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              5
                              13
                              1500
                              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