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. Neuling hat probleme bei Script ausführen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    117

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Neuling hat probleme bei Script ausführen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 3 Kommentatoren 3.0k Aufrufe
  • Ä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.
  • M Offline
    M Offline
    mario66
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • OstfrieseUnterwegsO Offline
      OstfrieseUnterwegsO Offline
      OstfrieseUnterwegs
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          mario66
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            mario66
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                mario66
                schrieb am zuletzt editiert von
                #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 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

                771

                Online

                32.5k

                Benutzer

                81.7k

                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