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. [gelöst] Zeitlich verzögertes Einschalten eines "Slave"

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] Zeitlich verzögertes Einschalten eines "Slave"

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
6 Beiträge 3 Kommentatoren 387 Aufrufe 2 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 klaus88
    #1

    Hallo,
    bräuchte einen Tipp von euch:
    Ich möchte gerne mit einem Schalter mein Büro stromlos machen. Ist ein relativ leichtes Unterfangen (dachte ich!) und baute einen Sonoff (Tasmota) R2 ein um ihn über den iobroker bzw. natürlich der VIS ein und aus zu schalten.
    Funktioniert prinzipiell - nur ab und zu fällt mir die Sicherung, weil anscheinend so viel draufhängt, dass der Startstrom oder die Startleistung zu viel wird.

    Daher hatte ich folgende Idee:
    Alle Verbraucher aufteilen auf 2 Verteiler wobei der Sonoff Power R2 den ersten Verteiler einschaltet und dann eine Sonoff WLAN Steckdose am 1. Verteiler den 2. Verteiler zeitlich verzögert einschaltet.
    Script dazu weiter unten.
    Nur : Wenn der erste Verteiler stromlos ist, ist auch die WLAN Steckdose stromlos. Daher muss ich beim einschalten warten bis diese im Netz ist um einen State zu setzen.
    Habt ihr vielleicht hier eine bessere, oder einfachere Idee?

    Script:
    Ich habe einen State den ich true oder false setze. Aufgrund der Änderung dieses States wird der 1 Verteiler eingeschalten und 60 sek. später der 2. Verteiler über die WLAN Steckdose. Ich gehe von der Annahme aus, dass eine WLAN Steckdose innerhalb 60 sek. am Netz ist.
    Beim Ausschalten gehe ich den anderen Weg, damit die WLAN Steckdose auch beim starten auch wirklich den State false hat - also nicht eingeschaltet ist.

    /* -----------------------------------
    zeitlich verzögertes einschalten des Büros
    Veröffentlichungsdatum: 26.10.2021
    
    Änderungen:
    
    ------------------------------------*/
    
    //Setzen des State im VIS, falls noch nicht vorhanden
    var Beschreibung = new Array();
    var Name = new Array();
    var Art = new Array();
    var Def = new Array();
    Beschreibung[0] = "0_userdata.0.VIS.Buero1OG.Power";
    Name[0] = "Buero 1OG Power";
    Art[0] = "boolean";
    Def[0] = "false";
    
    	
    for (var x = 0; x < Beschreibung.length; x++) {
    		if (!existsState(Beschreibung[x])) {
    			createState(Beschreibung[x], {
    				type: Art[x],
    				name: Name[x],
    				read: true,
    				write: true,
    				def: Def[x]
    			});
    		}
    	}
    	
    var objBuero_Master = 'sonoff.0.SonOffBuero1OG.POWER';
    var objBuero_Slave = 'sonoff.0.SonOffS20_2.POWER';	
    
    	
    on({id: Beschreibung[0], val: true}, function(dp) {
    	setState(objBuero_Master, true);
    	setTimeout(function() {
    		setState(objBuero_Slave, true);
    		}, 60000);
    });
    
    on({id: Beschreibung[0], val: false}, function(dp) {
    	setState(objBuero_Slave, false);
    	setTimeout(function() {
    		setState(objBuero_Master, false);
    		}, 5000);
    });
    

    Danke für eure Hilfe.
    Klaus

    AsgothianA 1 Antwort Letzte Antwort
    0
    • K klaus88

      Hallo,
      bräuchte einen Tipp von euch:
      Ich möchte gerne mit einem Schalter mein Büro stromlos machen. Ist ein relativ leichtes Unterfangen (dachte ich!) und baute einen Sonoff (Tasmota) R2 ein um ihn über den iobroker bzw. natürlich der VIS ein und aus zu schalten.
      Funktioniert prinzipiell - nur ab und zu fällt mir die Sicherung, weil anscheinend so viel draufhängt, dass der Startstrom oder die Startleistung zu viel wird.

      Daher hatte ich folgende Idee:
      Alle Verbraucher aufteilen auf 2 Verteiler wobei der Sonoff Power R2 den ersten Verteiler einschaltet und dann eine Sonoff WLAN Steckdose am 1. Verteiler den 2. Verteiler zeitlich verzögert einschaltet.
      Script dazu weiter unten.
      Nur : Wenn der erste Verteiler stromlos ist, ist auch die WLAN Steckdose stromlos. Daher muss ich beim einschalten warten bis diese im Netz ist um einen State zu setzen.
      Habt ihr vielleicht hier eine bessere, oder einfachere Idee?

      Script:
      Ich habe einen State den ich true oder false setze. Aufgrund der Änderung dieses States wird der 1 Verteiler eingeschalten und 60 sek. später der 2. Verteiler über die WLAN Steckdose. Ich gehe von der Annahme aus, dass eine WLAN Steckdose innerhalb 60 sek. am Netz ist.
      Beim Ausschalten gehe ich den anderen Weg, damit die WLAN Steckdose auch beim starten auch wirklich den State false hat - also nicht eingeschaltet ist.

      /* -----------------------------------
      zeitlich verzögertes einschalten des Büros
      Veröffentlichungsdatum: 26.10.2021
      
      Änderungen:
      
      ------------------------------------*/
      
      //Setzen des State im VIS, falls noch nicht vorhanden
      var Beschreibung = new Array();
      var Name = new Array();
      var Art = new Array();
      var Def = new Array();
      Beschreibung[0] = "0_userdata.0.VIS.Buero1OG.Power";
      Name[0] = "Buero 1OG Power";
      Art[0] = "boolean";
      Def[0] = "false";
      
      	
      for (var x = 0; x < Beschreibung.length; x++) {
      		if (!existsState(Beschreibung[x])) {
      			createState(Beschreibung[x], {
      				type: Art[x],
      				name: Name[x],
      				read: true,
      				write: true,
      				def: Def[x]
      			});
      		}
      	}
      	
      var objBuero_Master = 'sonoff.0.SonOffBuero1OG.POWER';
      var objBuero_Slave = 'sonoff.0.SonOffS20_2.POWER';	
      
      	
      on({id: Beschreibung[0], val: true}, function(dp) {
      	setState(objBuero_Master, true);
      	setTimeout(function() {
      		setState(objBuero_Slave, true);
      		}, 60000);
      });
      
      on({id: Beschreibung[0], val: false}, function(dp) {
      	setState(objBuero_Slave, false);
      	setTimeout(function() {
      		setState(objBuero_Master, false);
      		}, 5000);
      });
      

      Danke für eure Hilfe.
      Klaus

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @klaus88 sagte in Zeitlich verzögertes Einschalten einer "Slave" - Steckdose:

      Daher hatte ich folgende Idee:
      Alle Verbraucher aufteilen auf 2 Verteiler wobei der Sonoff Power R2 den ersten Verteiler einschaltet und dann eine Sonoff WLAN Steckdose am 1. Verteiler den 2. Verteiler zeitlich verzögert einschaltet.
      Script dazu weiter unten.
      Nur : Wenn der erste Verteiler stromlos ist, ist auch die WLAN Steckdose stromlos. Daher muss ich beim einschalten warten bis diese im Netz ist um einen State zu setzen.
      Habt ihr vielleicht hier eine bessere, oder einfachere Idee?
      Script:
      Ich habe einen State den ich true oder false setze. Aufgrund der Änderung dieses States wird der 1 Verteiler eingeschalten und 60 sek. später der 2. Verteiler über die WLAN Steckdose. Ich gehe von der Annahme aus, dass eine WLAN Steckdose innerhalb 60 sek. am Netz ist.
      Beim Ausschalten gehe ich den anderen Weg, damit die WLAN Steckdose auch beim starten auch wirklich den State false hat - also nicht eingeschaltet ist.

      Bitte bedenken:

      • Wie ist das Einschaltverhalten der WLan Steckdose. Behält sie den letzten Status bei oder ist sie beim einschalten immer "an" ?
      • im Adapter für die WLan Steckdose sollte es einen State für die Verbindung geben. Ich würde beim einschalten auf diesen State triggern um sicher zu gehen das der Schaltbefehl durch geht. Das sollte besser sein als eine Zeitsteuerung.

      Ich würde im Zweifelsfall nicht das ganze Büro stromlos schalten sondern (wenn elektrisch möglich) über mehrere Schaltsteckdosen arbeiten. Der Strombedarf der Schaltsteckdosen ist gering, so das das energetisch unkritisch sein sollte.

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      K 1 Antwort Letzte Antwort
      1
      • AsgothianA Asgothian

        @klaus88 sagte in Zeitlich verzögertes Einschalten einer "Slave" - Steckdose:

        Daher hatte ich folgende Idee:
        Alle Verbraucher aufteilen auf 2 Verteiler wobei der Sonoff Power R2 den ersten Verteiler einschaltet und dann eine Sonoff WLAN Steckdose am 1. Verteiler den 2. Verteiler zeitlich verzögert einschaltet.
        Script dazu weiter unten.
        Nur : Wenn der erste Verteiler stromlos ist, ist auch die WLAN Steckdose stromlos. Daher muss ich beim einschalten warten bis diese im Netz ist um einen State zu setzen.
        Habt ihr vielleicht hier eine bessere, oder einfachere Idee?
        Script:
        Ich habe einen State den ich true oder false setze. Aufgrund der Änderung dieses States wird der 1 Verteiler eingeschalten und 60 sek. später der 2. Verteiler über die WLAN Steckdose. Ich gehe von der Annahme aus, dass eine WLAN Steckdose innerhalb 60 sek. am Netz ist.
        Beim Ausschalten gehe ich den anderen Weg, damit die WLAN Steckdose auch beim starten auch wirklich den State false hat - also nicht eingeschaltet ist.

        Bitte bedenken:

        • Wie ist das Einschaltverhalten der WLan Steckdose. Behält sie den letzten Status bei oder ist sie beim einschalten immer "an" ?
        • im Adapter für die WLan Steckdose sollte es einen State für die Verbindung geben. Ich würde beim einschalten auf diesen State triggern um sicher zu gehen das der Schaltbefehl durch geht. Das sollte besser sein als eine Zeitsteuerung.

        Ich würde im Zweifelsfall nicht das ganze Büro stromlos schalten sondern (wenn elektrisch möglich) über mehrere Schaltsteckdosen arbeiten. Der Strombedarf der Schaltsteckdosen ist gering, so das das energetisch unkritisch sein sollte.

        A.

        K Offline
        K Offline
        klaus88
        schrieb am zuletzt editiert von
        #3

        @asgothian : Erstmal ganz herzlichen Dank für deine Rückmeldung! Kurz zu deinen Themen : WLAN Steckdose ist genau so - also sie "merkt" sich den letzten Status.

        Frage zu deiner 2. Bemerkung: Das ist mir auch eingefallen, aber ich bin dann bei folgenden Problem hängen geblieben, da ich kein Profi in Java bin:
        Geht es, dass ich verschachtelt 2 onChange funktionen betreibe bzw. abfrage?
        Also erste wäre wie im Script oben : on({id: Beschreibung[0], val: true}, function(dp) {
        Zweite, wäre dann darunter (also in der ersten onchange Funktion) wenn die WLAN Steckdose alive ist
        Weißt du das - geht das?

        Danke
        Klaus

        paul53P 1 Antwort Letzte Antwort
        0
        • K klaus88

          @asgothian : Erstmal ganz herzlichen Dank für deine Rückmeldung! Kurz zu deinen Themen : WLAN Steckdose ist genau so - also sie "merkt" sich den letzten Status.

          Frage zu deiner 2. Bemerkung: Das ist mir auch eingefallen, aber ich bin dann bei folgenden Problem hängen geblieben, da ich kein Profi in Java bin:
          Geht es, dass ich verschachtelt 2 onChange funktionen betreibe bzw. abfrage?
          Also erste wäre wie im Script oben : on({id: Beschreibung[0], val: true}, function(dp) {
          Zweite, wäre dann darunter (also in der ersten onchange Funktion) wenn die WLAN Steckdose alive ist
          Weißt du das - geht das?

          Danke
          Klaus

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

          @klaus88 sagte: Geht es, dass ich verschachtelt 2 onChange funktionen betreibe bzw. abfrage?

          Nicht verschachtelt, sondern untereinander. Und nur einen Trigger pro Datenpunkt verwenden, da sonst Ressourcenverschwendung.

          on(Beschreibung[0], function(dp) { // triggert bei Wertänderung
             if(dp.state.val) setState(objBuero_Master, true);
             else {
          	setState(objBuero_Slave, false);
          	setTimeout(function() {
          	    setState(objBuero_Master, false);
          	}, 1000);
             }
          });
          
          on({id: idConnected, change: 'gt'}, function() {
             if(getState(objBuero_Master).val) setState(objBuero_Slave, true);
          });
          

          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 2 Antworten Letzte Antwort
          1
          • paul53P paul53

            @klaus88 sagte: Geht es, dass ich verschachtelt 2 onChange funktionen betreibe bzw. abfrage?

            Nicht verschachtelt, sondern untereinander. Und nur einen Trigger pro Datenpunkt verwenden, da sonst Ressourcenverschwendung.

            on(Beschreibung[0], function(dp) { // triggert bei Wertänderung
               if(dp.state.val) setState(objBuero_Master, true);
               else {
            	setState(objBuero_Slave, false);
            	setTimeout(function() {
            	    setState(objBuero_Master, false);
            	}, 1000);
               }
            });
            
            on({id: idConnected, change: 'gt'}, function() {
               if(getState(objBuero_Master).val) setState(objBuero_Slave, true);
            });
            
            K Offline
            K Offline
            klaus88
            schrieb am zuletzt editiert von
            #5

            @paul53 : OK Alles klar - Danke!! - werde ich heute abend mal versuchen!
            Danke vielmals für die Hilfe!

            lg
            Klaus

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @klaus88 sagte: Geht es, dass ich verschachtelt 2 onChange funktionen betreibe bzw. abfrage?

              Nicht verschachtelt, sondern untereinander. Und nur einen Trigger pro Datenpunkt verwenden, da sonst Ressourcenverschwendung.

              on(Beschreibung[0], function(dp) { // triggert bei Wertänderung
                 if(dp.state.val) setState(objBuero_Master, true);
                 else {
              	setState(objBuero_Slave, false);
              	setTimeout(function() {
              	    setState(objBuero_Master, false);
              	}, 1000);
                 }
              });
              
              on({id: idConnected, change: 'gt'}, function() {
                 if(getState(objBuero_Master).val) setState(objBuero_Slave, true);
              });
              
              K Offline
              K Offline
              klaus88
              schrieb am zuletzt editiert von klaus88
              #6

              @paul53 :

              Hab's natürlich nicht bis am Abend ausgehalten :-)

              FUNKTIONIERT PERFEKT!! DANKE vielmals für eure Hilfe.

              Falls jemand ein ähnliches Problem hat hier das endgültige Script:

              /* -----------------------------------
              zeitlich verzögertes einschalten des Büros
              Veröffentlichungsdatum: 26.10.2021
              
              Änderungen:
              
              ------------------------------------*/
              
              /*Setzen des State im VIS, falls noch nicht vorhanden*/
              var Beschreibung = new Array();
              var Name = new Array();
              var Art = new Array();
              var Def = new Array();
              Beschreibung[0] = "0_userdata.0.VIS.Buero1OG.Power";
              Name[0] = "Buero 1OG Power";
              Art[0] = "boolean";
              Def[0] = "false";
              
              	
              for (var x = 0; x < Beschreibung.length; x++) {
              		if (!existsState(Beschreibung[x])) {
              			createState(Beschreibung[x], {
              				type: Art[x],
              				name: Name[x],
              				read: true,
              				write: true,
              				def: Def[x]
              			});
              		}
              	}
              	
              var objBuero_Master = 'sonoff.0.SonOffBuero1OG.POWER';
              var objBuero_Slave = 'sonoff.0.SonOffS20_2.POWER';
              var objBuero_Slaveconnected = 'sonoff.0.SonOffS20_2.alive';	
              
              	
              on({id:Beschreibung[0], change: 'any'}, function(dp) {
              	if(dp.state.val) setState(objBuero_Master, true);
              		else {
              				setState(objBuero_Slave, false);
              				setTimeout(function() {
              					setState(objBuero_Master, false);
              				}, 10000);
              		}	
              });
              
              /* Change bei Änderung die größer ist als der alte Wert --> also bei true */
              on({id: objBuero_Slaveconnected, change: 'gt'}, function() {
                 if(getState(objBuero_Master).val) setState(objBuero_Slave, true);
              });
              

              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

              688

              Online

              32.6k

              Benutzer

              82.2k

              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