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. Javascript "startSkript" startet Skript doppelt

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Javascript "startSkript" startet Skript doppelt

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
23 Beiträge 7 Kommentatoren 1.2k Aufrufe 4 Watching
  • Ä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.
  • BoronsbruderB Boronsbruder

    Ich habe einen Trigger in einem Überwachungsskript das, nach dem die CCU gebootet hat, bestimmte Datenpunkte aktualisieren soll.
    Dieses Skript soll auch ein Skript neustarten, welches die Ventile meine Bewässerungsanlage steuert.

    Jetzt habe ich folgendes Problem:
    Es wird das Skript immer doppelt gestartet.

    on ({id: 'hm-rega.0.950', change: 'ne'}, function(data){ //Variable "CCU im Reboot" von RaspMatic
        if (!data.state.val) // CCU nicht mehr im Reboot
        {
            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
            
            startScript('common.Bewässerung.Ventil_Steuerung', false);
                msg += ' -- Reinit Venti-Überwachung \n\r';
    
            // Info über Boot loggen
            console.warn ("[Raspimatic-Boot] " + msg);
            sendMsg(msg);
            
    
        }
    });
    
    javascript.0  2025-09-07 17:24:31.109	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung
    javascript.0  2025-09-07 17:24:32.049	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung
    

    mit dem "false"-Flag sollte das Skript ja eigentlich neugestartet werden, wenn es läuft, oder?

    Ich hatte auch schon einen "console.log" eingebaut. Der Teil wird nur 1x ausgelöst.

    Was übersehe ich?

    M Online
    M Online
    MCU
    schrieb am zuletzt editiert von
    #2

    @boronsbruder Würde runscript nutzen, aussdem erst nach sendMSG setzen, sonst wird die Nachricht nicht gesendet?

    setTimeout(function(){
         runScript()
    },2000)
    

    NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
    Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

    1 Antwort Letzte Antwort
    0
    • ofri2607O Online
      ofri2607O Online
      ofri2607
      schrieb am zuletzt editiert von
      #3

      @boronsbruder
      Versuch mal in der Subscribtion anstelle

      change: „ne“
      

      durch

      val: false
      

      auszutauschen.
      Damit benötigst du dann deine erste if-Abfrage nicht mehr.

      Ich habe hin und wieder auch schon für mich nicht ganz nachvollziehbare Verhalten bei change: „ne“ gehabt, sodass ich immer versuche explizit auf den gewünschten Wert in der Subscription abzufragen.

      AsgothianA 1 Antwort Letzte Antwort
      0
      • ofri2607O ofri2607

        @boronsbruder
        Versuch mal in der Subscribtion anstelle

        change: „ne“
        

        durch

        val: false
        

        auszutauschen.
        Damit benötigst du dann deine erste if-Abfrage nicht mehr.

        Ich habe hin und wieder auch schon für mich nicht ganz nachvollziehbare Verhalten bei change: „ne“ gehabt, sodass ich immer versuche explizit auf den gewünschten Wert in der Subscription abzufragen.

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von Asgothian
        #4

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

        @boronsbruder
        Versuch mal in der Subscribtion anstelle

        change: „ne“
        

        durch

        val: false
        

        auszutauschen.
        Damit benötigst du dann deine erste if-Abfrage nicht mehr.

        Ich habe hin und wieder auch schon für mich nicht ganz nachvollziehbare Verhalten bei change: „ne“ gehabt, sodass ich immer versuche explizit auf den gewünschten Wert in der Subscription abzufragen.

        Davon rate ich dringend ab. Wenn schon die if-abfrage verzichtet werden soll, dann bitte mit

        change:"lt"
        

        Das triggert ausschliesslich auf den Wechsel von False auf True. True auf False.

        A.
        Edit - Fehlerbehebung.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        ofri2607O 1 Antwort Letzte Antwort
        0
        • BoronsbruderB Boronsbruder

          Ich habe einen Trigger in einem Überwachungsskript das, nach dem die CCU gebootet hat, bestimmte Datenpunkte aktualisieren soll.
          Dieses Skript soll auch ein Skript neustarten, welches die Ventile meine Bewässerungsanlage steuert.

          Jetzt habe ich folgendes Problem:
          Es wird das Skript immer doppelt gestartet.

          on ({id: 'hm-rega.0.950', change: 'ne'}, function(data){ //Variable "CCU im Reboot" von RaspMatic
              if (!data.state.val) // CCU nicht mehr im Reboot
              {
                  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
                  
                  startScript('common.Bewässerung.Ventil_Steuerung', false);
                      msg += ' -- Reinit Venti-Überwachung \n\r';
          
                  // Info über Boot loggen
                  console.warn ("[Raspimatic-Boot] " + msg);
                  sendMsg(msg);
                  
          
              }
          });
          
          javascript.0  2025-09-07 17:24:31.109	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung
          javascript.0  2025-09-07 17:24:32.049	info	Start JavaScript script.js.common.Bewässerung.Ventil_Steuerung
          

          mit dem "false"-Flag sollte das Skript ja eigentlich neugestartet werden, wenn es läuft, oder?

          Ich hatte auch schon einen "console.log" eingebaut. Der Teil wird nur 1x ausgelöst.

          Was übersehe ich?

          BoronsbruderB Offline
          BoronsbruderB Offline
          Boronsbruder
          schrieb am zuletzt editiert von Boronsbruder
          #5

          Also, das mit change: 'lt' hab ich mal präventiv getestet. (@Asgothian du meintest sicher: triggert von TRUE auf FALSE - nur um keine Fehler reinzubringen)
          Die Sache ist die, es wird immer nur das startSkript doppelt ausgeführt. Die anderen Teile sendMsg und der ConsolenOutput werden korrekt einmal ausgeführt.

          Die Lösung ist folgende:

                  stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                      setTimeout( ()=> {runScript('common.Bewässerung.Ventil_Steuerung')},1000);
                  });
          

          Selbst ohne den Timeout also mit

                   stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                      runScript('common.Bewässerung.Ventil_Steuerung');
                  });
          

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

          AsgothianA T 3 Antworten Letzte Antwort
          0
          • BoronsbruderB Boronsbruder

            Also, das mit change: 'lt' hab ich mal präventiv getestet. (@Asgothian du meintest sicher: triggert von TRUE auf FALSE - nur um keine Fehler reinzubringen)
            Die Sache ist die, es wird immer nur das startSkript doppelt ausgeführt. Die anderen Teile sendMsg und der ConsolenOutput werden korrekt einmal ausgeführt.

            Die Lösung ist folgende:

                    stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                        setTimeout( ()=> {runScript('common.Bewässerung.Ventil_Steuerung')},1000);
                    });
            

            Selbst ohne den Timeout also mit

                     stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                        runScript('common.Bewässerung.Ventil_Steuerung');
                    });
            

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

            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von
            #6

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

            triggert von TRUE auf FALSE - nur um keine Fehler reinzubringen

            korrekt, mein Fehler.

            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

            1 Antwort Letzte Antwort
            0
            • BoronsbruderB Boronsbruder

              Also, das mit change: 'lt' hab ich mal präventiv getestet. (@Asgothian du meintest sicher: triggert von TRUE auf FALSE - nur um keine Fehler reinzubringen)
              Die Sache ist die, es wird immer nur das startSkript doppelt ausgeführt. Die anderen Teile sendMsg und der ConsolenOutput werden korrekt einmal ausgeführt.

              Die Lösung ist folgende:

                      stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                          setTimeout( ()=> {runScript('common.Bewässerung.Ventil_Steuerung')},1000);
                      });
              

              Selbst ohne den Timeout also mit

                       stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                          runScript('common.Bewässerung.Ventil_Steuerung');
                      });
              

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

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von
              #7

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

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

              bitte mal eine Debug ausgäbe in den Trigger, mit Angabe der Quelle und so weiter. Schauen ob der Trigger 2 mal kommt.

              A.

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              BoronsbruderB 1 Antwort Letzte Antwort
              0
              • AsgothianA Asgothian

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

                @boronsbruder
                Versuch mal in der Subscribtion anstelle

                change: „ne“
                

                durch

                val: false
                

                auszutauschen.
                Damit benötigst du dann deine erste if-Abfrage nicht mehr.

                Ich habe hin und wieder auch schon für mich nicht ganz nachvollziehbare Verhalten bei change: „ne“ gehabt, sodass ich immer versuche explizit auf den gewünschten Wert in der Subscription abzufragen.

                Davon rate ich dringend ab. Wenn schon die if-abfrage verzichtet werden soll, dann bitte mit

                change:"lt"
                

                Das triggert ausschliesslich auf den Wechsel von False auf True. True auf False.

                A.
                Edit - Fehlerbehebung.

                ofri2607O Online
                ofri2607O Online
                ofri2607
                schrieb am zuletzt editiert von
                #8

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

                Davon rate ich dringend ab.

                Was ist der Grund, warum du von eine Variante mit „val: false“ dringend abrätst?
                Ich habe es in der Form des Öfteren in meinen Skript‘s problemlos und mit dem jew. gewünschten Ergebnis am Laufen; bin aber auch alles andere als ein Profi. Daher wäre, um daraus zu Lernen, der Hintergrund für mich interessant.

                AsgothianA 1 Antwort Letzte Antwort
                0
                • ofri2607O ofri2607

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

                  Davon rate ich dringend ab.

                  Was ist der Grund, warum du von eine Variante mit „val: false“ dringend abrätst?
                  Ich habe es in der Form des Öfteren in meinen Skript‘s problemlos und mit dem jew. gewünschten Ergebnis am Laufen; bin aber auch alles andere als ein Profi. Daher wäre, um daraus zu Lernen, der Hintergrund für mich interessant.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  schrieb am zuletzt editiert von Asgothian
                  #9

                  @ofri2607 Ganz einfach:

                  val:false reagiert sowohl auf Änderungen von true auf false, als auch auf Aktualisierungen (sprich wenn false einfach noch einmal in den DP geschrieben wird. Z.Bsp. wenn dahinter liegende Logik sich initialisiert) oder etwas bestätigt wird.

                  Meistens ist das ungewünscht. Deswegen triggere ich boolean states zumeist auf greater than (fuer true) und less than fuer false)

                  A.

                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                  bahnuhrB 1 Antwort Letzte Antwort
                  2
                  • AsgothianA Asgothian

                    @ofri2607 Ganz einfach:

                    val:false reagiert sowohl auf Änderungen von true auf false, als auch auf Aktualisierungen (sprich wenn false einfach noch einmal in den DP geschrieben wird. Z.Bsp. wenn dahinter liegende Logik sich initialisiert) oder etwas bestätigt wird.

                    Meistens ist das ungewünscht. Deswegen triggere ich boolean states zumeist auf greater than (fuer true) und less than fuer false)

                    A.

                    bahnuhrB Online
                    bahnuhrB Online
                    bahnuhr
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #10

                    @asgothian

                    ich benutze dann sowas:

                    change: "ne", val: false
                    

                    Müsste doch genauso funktionieren.
                    Also bei Veränderung und val = false


                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                    Danke.
                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                    ScreenToGif :https://www.screentogif.com/downloads.html

                    AsgothianA 1 Antwort Letzte Antwort
                    0
                    • bahnuhrB bahnuhr

                      @asgothian

                      ich benutze dann sowas:

                      change: "ne", val: false
                      

                      Müsste doch genauso funktionieren.
                      Also bei Veränderung und val = false

                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      schrieb am zuletzt editiert von
                      #11

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

                      @asgothian

                      ich benutze dann sowas:

                      change: "ne", val: false
                      

                      Müsste doch genauso funktionieren.
                      Also bei Veränderung und val = false

                      ja, Aber warum 2x prüfen wenn 1x reicht ?

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      bahnuhrB 1 Antwort Letzte Antwort
                      0
                      • AsgothianA Asgothian

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

                        @asgothian

                        ich benutze dann sowas:

                        change: "ne", val: false
                        

                        Müsste doch genauso funktionieren.
                        Also bei Veränderung und val = false

                        ja, Aber warum 2x prüfen wenn 1x reicht ?

                        bahnuhrB Online
                        bahnuhrB Online
                        bahnuhr
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #12

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

                        ja, Aber warum 2x prüfen wenn 1x reicht ?

                        weil ich das andere nicht gewusst habe und mir es so logischer war ;-)


                        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                        Danke.
                        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                        ScreenToGif :https://www.screentogif.com/downloads.html

                        AsgothianA 1 Antwort Letzte Antwort
                        0
                        • bahnuhrB bahnuhr

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

                          ja, Aber warum 2x prüfen wenn 1x reicht ?

                          weil ich das andere nicht gewusst habe und mir es so logischer war ;-)

                          AsgothianA Offline
                          AsgothianA Offline
                          Asgothian
                          Developer
                          schrieb am zuletzt editiert von
                          #13

                          @bahnuhr :)

                          Ich predige das eigentlich seit 2020. true > false :)

                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • AsgothianA Asgothian

                            @bahnuhr :)

                            Ich predige das eigentlich seit 2020. true > false :)

                            HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #14

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

                            true > false

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

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            bahnuhrB 1 Antwort Letzte Antwort
                            0
                            • HomoranH Homoran

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

                              true > false

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

                              bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #15

                              @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.


                              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                              Danke.
                              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                              ScreenToGif :https://www.screentogif.com/downloads.html

                              HomoranH 1 Antwort Letzte Antwort
                              0
                              • bahnuhrB bahnuhr

                                @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.

                                HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #16

                                @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

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                bahnuhrB 1 Antwort Letzte Antwort
                                0
                                • HomoranH Homoran

                                  @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

                                  bahnuhrB Online
                                  bahnuhrB Online
                                  bahnuhr
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #17

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

                                  Blockly

                                  ach deshalb ;-)

                                  ich nehm JS und kein Blockly


                                  Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                  Danke.
                                  gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                  ScreenToGif :https://www.screentogif.com/downloads.html

                                  HomoranH 1 Antwort Letzte Antwort
                                  0
                                  • bahnuhrB bahnuhr

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

                                    Blockly

                                    ach deshalb ;-)

                                    ich nehm JS und kein Blockly

                                    HomoranH Nicht stören
                                    HomoranH Nicht stören
                                    Homoran
                                    Global Moderator Administrators
                                    schrieb am zuletzt editiert von
                                    #18

                                    @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 :grin:

                                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    1 Antwort Letzte Antwort
                                    0
                                    • BoronsbruderB Boronsbruder

                                      Also, das mit change: 'lt' hab ich mal präventiv getestet. (@Asgothian du meintest sicher: triggert von TRUE auf FALSE - nur um keine Fehler reinzubringen)
                                      Die Sache ist die, es wird immer nur das startSkript doppelt ausgeführt. Die anderen Teile sendMsg und der ConsolenOutput werden korrekt einmal ausgeführt.

                                      Die Lösung ist folgende:

                                              stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                                                  setTimeout( ()=> {runScript('common.Bewässerung.Ventil_Steuerung')},1000);
                                              });
                                      

                                      Selbst ohne den Timeout also mit

                                               stopScript('common.Bewässerung.Ventil_Steuerung', () => {
                                                  runScript('common.Bewässerung.Ventil_Steuerung');
                                              });
                                      

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

                                      T Nicht stören
                                      T Nicht stören
                                      ticaki
                                      schrieb am zuletzt editiert von ticaki
                                      #19

                                      @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.

                                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                      Spenden

                                      1 Antwort Letzte Antwort
                                      0
                                      • AsgothianA Asgothian

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

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

                                        bitte mal eine Debug ausgäbe in den Trigger, mit Angabe der Quelle und so weiter. Schauen ob der Trigger 2 mal kommt.

                                        A.

                                        BoronsbruderB Offline
                                        BoronsbruderB Offline
                                        Boronsbruder
                                        schrieb am zuletzt editiert von
                                        #20

                                        @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 Antwort Letzte Antwort
                                        0
                                        • BoronsbruderB Boronsbruder

                                          @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 Nicht stören
                                          T Nicht stören
                                          ticaki
                                          schrieb am zuletzt editiert von
                                          #21

                                          @boronsbruder

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

                                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                          Spenden

                                          BoronsbruderB 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

                                          638

                                          Online

                                          32.6k

                                          Benutzer

                                          82.1k

                                          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