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. JavaScript
  5. Script wird mehrfach ausgeführt

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Script wird mehrfach ausgeführt

Scheduled Pinned Locked Moved JavaScript
9 Posts 3 Posters 967 Views 1 Watching
  • 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.
  • A Offline
    A Offline
    andre1000
    wrote on last edited by
    #1

    Moin zusammen,
    ich habe das Problem, dass ein Skript doppelt ausgeführt wird. Inzwsichen habe ich auch die vermeindliche Ursache gefunden, aber noch keine Idee, wie ich es besser machen kann.

    Hier die Situation:
    Es wird ein Taster betätigt, daruf werden mehrere Objekte im Script A geändert:

    on({id: 'javascript.0.Zustand.EG.Licht-Schummer'}, function (obj) {
        if (!getState('javascript.0.Zustand.EG.Licht-Schummer').val      )
        {
            setState('javascript.0.Zustand.Wohnzimmer.Licht-Schummer',0);
            setState('javascript.0.Zustand.Wohnzimmer.Licht-Dunkel',0);
            setState('javascript.0.Zustand.Wohnzimmer.Licht-Hell',0);
        }
    });
    

    Diese Objekte werden dann von einem weiteren Script B weiterverarbeitet:

    on([    'javascript.0.Zustand.Wohnzimmer.Licht-Dunkel',
            'javascript.0.Zustand.Wohnzimmer.Licht-Hell',
            'javascript.0.Zustand.Wohnzimmer.Licht-Schummer',
            'javascript.0.Zustand.Wohnzimmer.Alles-an',
            'javascript.0.Zustand.Wohnzimmer.Test'
            ], function (obj) {
    ...
    

    Meine Vermutung ist, dass im Script A die Objekte nacheinander gesetzt werden und somit das Script B dreimal ausgeführt wird.

    Vielen Dank für die Unterstützung
    André

    G 1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @andre1000 sagte:

      Meine Vermutung ist, dass im Script A die Objekte nacheinander gesetzt werden und somit das Script B dreimal ausgeführt wird.

      Deine Vermutung ist richtig, aber nur dann, wenn sich der Wert aller 3 Datenpunkte durch das Script A ändert.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • A andre1000

        Moin zusammen,
        ich habe das Problem, dass ein Skript doppelt ausgeführt wird. Inzwsichen habe ich auch die vermeindliche Ursache gefunden, aber noch keine Idee, wie ich es besser machen kann.

        Hier die Situation:
        Es wird ein Taster betätigt, daruf werden mehrere Objekte im Script A geändert:

        on({id: 'javascript.0.Zustand.EG.Licht-Schummer'}, function (obj) {
            if (!getState('javascript.0.Zustand.EG.Licht-Schummer').val      )
            {
                setState('javascript.0.Zustand.Wohnzimmer.Licht-Schummer',0);
                setState('javascript.0.Zustand.Wohnzimmer.Licht-Dunkel',0);
                setState('javascript.0.Zustand.Wohnzimmer.Licht-Hell',0);
            }
        });
        

        Diese Objekte werden dann von einem weiteren Script B weiterverarbeitet:

        on([    'javascript.0.Zustand.Wohnzimmer.Licht-Dunkel',
                'javascript.0.Zustand.Wohnzimmer.Licht-Hell',
                'javascript.0.Zustand.Wohnzimmer.Licht-Schummer',
                'javascript.0.Zustand.Wohnzimmer.Alles-an',
                'javascript.0.Zustand.Wohnzimmer.Test'
                ], function (obj) {
        ...
        

        Meine Vermutung ist, dass im Script A die Objekte nacheinander gesetzt werden und somit das Script B dreimal ausgeführt wird.

        Vielen Dank für die Unterstützung
        André

        G Offline
        G Offline
        Georgius
        wrote on last edited by
        #3

        @andre1000

        Was willst Du überhaupt erreichen?

        1 Reply Last reply
        0
        • A Offline
          A Offline
          andre1000
          wrote on last edited by
          #4

          Moin,

          was möchte ich mit den Scripten erreichen.
          Script A weist die Schalterbedienung einem internen Objekt zu. Von dieser Art gibt es mehrere mit den gleichen Zielobjekten.
          Script B fasst alle Informationen zusammen und sendet diese per CAN-Telegramm an eine Steuerung zur Umsetzung der Schalthandlung (Relais) weiter.
          Also, die Struktur ist so vorgegeben, leider aktuell nicht kompatibel mit meiner Programmierung.

          Hat jemand eine Idee, was ich anders/besser machen kann?

          André

          G 1 Reply Last reply
          0
          • A andre1000

            Moin,

            was möchte ich mit den Scripten erreichen.
            Script A weist die Schalterbedienung einem internen Objekt zu. Von dieser Art gibt es mehrere mit den gleichen Zielobjekten.
            Script B fasst alle Informationen zusammen und sendet diese per CAN-Telegramm an eine Steuerung zur Umsetzung der Schalthandlung (Relais) weiter.
            Also, die Struktur ist so vorgegeben, leider aktuell nicht kompatibel mit meiner Programmierung.

            Hat jemand eine Idee, was ich anders/besser machen kann?

            André

            G Offline
            G Offline
            Georgius
            wrote on last edited by
            #5

            @andre1000

            Ich würde noch einen fiktiven Schalter dazu nehmen. Den in allen Skript A mit schalten und nur den in B abfragen.
            Oder in B in dem if ein "und variable ist fasch" ergänzen.
            Dann
            die Variable auf wahr setzen
            Was der Skript alles machen soll
            Etwas warten
            Die Variable wieder auf falsch setzen.

            Ob und wie lange das warten dauert hängt von der Laufzeit (mit Reserve) von Skript A ab.

            1 Reply Last reply
            0
            • A Offline
              A Offline
              andre1000
              wrote on last edited by
              #6

              Die Idee mit dem fiktiven Schalter hatte ich auch schon. Leider wird daruch die gesamte Struktur in IoBroker zu unübersichtlich.
              Die zweite Idee mit der IF Abfrage hört sich interessant an. Was ist die beste Zeit dafür? Reichen 10ms aus?

              André

              1 Reply Last reply
              0
              • G Offline
                G Offline
                Georgius
                wrote on last edited by Georgius
                #7

                Kannst ja ausprobieren. Einfach im 2. Skript ein Log mitlaufen lassen.

                Aber warum wird das mit dem Schalter unübersichtlich? Hast Du mehrere Skript B?

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  andre1000
                  wrote on last edited by
                  #8

                  Ja, ich habe mehrere Scripte, die den Zustand ändern können.
                  Ich habe die Idee mit der IF Abfrage ausprobiert. Leider ohne positives Ergebnis.
                  Für mich scheint es so, als wenn das Script B parallel gestartet wird. Jedenfalls wir die Statusänderung des Hilfszustandes nicht im zweiten Script verwendet:
                  Ein Log ist in Script A, im Script B wurde so agepasst, dass der Haupteil nur ausgeführt wird

                      if (!getState('javascript.0.CAN_OUT.Help.0x3xx').val)     // CAN Trigger
                          {
                           setState('javascript.0.CAN_OUT.Help.0x3xx', 1);                // CAN Trigger
                  

                  Die Hilfsvariable wird im Script C zurückgesetzt.

                           setStateDelayed('javascript.0.CAN_OUT.Help.0x3xx', 0, 100);     // CAN Trigger
                  

                  Hier der Log dazu:
                  0a5be7f2-2fdf-45ca-bffb-4ecdb4f979e8-grafik.png
                  Was mich wundert, ist warum die Variable erst im nächsten Script aktualisiert ist.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    andre1000
                    wrote on last edited by
                    #9

                    Moin

                    bin schin etwas weiter gekommen.
                    Habe jetzt eine Java Variable genommen, damit läuft die IF Abfrage in Script B. Jedoch muss ich die Variable trotzdem in Script C zurücksetzten.

                    setTimeout(function() {CAN_OUT_Help_0x13x;}, 100);
                    

                    funktioniert in Script B leider nicht.

                    Jetzt habe ich das nächste Problem.
                    Es werden ja insgesamt drei Zustände durch Script A verändert. Leider wird nur die erste übernommen, obwohl die Zustände bereits seit ca 200ms gespeichert sind.
                    07b30bf2-e620-4fd0-b01b-a05b0f546258-grafik.png

                    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

                    735

                    Online

                    32.6k

                    Users

                    82.3k

                    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