Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] Scheduler-Trigger löst mehrere Male aus

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Scheduler-Trigger löst mehrere Male aus

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

      Hallo,

      ich habe das seltsame Phänomen, dass ein Scheduler-Trigger mehrfach hintereinander auslöst. Wieso ist das so und was kann ich dagegen unternehmen?

      // Bei Sonnenaufgang die Wegbeleuchtung ausschalten
      schedule({astro: "sunrise", shift: - sunriseOffset}, function () {
      	console.log('Wegbeleuchtung wird ausgeschaltet!');
      	setState(idWegbeleuchtungSwitch, false, false);
      });
      
      

      Die Log-Ausgabe sah dann so aus:

      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.678	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.679	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.681	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.681	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.682	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.682	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      07:18:36.682	info	javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!
      

      MOD-EDIT: Code in code-tags gesetzt!

      Kann mir das jemand erklären?

      liv-in-sky paul53 arteck Thomas Braun 4 Replies Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @ROGA last edited by

        @roga liegt das script unter global ordner ?

        R 1 Reply Last reply Reply Quote 1
        • R
          ROGA @liv-in-sky last edited by

          @liv-in-sky nein, ich habe dafür einen eigenen Ordner angelegt, der quasi auf selber Ebene liegt wie common und global.

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

            @roga sagte: Kann mir das jemand erklären?

            Nicht ohne das komplette Skript zu sehen.

            R 1 Reply Last reply Reply Quote 0
            • arteck
              arteck Developer Most Active @ROGA last edited by

              @roga sagte in Scheduler-Trigger löst mehrere Male aus:

              07:18:36.678 info javascript.0 (2502319) script.js._Licht.Wegbeleuchtung: Wegbeleuchtung wird ausgeschaltet!

              das ist ja die gleiche ms..sehr merkwürdig...

              1 Reply Last reply Reply Quote 0
              • Thomas Braun
                Thomas Braun Most Active @ROGA last edited by

                @roga sagte in Scheduler-Trigger löst mehrere Male aus:

                Die Log-Ausgabe

                Schleif die mal durch 'uniq' durch.

                iob logs | uniq
                
                R 1 Reply Last reply Reply Quote 0
                • R
                  ROGA @paul53 last edited by

                  @paul53 hier mein Script ...

                  let     DebugLogging             = true,	
                          idWegbeleuchtungSwitch   = 'alias.0.Licht.Wegbeleuchtung.Switch',
                  	BaseDPpath               = 'javascript.0.Vis.Licht.Wegbeleuchtung.',
                  	currentTime,
                  	onTimeHour               = 5,
                  	onTimeMinute             = 30,
                  	offTimeHour              = 21,
                  	offTimeMinute            = 0,
                  	sunriseOffset	         = 20,
                  	sunsetOffset             = 30;
                  
                  	// Die Wegbeleuchtung soll frühestens um 05:30h eingeschaltet werden, vorausgesetzt 
                  	// es ist noch dunkel (Sunrise - 20 Minuten)
                  	schedule({hour: onTimeHour, minute: onTimeMinute}, function () {
                  
                  		console.log('Wegbeleuchtung soll eingeschaltet werden, wenn es noch dunkel ist ...');
                  		
                  		currentTime = new Date();
                  
                  		// Die Wegbeleuchtung soll nur dann eingeschaltet werden, wenn die aktuelle Zeit kleiner bzw.
                  		// noch vor dem Sonnenaufgangs ist.
                  			
                  		if (compareTime({astro: 'sunrise', offset: - sunriseOffset}, {astro: 'sunset', offset: sunsetOffset}, '<', currentTime)) {
                  
                  			console.log('Wegbeleuchtung wird eingeschaltet!');
                  			setState(idWegbeleuchtungSwitch, true, false);
                  		} else {
                  			console.log('Wegbeleuchtung wird nicht mehr eingeschaltet!');
                  		};
                  
                  
                  	});
                  
                  	// Bei Sonnenaufgang die Wegbeleuchtung ausschalten
                  	schedule({astro: "sunrise", shift: - sunriseOffset}, function () {
                  		
                  		console.log('Wegbeleuchtung wird ausgeschaltet!');
                  		setState(idWegbeleuchtungSwitch, false, false);
                  
                  	});
                  	
                  	// Die Wegbeleuchtung soll nach Sonnenuntergang eingeschaltet werden, wenn die aktuelle Zeit kleiner bzw.
                  	// noch vor 21:00h ist.
                  	schedule({astro: "sunset", shift: sunsetOffset}, function () {
                  	
                  		console.log('Wegbeleuchtung soll eingeschaltet werden, wenn es noch nicht 21:00h ist ...');
                  		
                  		currentTime = new Date();
                  		offTime = new Date();
                  		offTime.setHours(offTimeHour,offTimeMinute,0,0);
                  		
                  		// Die Wegbeleuchtung soll nur dann eingeschaltet werden, wenn die aktuelle Zeit vor 21:00h ist
                  			
                  		if (compareTime(offTime, offTime, '<', currentTime)) {
                  			
                  			console.log('Wegbeleuchtung wird eingeschaltet!');
                  			setState(idWegbeleuchtungSwitch, true, false);
                  		} else {
                  			console.log('Wegbeleuchtung wird nicht mehr eingeschaltet!');
                  		};
                  	});
                  
                  	// Die Wegbeleuchtung soll spätestens um 21:00h ausgeschaltet werden
                  	schedule({hour: offTimeHour, minute: offTimeMinute}, function () {
                  
                  		console.log('Wegbeleuchtung wird ausgeschaltet!');
                  		
                  		setState(idWegbeleuchtungSwitch, false, false);
                  	
                  	});
                  
                  
                  	if (DebugLogging == true) {
                  		Time = new Date();
                  		Time.setHours(21,0,0,0);
                  		console.log('Zeit=' + Time);
                  	
                  
                  		sunrise=getAstroDate('sunrise');
                  		sunrise.setMinutes(sunrise.getMinutes() - sunriseOffset);
                  		console.log('Sonnenaufgang - Offset ' + sunriseOffset + ' Min. = ' + sunrise );
                  	
                  		sunset=getAstroDate('sunset');
                  		sunset.setMinutes(sunset.getMinutes() + sunsetOffset);
                  		console.log('Sonnenuntergang + Offset ' + sunsetOffset + ' Min. = ' + sunset );
                  	};
                  
                  1 Reply Last reply Reply Quote 0
                  • R
                    ROGA @Thomas Braun last edited by

                    @thomas-braun : habe ich gemacht. Die Ausgabe war sehr lang, weshalb ich diese vorerst noch nicht gepostet habe. Was hätte ich hier sehen sollen?

                    Thomas Braun 1 Reply Last reply Reply Quote 0
                    • Thomas Braun
                      Thomas Braun Most Active @ROGA last edited by

                      @roga sagte in Scheduler-Trigger löst mehrere Male aus:

                      Was hätte ich hier sehen sollen?

                      Nur noch einfache Einträge. uniq filtert Doppelungen aus LogFiles heraus.

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        ROGA @Thomas Braun last edited by

                        @thomas-braun : ich habe die Ausgabe von uniq untersucht und festgestellt, dass darin keine Einträge von dem aktuellen Script für meine Wegbeleuchtung enthalten sind. Jedoch jede Menge Einträge von anderen Scripts, die ich am Laufen habe. Wie soll ich das jetzt bewerten bzw. wie löse ich damit das Problem, dass der Trigger mehrfach ausgelöst wird?

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @ROGA last edited by

                          @roga

                          hattest du fehler beim programmieren und es laufen noch verschiedene teile des script im hintergrund und unbekannt - jvascript adapter neustarten oder ganzen iob - schon versucht

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            ROGA @liv-in-sky last edited by

                            @liv-in-sky : Ich habe deinen Vorschlag umgesetzt und dabei tatsächlich feststellen können, dass nach dem Neustart des javascript Adapters danach der Trigger nur noch ein einziges Mal ausgelöst wurde.

                            Für's erste bin ich beruhigt, doch die grosse Frage stellt sich mir: Wie konnte das passieren? Was genau ist da geschehen? Falls jemand eine Vermutung hat, kann er es gerne hier verkünden, würde mich brennend interessieren.

                            Ich möchte mich bei allen ganz herzlich für die angebotene Hilfe bedanken und markiere diesen Thread hiermit als gelöst.

                            liv-in-sky 1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @ROGA last edited by

                              @roga leider keine vermutung - ich knne nur das problem - existiert schon ewig und wurde nicht besser mit der zeit 😞

                              arteck 1 Reply Last reply Reply Quote 0
                              • arteck
                                arteck Developer Most Active @liv-in-sky last edited by

                                @liv-in-sky gibts ein issue dafür auf GIT ?

                                liv-in-sky 1 Reply Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @arteck last edited by liv-in-sky

                                  @arteck

                                  ne - von mir nicht - ist schon sehr lange so - kann bei meinem programmierstil öfter auftreten 😞

                                  ziemlich häufig kommt es vor, wenn man bei promises einen fehler macht - dann bleibt sehr oft ein teil eines scriptes aktiv und läuft doppelt

                                  "kann dich bei fehlersuche um den verstand bringen"

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  870
                                  Online

                                  31.9k
                                  Users

                                  80.1k
                                  Topics

                                  1.3m
                                  Posts

                                  5
                                  15
                                  408
                                  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