Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript "startSkript" startet Skript doppelt

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Javascript "startSkript" startet Skript doppelt

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @bahnuhr last edited by

      @bahnuhr 🙂

      Ich predige das eigentlich seit 2020. true > false 🙂

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Asgothian last edited by

        @asgothian sagte in Javascript "startSkript" startet Skript doppelt:

        true > false

        @bahnuhr
        ist einfache binäre (bool'sche) Algebra!
        false = 0
        true = 1

        bahnuhr 1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active @Homoran last edited by

          @homoran sagte in Javascript "startSkript" startet Skript doppelt:

          false = 0
          true = 1

          Ja, das ist klar.

          Aber dass dies seit 5 Jahre schon gepredigt wurde ist mir nicht bekannt.
          Und ich lese täglich 2-4 Stunden hier im Forum.

          Muss an mir vorbei gegangen sein.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @bahnuhr last edited by

            @bahnuhr sagte in Javascript "startSkript" startet Skript doppelt:

            Aber dass dies seit 5 Jahre schon gepredigt wurde ist mir nicht bekannt.

            spätestens bei Blockly wird immer wieder darauf hingewiesen den Trigger auf ist größer/ kleiner als letztes zu nehmen um eindeutigere Trigger zu erhalten und weitere Prüfungen in der folgenden Logik einzusparen

            bahnuhr 1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @Homoran last edited by

              @homoran sagte in Javascript "startSkript" startet Skript doppelt:

              Blockly

              ach deshalb 😉

              ich nehm JS und kein Blockly

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @bahnuhr last edited by

                @bahnuhr sagte in Javascript "startSkript" startet Skript doppelt:

                ich nehm JS und kein Blockly

                Weiß ich!
                Den entsprechenden Satz dazu hatte ich wieder gelöscht 😁

                1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @Boronsbruder last edited by ticaki

                  @boronsbruder sagte in Javascript "startSkript" startet Skript doppelt:

                  startet das Skript doppelt!
                  Warum? Ich hab keine Ahnung...

                  Nehmen wir mal an im Javascript adapter steht:

                  for (let a=0; a<alleScriptDieTriggern.length; a++) {
                  

                  und du rufst jetzt synchron im Trigger die funktion

                  alleScriptDieTriggern.push()
                  

                  auf. Das starten eines Skripts mit Trigger ist ja nix anderes.
                  Dann wäre es möglich das ein await irgendwo deinem Skript die Zeit verschaft da einen Eintrag rein zu moggeln so das length+1 geht.

                  Wobei es dann am ende steht und die chance, dass da nochmal genug zeit ist, eher niedrig - daher löst dieser Trigger nur einmal aus.

                  Aber nur vermutung.

                  1 Reply Last reply Reply Quote 0
                  • Boronsbruder
                    Boronsbruder @Asgothian last edited by

                    @asgothian

                    Das ist das komplette Skript (mit der Debug-Zeile und dem "Fehler" mit nur runskript ohne Timeout

                    //Definitionen
                            const sDPFrost = '0_userdata.0.Wetter.aktuell.Frost';
                            const aDP_Frost_Devices=['hm-rpc.0.00089D89BA198D.3.STATE','hm-rpc.0.00089D89A1686E.4.STATE','hm-rpc.0.00089F29B112F6.3.STATE']; //Pumpe Zisterne, Moorbeet, Teich => aus wenn Frost, weil Kanäle und-verknüpft
                            const sDP_SensorIBC1 = 'hm-rpc.0.001F1A4990B273.1.STATE'; // Pegelschalter IBC voll
                            
                            const titel = "RaspMatic Reboot";
                            var msg = 'Frost aktualisiert ' + '\n\r';
                            
                            
                            // Trigger RaspMatic nach Reboot
                            
                            function sendMsg(pushmsg){
                                    
                                sendTo("pushover", {
                                    message:  pushmsg , // mandatory - your text message
                                    title: titel, // optional - your message's title, otherwise your app's name is used
                                    //sound: 'magic', // optional - the name of one of the sounds supported by device clients to override the user's default sound choice
                                        // pushover, bike, bugle, cashregister, classical, cosmic, falling,
                                        // gamelan, incoming, intermission, magic, mechanical, pianobar, siren,
                                        // spacealarm, tugboat, alien, climb, persistent, echo, updown, none
                                    priority: -1 // optional
                                        // -1 to always send as a quiet notification,
                                        // 1 to display as high-priority and bypass the user's quiet hours, or
                                        // 2 to also require confirmation from the user
                                });
                            };
                            
                            on ({id: 'hm-rega.0.950', change: 'lt'}, function(data){ //Variable "CCU im Reboot" von RaspMatic
                              //  if (!data.state.val) // CCU nicht mehr im Reboot
                              //  {
                                  console.log(data);
                                    var bFrost = getState(sDPFrost).val;
                            
                                    // Frost initialisieren
                                    aDP_Frost_Devices.forEach (id => {
                                        setState(id, !bFrost);
                                        msg += '-- ' + id + ' : ' + !bFrost +'\n\r';
                                    });
                            
                                    // IBC Pegel initialisieren
                                    var bIBC_voll = getState(sDP_SensorIBC1).val;
                                    setState('0_userdata.0.Bewässerung.IBC.Pegel_voll', bIBC_voll);
                                        msg += ' -- IBC Pegel voll : ' + bIBC_voll + '\n\r';
                                    
                                    //Bewässerung reinit => Ventil-Steuerung-Skript neutstarten
                                    stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                                        //setTimeout( ()=> {runScript('common.Bewässerung.Ventil_Steuerung')},1000);
                                        runScript('common.Bewässerung.Ventil_Steuerung');
                                    });
                                    
                                        msg += ' -- Reinit Venti-Überwachung \n\r';
                            
                                    // Info über Boot loggen
                                    console.warn ("[Raspimatic-Boot] " + msg);
                                    sendMsg(msg);
                                    
                            
                               // }
                            });
                    

                    Es gibt nur eine Ausgabe ->

                    EventObj {
                      id: 'hm-rega.0.950',
                      newState: {
                        val: false,
                        ts: 1757669894412,
                        ack: false,
                        lc: 1757669894412,
                        from: 'system.adapter.admin.0',
                        q: 0,
                        c: undefined,
                        user: 'system.user.admin'
                      },
                      oldState: {
                        val: true,
                        ts: 1757669892106,
                        ack: true,
                        lc: 1757669888017,
                        from: 'system.adapter.hm-rega.0',
                        q: 0,
                        c: undefined,
                        user: 'system.user.admin'
                      },
                      state: {
                        val: false,
                        ts: 1757669894412,
                        ack: false,
                        lc: 1757669894412,
                        from: 'system.adapter.admin.0',
                        q: 0,
                        c: undefined,
                        user: 'system.user.admin'
                      }
                    }
                    

                    aber das Skript startet wieder 2x:

                    javascript.0	2025-09-12 11:38:15.492	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung (Javascript/js)
                    javascript.0	2025-09-12 11:38:14.589	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung (Javascript/js)
                    

                    Und beide gestartet Skripts laufen dann parallel weiter...

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @Boronsbruder last edited by

                      @boronsbruder

                      Hast du mal den javascript-adapter neu gestartet? Im Hintergrund laufende Skript bekommst du nicht durch abschalten weg.

                      Boronsbruder 1 Reply Last reply Reply Quote 0
                      • Boronsbruder
                        Boronsbruder @ticaki last edited by

                        @ticaki
                        Das weiß ich und hab ich auch.
                        Das "Problem" bzw. die Frage ist warum das Skript doppelt startet 😉

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer @Boronsbruder last edited by ticaki

                          @boronsbruder

                          Das wäre eine der antwortmöglichkeiten gewesen - wenns 2 mal läuft könnte es auch 2 mal gestartet werden.

                          Hatte das selbe Problem schon vor 4 Jahren und noch immer keine Antwort ausser einem großzügigem Timeout vor dem restart - ich hatte da teils 10 Sekunden drin. 🙂 Wenn dein Skript nicht mehr enthält als du hier gezeigt hast, fällt mir kein Grund ein.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          880
                          Online

                          32.1k
                          Users

                          80.6k
                          Topics

                          1.3m
                          Posts

                          7
                          23
                          310
                          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