Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script wird zweimal ausgeführt?

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Script wird zweimal ausgeführt?

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Th3RockYeah last edited by

      Hallo,

      ich habe schon seit längerem das Problem, dass ich doppelte Logeinträge von meinen Zigbee Bewegungsmeldern bekomme. Nun ist mir im Logfile auch aufgefallen, wenn ich ein Script stoppe, dieses zweimal gestoppt wird:

      javascript.0
      2023-08-02 12:44:48.702 info Stop script script.js.common.CommonMix

      javascript.0
      2023-08-02 12:44:48.539 info Stop script script.js.common.CommonMix

      Danach aber nur einmal gestartet wird:
      javascript.0
      2023-08-02 12:44:48.815 info Start javascript script.js.common.CommonMix

      Ein Beispiel für die doppelten Logeinträge:

      javascript.0
      2023-08-02 12:54:09.564 info script.js.common.BewegungsmelderV2: Bewegungsmelder BadFirstFloor: Ausgelöst
      javascript.0
      2023-08-02 12:54:09.494 info script.js.common.BewegungsmelderV2: Bewegungsmelder BadFirstFloor: Ausgelöst

      Mir fällt in der Konfiguration nichts auf, daher hat von euch jemand eine Idee oder Tipp, wie ich dieses Verhalten eingrenzen kann? Oder einfach ignorieren, weil an sich läuft IoBroker rund.

      Danke!

      paul53 A 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Th3RockYeah last edited by

        @th3rockyeah sagte: doppelten Logeinträge

        Javascript-Instanz neu gestartet?
        Wenn das nicht hilft: ioBroker neu starten.

        T 1 Reply Last reply Reply Quote 0
        • T
          Th3RockYeah @paul53 last edited by

          @paul53 Habe ich alles schon versucht. Leider immer wieder dasselbe Ergebnis.

          1 Reply Last reply Reply Quote 0
          • A
            Ahnungsbefreit @Th3RockYeah last edited by

            @th3rockyeah In welchem Ordner liegt das Script?

            T 1 Reply Last reply Reply Quote 0
            • T
              Th3RockYeah @Ahnungsbefreit last edited by

              @ahnungsbefreit im Common Ordner

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

                @th3rockyeah
                in neues Skript kopieren und altes löschen. Sicher das es 2. mal läuft?

                log(Math.random())
                

                in das Skript einfügen und testen

                Spiegelst du deinen Skriptorder auf die Festplatte? Auf welchem OS läuft ioBroker?

                Ich hatte das nur wenn ich die Skripte extern über einen smb/nfs Freigabe bearbeite.

                Kannst du den Code zeigen?

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

                  @ticaki Nein, sicher bin ich mir nicht.
                  Ich editiere über VScode (Windows) und spiele die Änderung über VScode auf den Pi, dabei wird das Skript beendet und neugestartet. OS ist das neuste Raspberry Pi.
                  Ich habe deine Zeile ergänzt und folgendes Log dabei erhalten:

                  javascript.0
                  2023-08-02 17:11:39.151	info	script.js.common.BewegungsmelderV2: Bewegungsmelder StairsToFirstFloor: Ausgelöst
                  javascript.0
                  2023-08-02 17:11:39.110	info	script.js.common.BewegungsmelderV2: Bewegungsmelder StairsToFirstFloor: Ausgelöst
                  javascript.0
                  2023-08-02 17:10:59.288	info	script.js.common.CommonMix: registered 8 subscriptions, 2 schedules, 0 messages, 0 logs and 0 file subscriptions
                  javascript.0
                  2023-08-02 17:10:59.272	info	script.js.common.CommonMix: 0.4416924518034808
                  javascript.0
                  2023-08-02 17:10:59.238	info	Start javascript script.js.common.CommonMix
                  javascript.0
                  2023-08-02 17:10:59.079	info	Stop script script.js.common.CommonMix
                  javascript.0
                  2023-08-02 17:10:58.914	info	Stop script script.js.common.CommonMix
                  

                  Beim Übertragen der Änderung schreibt er zweimal stop, dann start des Scripts und es läuft mit der Math.random() Ausgabe, danach gab es wieder zweimal die Ausgabe des Bewegungsmelders.

                  Vielleicht sind es auch zwei getrennte Probleme. 1. doppelter Stop beim Beenden des Skripts und 2. die Ausgabe des BewegungsmelderLogs?
                  Bei der Ausgabe des Logs vom Bewegungsmelder liegt es vielleicht auch am "any" in der On-Event Methode. Ich bin unsicher, ob das normal ist oder ob eben etwas nicht richtig im IoBroker konfiguriert ist.

                    on({id: sensorState(lpSensorState, 'stateMotion'), change: "any", val:true}, function(obj) {...}
                  
                  T paul53 3 Replies Last reply Reply Quote 0
                  • T
                    ticaki Developer @Th3RockYeah last edited by ticaki

                    @th3rockyeah

                    javascript.0
                    2023-08-02 17:11:39.151	info	script.js.common.BewegungsmelderV2: Bewegungsmelder StairsToFirstFloor: Ausgelöst
                    javascript.0
                    2023-08-02 17:11:39.110	info	script.js.common.BewegungsmelderV2: Bewegungsmelder StairsToFirstFloor: Ausgelöst
                    

                    Das sieht eher nach 2 Aufrufen von on() aus. 2 Skripte sollte keine Pause von 40ms haben. Weiß aber natürlich nicht welcher Betrieb bei dir ist 🙂

                    hm setzt mal:

                    log('dp: ' + obj.state.id + ' val: ' + obj.state.val + ' ack: ' + obj.state.ack + ' from: '+obj.state.from)
                    

                    in on()

                    oder einfach

                    log(JSON.stringify(obj))
                    

                    EDIT: Das any hab ich eher im Verdacht, daher die Logausgaben

                    T 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Th3RockYeah last edited by

                      @th3rockyeah sagte: liegt es vielleicht auch am "any"

                      Dann versuche mal:

                      on({id: sensorState(lpSensorState, 'stateMotion'), change: "gt"}, function(obj) {...}
                      
                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @Th3RockYeah last edited by

                        @th3rockyeah
                        Danke für das... habs jetzt auch auf ssh umgestellt 🙂

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

                          @ticaki Ich habe deine Ideen einmal in das Skript eingebaut:

                          
                          javascript.0
                          2023-08-02 19:20:30.563	info	script.js.common.BewegungsmelderV2: {"id":"zigbee.0.00158d00042d7b1f.occupancy","newState":{"val":true,"ts":1690996830549,"ack":true,"lc":1690996830502,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"},"oldState":{"val":true,"ts":1690996830502,"ack":true,"lc":1690996830502,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"},"state":{"val":true,"ts":1690996830549,"ack":true,"lc":1690996830502,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"}}
                          
                          javascript.0
                          2023-08-02 19:20:30.512	info	script.js.common.BewegungsmelderV2: Bewegungsmelder StairsToFirstFloor: Ausgelöst, 
                          javascript.0
                          2023-08-02 19:20:30.509	info	script.js.common.BewegungsmelderV2: dp: undefined val: true ack: true from: system.adapter.zigbee.0
                          javascript.0
                          2023-08-02 19:20:30.508	info	script.js.common.BewegungsmelderV2: {"id":"zigbee.0.00158d00042d7b1f.occupancy","newState":{"val":true,"ts":1690996830502,"ack":true,"lc":1690996830502,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"},"oldState":{"val":false,"ts":1690995672419,"ack":true,"lc":1690995672419,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"},"state":{"val":true,"ts":1690996830502,"ack":true,"lc":1690996830502,"from":"system.adapter.zigbee.0","q":0,"user":"system.user.admin"}}
                          

                          Was ich gerade bei dem Test entdeckt habe, ist, dass der neue Aqara Motion Sensor nur einmal feuert und der alte zweimal... Merkwürdig...

                          1 Reply Last reply Reply Quote 0
                          • T
                            Th3RockYeah @paul53 last edited by

                            @paul53 Hatte ich schon mal ausprobiert, leider funktionierte die Erkennung des Bewegungsmelder nicht mehr richtig. Ich teste es nachher noch mal.

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

                              @ticaki 🙂
                              Hast du jetzt auch das Problem, dass das Skript zweimal gestoppt wird?

                              javascript.0
                              2023-08-02 17:10:59.079	info	Stop script script.js.common.CommonMix
                              javascript.0
                              2023-08-02 17:10:58.914	info	Stop script script.js.common.CommonMix
                              
                              
                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer @Th3RockYeah last edited by ticaki

                                @th3rockyeah
                                jup, ich kann mich erinnern damals einen report zu 2 mal stop und 2 mal start geschrieben zu haben und damals sind die tatsächlich 2 mal gelaufen. 2 mal stop ist doch ok 🙂

                                ups ein Fehler das ist nicht obj.state.id sondern obj.id sry

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

                                  @ticaki ok. Danke. dann habe ich da schon einmal einen Haken dran.
                                  Muss ich jetzt nur noch mal klären, warum der Bewegungsmelder zweimal feuert...

                                  Danke erstmal für eure schnelle Hilfe! 🙂

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    Ahnungsbefreit @Th3RockYeah last edited by

                                    @th3rockyeah ich denke mal der löst einmal aus beim Wechsel false-->true und dann umgekehrt. Lass doch mal den Wert im Log ausgeben, dann siehst Du das

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @Ahnungsbefreit last edited by paul53

                                      @ahnungsbefreit sagte: Wert im Log ausgeben

                                      Das hat @Th3RockYeah bereits hier:
                                      Einmal false --> true und 55 ms später true --> true.
                                      Deshalb sollte er triggern mit

                                      change: 'gt'
                                      
                                      A 1 Reply Last reply Reply Quote 1
                                      • A
                                        Ahnungsbefreit @paul53 last edited by

                                        @paul53 ok, das hatte ich nicht gesehen aber genau darauf wollte ich hinaus, Trigger "any" ist vermutlich die Ursache

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          Th3RockYeah @Ahnungsbefreit last edited by

                                          @ahnungsbefreit, @paul53 Ja trigger "any" ist die Ursache. Wenn ich auf "GT" stelle, schaltet der Bewegungsmelder nicht erneut an, wenn ich im Raum bin und er die Bewegung erfasst. "GT" geht erst, wenn der Bewegungsmelder keine Bewegung mehr registriert.

                                          Scheint bei mir aber ggf. ein Logik-Problem zu sein. Ich muss das mehr Debuggen. Auf jeden Fall DANKE für euren Input!!

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

                                            @th3rockyeah

                                            Hatte gerade 12:00 ebenfalls ein doppelt laufendens Skript, das ich jedoch mit restart der Javascript-Instanz entfernen konnte. Ist auch mit dem Code von 11:15 gelaufen. Also ist ein restart der Javascript Instanz nach dem Beenden der Bearbeitung anzuraten.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            788
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            22
                                            793
                                            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