Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Neuling hat probleme bei Script ausführen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Neuling hat probleme bei Script ausführen

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

      Hallo zusammen

      mal ein grosses lob an alle ,echt ein geiles forum mit verdammt viel info ,und iobroker ist echt ein geiles ding muss ich schon sagen

      bin in kompletter Neuling und habe durch hier schon einige Sachen hin bekommen

      jedoch hab ich ein problem beim Script starten

      als erstes steht bei mir bei javascript0 Adaptereinstellungen keine NPM Module drinnen ,Ist das so ok ?oder muss ich die eintragen ?

      hab dann mal ein script versucht und zwar das

      createState('RolAlleHoch', 'false');

      on("javascript.0.RolAlleHoch", function (obj) {

      if (obj.newState.val === true) {

      setTimeout(function () {

      setState("hm-rpc.0.NEQ0111945.1.LEVEL"/Jalousien/Küche.LEVEL/, 100);

      setTimeout(function () {

      setState("hm-rpc.0.NEQ0111962.1.LEVEL"/Jalousien/Arbeitszimmer.LEVEL/, 100);

      }, 2000);

      }, 2000);

      setState("javascript.0.RolAlleHoch", false);

      }

      });

      wenn ich das aktiviere kommt aber im log immer diese meldung

      javascript-0 2016-07-21 07:46:08.523 info script.js.common.Skript1: registered 1 subscription and 0 schedules

      javascript-0 2016-07-21 07:46:08.511 info Start javascript script.js.common.Skript1

      was mache ich denn da falsch

      kann mir da einer weiter helfen ??

      Danke danke mal an alle im vorraus

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

        Willkommen im Forum - und viel Spaß mit iobroker 🙂

        Du schreibst nicht, was bei Dir schief läuft, bzw was Du erwartest. Die beiden Meldungen sind vollkommen OK.

        registered 1 subscription and 0 schedules

        Bedeutet, dass dein Script ein Object (javascript.0.RolAlleHoch) überwacht, das ist eine Subscription. Außerdem gibt es keine aktionen, die nach bestimmeten Zeitmuster augeführt werden (Schedules)

        Die zweite Meldung besagt, dass Dein Script gestartet ist.

        Um deine Rolladen hoch zu fahren, musst Du den Status deiner Variable auf 'true' setzen. Entweder per script, oder testweise in der 'Object' Ansicht.

        Bei so einfachen Anwesingen musst Du nicht unbedingt mit einem Timer arbeiten. Da gibt es die praktische Funktion

        setStateDelayed('Kitchen.Light.Lamp', true, 1000);// Switch ON the light in the kitchen in one second

        Gruß

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

          @mario66:

          Hallo zusammen

          mal ein grosses lob an alle ,echt ein geiles forum mit verdammt viel info ,und iobroker ist echt ein geiles ding muss ich schon sagen

          bin in kompletter Neuling und habe durch hier schon einige Sachen hin bekommen

          jedoch hab ich ein problem beim Script starten

          als erstes steht bei mir bei javascript0 Adaptereinstellungen keine NPM Module drinnen ,Ist das so ok ?oder muss ich die eintragen ?

          hab dann mal ein script versucht und zwar das

          createState('RolAlleHoch', 'false');

          on("javascript.0.RolAlleHoch", function (obj) {

          if (obj.newState.val === true) {

          setTimeout(function () {

          setState("hm-rpc.0.NEQ0111945.1.LEVEL"/Jalousien/Küche.LEVEL/, 100);

          setTimeout(function () {

          setState("hm-rpc.0.NEQ0111962.1.LEVEL"/Jalousien/Arbeitszimmer.LEVEL/, 100);

          }, 2000);

          }, 2000);

          setState("javascript.0.RolAlleHoch", false);

          }

          });

          wenn ich das aktiviere kommt aber im log immer diese meldung

          javascript-0 2016-07-21 07:46:08.523 info script.js.common.Skript1: registered 1 subscription and 0 schedules

          javascript-0 2016-07-21 07:46:08.511 info Start javascript script.js.common.Skript1

          was mache ich denn da falsch

          kann mir da einer weiter helfen ??

          Danke danke mal an alle im vorraus `

          Herzlich willkommen im Forum,

          die Ausgaben sind völlig ok. Es ist schließlich das Log, das zeigt nicht nur Fehler an, sondern auch, wenn etwas geklappt hat. In diesem Fall wird zusammengefasst: Skript gespeichert, es hat eine Subscription (in deinem Fall auf javascript.0.RolAlleHoch) und eine Zeitsteueung (schedule). Zweite Zeile: Skript gestartet (es wartet jetzt auf das Eintreten der Startzeit für den Schedule-Befehl bzw. auf eine Änderung des Objektes aus der Subscription.

          Für die Zukunft bitte merken: Code und Logausgaben in die Code-Tags packen (der kleine Knopf "Code" hier im Forum-Fenster).

          Dein Skript kann man noch etwas vereinfachen. Bluefox hat den Befehl setStateDelayed(State, Wert, Verzögerung in ms) gebaut. Damit kann man die setTimeout-Gebilde vermeiden.

          Ausserdem den boolean-Standardwert in createState nicht in Häkchen packen, sonst ist das ein String.

          createState('RolAlleHoch', false);
          /* besser
          createState('RolAlleHoch', {
              type: 'boolean',
              def: false
          });
          */
          
          on("javascript.0.RolAlleHoch", function (obj) {
              if (obj.state.val) { // kann so abgekürzt werden. newState = state, "===true" kann man weglassen
                  setStateDelayed("hm-rpc.0.NEQ0111945.1.LEVEL"/*Jalousien/Küche.LEVEL*/, 100, 2000); // Wert 100 nach 2000ms
                  setStateDelayed("hm-rpc.0.NEQ0111962.1.LEVEL"/*Jalousien/Arbeitszimmer.LEVEL*/, 100, 4 * 1000); // Wert 100 nach 4000ms oder 4s
                  setState("javascript.0.RolAlleHoch", false); // wird sofort zurückgestellt, muss nicht abwarten, bis Rollländen gefahren sind
                  log('Alle Rollläden werden hochgefahren'); // optional - damit du siehst, wann das Skript greift.
              }
          });
          

          Der setStateDelayed-Befehl erlaubt auch noch mehr Verschachtelungen. So ist es dann möglich, eine weitere Ausgabe zu starten, sobald der Wert nach der eingestellten Verzögerung gesetzt wurde. Ist aber hier erstmal zu kompliziert. Näheres im Readme vom Javascript Adapter: https://github.com/ioBroker/ioBroker.ja … atedelayed

          Gruß

          Pix

          1 Reply Last reply Reply Quote 0
          • M
            mario66 last edited by

            Hallo OstfrieseUnterwegs Hallo Pix

            Super danke für eure Hilfe

            echt geil es funktioniert

            Danke nochmals an die Profis für die Hilfe

            Gruesse und noch eine schöne Woche

            1 Reply Last reply Reply Quote 0
            • M
              mario66 last edited by

              Habe da noch eine frage

              wie funktioniert das damit der wert nicht gleich wieder auf False zurück fällt sondern erst nachdem die Jalosien unten sind

              möchte das mein Widget während der fahrt der Jalousien auf geänderten zustand bleibt

              Danke

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

                Hallo,

                wenn du die Laufzeit der Rollläden kennst, kannst du natürlich statt

                 setState("javascript.0.RolAlleHoch", false); // wird sofort zurückgestellt, muss nicht abwarten, bis Rollländen gefahren sind
                

                auch diesen Wert verzögert setzen:

                 setStateDelayed("javascript.0.RolAlleHoch", false, 15 * 1000); // wird nach 15s zurückgestellt
                

                Wenn du aber tatsächlich erst bei Level 100% den Wert umstellen willst, musst die die beiden Rollläden-Level überwachen:

                on({id: /.NEQ0111945.1.LEVEL|.NEQ0111962.1.LEVEL$/, // beide Rolläden werden bei Bewegung abgefragt
                    change: 'ne'
                }, function(obj) {
                    if (getState("hm-rpc.0.NEQ0111945.1.LEVEL").val === 100 && getState("hm-rpc.0.NEQ0111962.1.LEVEL").val === 100) setState("javascript.0.RolAlleHoch", false);
                });
                
                

                also zusammen:

                ! createState('RolAlleHoch', false); /* besser createState('RolAlleHoch', { type: 'boolean', def: false }); */ ! on("javascript.0.RolAlleHoch", function (obj) { if (obj.state.val) { // kann so abgekürzt werden. newState = state, "===true" kann man weglassen setStateDelayed("hm-rpc.0.NEQ0111945.1.LEVEL"/*Jalousien/Küche.LEVEL*/, 100, 2000); // Wert 100 nach 2000ms setStateDelayed("hm-rpc.0.NEQ0111962.1.LEVEL"/*Jalousien/Arbeitszimmer.LEVEL*/, 100, 4 * 1000); // Wert 100 nach 4000ms oder 4s log('Alle Rollläden werden hochgefahren'); // optional - damit du siehst, wann das Skript greift. } }); ! on({id: /.NEQ0111945.1.LEVEL|.NEQ0111962.1.LEVEL$/, // beide Rolläden werden bei Bewegung abgefragt change: 'ne' }, function(obj) { if (getState("hm-rpc.0.NEQ0111945.1.LEVEL").val === 100 && getState("hm-rpc.0.NEQ0111962.1.LEVEL").val === 100) setState("javascript.0.RolAlleHoch", false); }); !

                Gruß

                Pix

                1 Reply Last reply Reply Quote 0
                • M
                  mario66 last edited by

                  Hallo Pix

                  mal einen Herzlichen Dank für deine Geduld und Hilfe

                  hab das script ein wenig umbebaut ,leider funktioniert das mit dem Widget noch ned so richtig

                  kommt nur eine kurze bestätigung ,also das script bleibt auf false

                  hab sicher da irgendwo nen fehler drinnen ..vielleicht kannst du noch mal kurz drüber schauen

                  Gruesse Mario66

                  createState('RolAlleHoch', false);
                  /* besser
                  createState('RolAlleHoch', {
                      type: 'boolean',
                      def: false
                  });
                  */
                  
                  on("javascript.0.RolAlleHoch", function (obj) {
                      if (obj.state.val) { // kann so abgekürzt werden. newState = state, "===true" kann man weglassen
                          setStateDelayed("hm-rpc.0.MEQ1309974.1.LEVEL"/*Jalousien/Wohnzimmer TV.LEVEL*/, 100); // Wert 100 
                          setStateDelayed("hm-rpc.0.MEQ1310286.1.LEVEL"/*Jalousien/Wohnzimmer/Strasse.LEVEL*/, 100); // Wert 100
                          setStateDelayed("hm-rpc.0.NEQ0111918.1.LEVEL"/*Jalousien/Esszimmer.LEVEL*/, 100); // Wert 100 
                          log('Alle Rollläden werden hochgefahren'); // optional - damit du siehst, wann das Skript greift.
                      }
                  });
                  
                  on({id: /.MEQ1309974.1.LEVEL|.MEQ1310286.1.LEVEL|.NEQ0111918.1.LEVEL/, // Rolläden werden bei Bewegung abgefragt
                      change: 'ne'
                  }, function(obj) {
                      if (getState("hm-rpc.0.MEQ1309974.1.LEVEL").val === 100 && getState("hm-rpc.0.MEQ1310286.1.LEVEL").val === 100 && 
                      getState("hm-rpc.0.NEQ0111918.1.LEVEL").val === 100) setState("javascript.0.RolAlleHoch", false); 
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  1.2k
                  Online

                  31.7k
                  Users

                  79.7k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  2789
                  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