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. Tipp zeitverzögert einschalten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    838

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Tipp zeitverzögert einschalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 110 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.
  • K Offline
    K Offline
    klaus88
    schrieb am zuletzt editiert von
    #1

    Einen wunderschönen Abend !

    Brauche bitte einen Tipp, denn ich verstehe nicht warum es nicht funktioniert!
    Was möchte ich machen:
    Ich möchte beim Verlassen der Wohnung die Verbraucher ausschalten die ich nicht brauche und mein Tablet (wo iobroker drauf läuft) dunkel schalten.
    Aber wenn ich nach Hause komme möchte ich alle wieder einschalten - dadurch fliegt aber leider die Sicherung. Daher baute ich ins Script eine Zeitverzögerung ein.

    Also: Ich habe eine Kategorie "VerbraucherAUS" definiert - frage diese ab und schalte dann alle aus bzw. ein mit der Zeitverzögerung !
    Nur die Verzögerung funktioniert nicht und ich weiß nicht warum - es schalten trotz setTimout Function immer alle gleichzeitig:

    Script:

    
    const g_State = '0_userdata.0.VIS.Ebene.Gesamt.WohnungVerlassen';
    on({id: g_State, change:'any'}, function(obj) {
    	
    	//Version2
    	var Licht = getObject("enum.functions.VerbraucherAUS").common.members;
    	var LichtMax=Licht.length;
    	for(let i = 0; i < Licht.length; i++) {
    		const objx = getObject(Licht[i]);
    		var Status = getState(Licht[i]).val;
    		// Die Rolle direkt aus der common-Eigenschaft holen
    		if (objx && objx.common && objx.common.role) {
    			const role = objx.common.role;
    			if (role =='button') {
    				if (!obj.state.val) {
    						setState(Licht[i], true);
    				}
    			}
    			else {
    				if (obj.state.val) {
    					setTimeout(function() {
    						setState(Licht[i], true);
    					}, 23000);
    					console.log ('************************** Wohnung verlassen: eingeschalten - ' + objx.common.name);
    				} 
    				else {
    					setTimeout(function() {
    						setState(Licht[i], false);
    					}, 23000);
    					console.log ('************************** Wohnung verlassen: ausgeschalten - ' + objx.common.name);
    				}
    			}
    		}
    	}
    });
     
    

    Also falls wer einen Tipp hat wäre ich sehr dankbar!

    lg
    Klaus

    paul53P 1 Antwort Letzte Antwort
    0
    • K klaus88

      Einen wunderschönen Abend !

      Brauche bitte einen Tipp, denn ich verstehe nicht warum es nicht funktioniert!
      Was möchte ich machen:
      Ich möchte beim Verlassen der Wohnung die Verbraucher ausschalten die ich nicht brauche und mein Tablet (wo iobroker drauf läuft) dunkel schalten.
      Aber wenn ich nach Hause komme möchte ich alle wieder einschalten - dadurch fliegt aber leider die Sicherung. Daher baute ich ins Script eine Zeitverzögerung ein.

      Also: Ich habe eine Kategorie "VerbraucherAUS" definiert - frage diese ab und schalte dann alle aus bzw. ein mit der Zeitverzögerung !
      Nur die Verzögerung funktioniert nicht und ich weiß nicht warum - es schalten trotz setTimout Function immer alle gleichzeitig:

      Script:

      
      const g_State = '0_userdata.0.VIS.Ebene.Gesamt.WohnungVerlassen';
      on({id: g_State, change:'any'}, function(obj) {
      	
      	//Version2
      	var Licht = getObject("enum.functions.VerbraucherAUS").common.members;
      	var LichtMax=Licht.length;
      	for(let i = 0; i < Licht.length; i++) {
      		const objx = getObject(Licht[i]);
      		var Status = getState(Licht[i]).val;
      		// Die Rolle direkt aus der common-Eigenschaft holen
      		if (objx && objx.common && objx.common.role) {
      			const role = objx.common.role;
      			if (role =='button') {
      				if (!obj.state.val) {
      						setState(Licht[i], true);
      				}
      			}
      			else {
      				if (obj.state.val) {
      					setTimeout(function() {
      						setState(Licht[i], true);
      					}, 23000);
      					console.log ('************************** Wohnung verlassen: eingeschalten - ' + objx.common.name);
      				} 
      				else {
      					setTimeout(function() {
      						setState(Licht[i], false);
      					}, 23000);
      					console.log ('************************** Wohnung verlassen: ausgeschalten - ' + objx.common.name);
      				}
      			}
      		}
      	}
      });
       
      

      Also falls wer einen Tipp hat wäre ich sehr dankbar!

      lg
      Klaus

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @klaus88 sagte: wer einen Tipp hat

      Die Timeouts starten alle fast gleichzeitig. Multipliziere die 23 s mit dem Zählwert i, um verschiede Verzögerungen zu erhalten. Außerdem lässt es sich mit nur einem Timeout programmieren:

      			else {
                                  setTimeout(function() {
                                        setState(Licht[i], obj.state.val);
      				  console.log ('************************** Wohnung verlassen: ' + obj.state.val ? 'ein' : 'aus' + 'geschalten - ' + objx.common.name);
      			    }, 23000 * i);
      			}
      

      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

      K 1 Antwort Letzte Antwort
      1
      • paul53P paul53

        @klaus88 sagte: wer einen Tipp hat

        Die Timeouts starten alle fast gleichzeitig. Multipliziere die 23 s mit dem Zählwert i, um verschiede Verzögerungen zu erhalten. Außerdem lässt es sich mit nur einem Timeout programmieren:

        			else {
                                    setTimeout(function() {
                                          setState(Licht[i], obj.state.val);
        				  console.log ('************************** Wohnung verlassen: ' + obj.state.val ? 'ein' : 'aus' + 'geschalten - ' + objx.common.name);
        			    }, 23000 * i);
        			}
        
        K Offline
        K Offline
        klaus88
        schrieb am zuletzt editiert von
        #3

        @paul53 : DANKE - werde ich sofort versuchen!

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          klaus88
          schrieb am zuletzt editiert von
          #4

          @paul53 : Perfekt hat funktioniert - DANKE vielmals, da wäre ich nie drauf gekommen - ich dachte, wenn er die Schleife aller Verbraucher durchläuft , reicht das, dass genügend Zeitverzug bleibt ! Perfekt ! Herzlichen Dank und ein wunderschönes Wochenende! lg Klaus

          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

          923

          Online

          32.6k

          Benutzer

          82.0k

          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