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. [gelöst]Einschalten mit Nachlauf

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    453

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

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

[gelöst]Einschalten mit Nachlauf

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
12 Beiträge 6 Kommentatoren 2.2k Aufrufe
  • Ä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.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #2

    Hallo,

    versuche es so. Ist nur im Forum zusammengetippt, was nicht gerade meine Stärke ist. Aber ich hoffe, ich habe alles richtig gemacht

    
    // Danke an paul53 für die Korrektur zum Timer
    
    // Generelle Einstellungen
    
    var debug = true;				// log Ausgaben ein-/ ausschalten
    
    var instanz = "javascript.0.";		// kann angepasst werden
    var pfad = "homematic.nachlauf.";	// kann angepasst werden
    
    var idAktor = XXXXXXXXXXXXXXXXXX ; // hier den Pfad zu deinem zu schaltenden Aktor eintragen (z.B. "hm-rpc.1.000000000ABC.4.STATE")
    
    // States anlegen
    
    createState(instanz + pfad + "schalter", false , {
      read: true, 
      write: true, 
      name: "Schalter für zu schaltenden Aktor", 
      type: "boolean", 
      def: false
    });
    
    createState(instanz + pfad + "dauer", 6 , {                 
        name: 'Einschaltdauer',
        type: 'number',
        min:  '1',
        max:  '24',
        desc: 'Dauer des Einschaltens zwischen 1 und 24 Std'
    });
    
    var idSchalter = instanz + pfad + "schalter";
    var idDauer = instanz + pfad + "dauer";
    
    var timer = null;
    
    // TRIGGER
    
    on(idSchalter, function(dp) {
    
    	if (dp.state.val) {
    		setState(idAktor, true);
    		var ontime = getState(idDauer).val * 3600000;  // Dauer in Stunden mal 3600 Sekunden mal 1000 Milisekunden
    		timer = setTimeout( fAusschalten, ontime);
    		}
    	else {
    	 clearTimeout(timer);
    	 fAusschalten();
    	 }	
    });
    
    // Ausschalt-Funktion
    
    function fAusschalten(){
    		setState(idAktor, false);
    		timer = null;
    		}
    
    

    In Vis baust du dann einen Schalter ein zum ein bzw ausschalten und daneben etwas, mit dem du die Dauer an den erzeugten Datenpunkt übergibst. Das kann quasi alles sein, ein Schieberegler oder radio buttons mit vordefinierten Werten…

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #3

      @tempestas:

      		timer = getState(idDauer).val * 60 * 1000;  // Dauer in Stunden mal 60 Minuten mal 1000 Milisekunden
      		setTimeout( fAusschalten, timer);
      		}
      	else {
      	 clearTimeout(timer);
      	 timer = null;
      	 }	
      ```` `  
      

      Das funktioniert so nicht, denn die Variable timer ist ein Timer-Objekt und keine Zeit. Korrektur:

         var ontime = getState(idDauer).val * 3600000;  // Dauer in Stunden mal 3600 Sekunden mal 1000 Milisekunden
         timer = setTimeout(fAusschalten, ontime);
         } else {
            clearTimeout(timer);
            timer = null;
         }
      

      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
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #4

        grml :)

        irgendwann lerne ich das noch. danke für die Korrektur; ich übernehme sie gleich mal oben ins Skript

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          thomasSC
          schrieb am zuletzt editiert von
          #5

          Vielen Dank hat funktioniert!!

          1 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            tempestas
            schrieb am zuletzt editiert von
            #6

            Dann setze bitte im ersten Posting das Topic auf [gelöst].

            Danke

            <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              thomasSC
              schrieb am zuletzt editiert von
              #7

              muss jetzt doch nochmal nachhaken. habe das script jetzt nochmal getestet. ich kann einschalten mit "nachlaufe" zwischen 1 und 24 h . nur ich kann nicht vorzeitig abbrechen wenn ich den Schalter wieder auf aus stelle. Ich hätte war eine Idee mit "und-oder" Geschichten aber ich kann kein javascript :) maximal blocky.

              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                DeepCore
                schrieb am zuletzt editiert von
                #8

                Da es sich bei der Frage um Homematic handelt, gibt es noch einen anderen Weg:

                setState('hm-rpc.0.xEQxxxxxxx.1.ON_TIME', 300, function() {
                    setStateDelayed("hm-rpc.0.xEQxxxxxxx.1.STATE", true, 100);
                });
                

                Als erstes wird die Einschaltdauer in Sekunden übermittelt, und im Callback dann der Aktor eingeschaltet.

                Hat den Vorteil, dass sich der Aktor auch abschaltet wenn nach dem Einschalten kein Funkkontakt mehr bestehen würde.

                1 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  tempestas
                  schrieb am zuletzt editiert von
                  #9

                  Setze bitte bei der else Anweisung statt des "timer = null" ein fAusschalten (); ein

                  Habs oben angepasst

                  <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    thomasSC
                    schrieb am zuletzt editiert von
                    #10

                    Jetzt ists perfekt, danke.

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      karstent
                      schrieb am zuletzt editiert von
                      #11

                      Hallo,

                      jetzt habe auch mal eine Frage zum obigen Script. ich möchte gerne 2 Aktoren schalten.

                      Reicht es wenn ich die Zeile

                      "var idAktor = XXXXXXXXXXXXXXXXXX ;"

                      kopiere und darunter in einer neuen Zeile einfüge.

                      also z.B.:

                      var idAktor = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;

                      var idAktor = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;

                      Oder wie muss ich da vorgehen. Ich hatte es in der Kombination versucht doch nur die untere Zeile wird "geschaltet".

                      Über ein wenig Hilfe wäre ich dankbar.

                      1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        ReverZ
                        schrieb am zuletzt editiert von
                        #12

                        Ist zwar schon länger her aber falls jemand hier mal drüber stolpert:

                        Klar wird nur der zweite Aktor geschaltet - du überschriebst ja auch die Variable mit dem zweiten Statement:

                        var idAktor = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;

                        var idAktor = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;

                        Du musst dem zweiten Aktor dann schon eine eigene Variable spendieren:

                        var idAktor1 = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ;

                        var idAktor2 = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;

                        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

                        580

                        Online

                        32.7k

                        Benutzer

                        82.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