Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Neuling hat probleme bei Script ausführen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.5k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Neuling hat probleme bei Script ausführen

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 3 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mario66
    wrote on last edited by
    #1

    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
    0
    • OstfrieseUnterwegsO Offline
      OstfrieseUnterwegsO Offline
      OstfrieseUnterwegs
      wrote on last edited by
      #2

      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
      0
      • P Offline
        P Offline
        pix
        wrote on last edited by
        #3

        @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

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mario66
          wrote on last edited by
          #4

          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
          0
          • M Offline
            M Offline
            mario66
            wrote on last edited by
            #5

            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
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #6

              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

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mario66
                wrote on last edited by
                #7

                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
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                644

                Online

                32.7k

                Users

                82.4k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe