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

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Script wird mehrfach ausgeführt

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 3 Kommentatoren 833 Aufrufe 1 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.
  • A Offline
    A Offline
    andre1000
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #3

        @andre1000

        Was willst Du überhaupt erreichen?

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          andre1000
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              andre1000
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • G Offline
                G Offline
                Georgius
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  andre1000
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    andre1000
                    schrieb am zuletzt editiert von
                    #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 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

                    755

                    Online

                    32.4k

                    Benutzer

                    81.5k

                    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