Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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
    18
    1
    787

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

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

[gelöst]Einschalten mit Nachlauf

Scheduled Pinned Locked Moved Skripten / Logik
12 Posts 6 Posters 2.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    thomasSC
    wrote on last edited by
    #1

    Hallo,

    Ich möchte gerne einen Homematic Schaltaktor einschalten und dann Verzögert ausschalten.

    ich komme aus der fhem Welt. Da war das keine Thema. einfach einen Wert in on-for-timer und schon hats funktioniert.

    In ioBroker geht das bestimmt ähnlich einfach. Nur sehe ich den Wald vor lauter Bäumen glaub ich nicht.

    Ich möchte : einen Schaltaktor für 6 / 12 / 24 Stunden einschalten können. Die Zeit würde ich gerne über vis Verstellen können.

    Kann mir jemand bitte einen Tipp geben? Ich muss ja erst den Timer setzten und danach den state, oder?

    Vielen Dank schon mal.

    Gruß Thomas

    1 Reply Last reply
    0
    • T Offline
      T Offline
      tempestas
      wrote on last edited by
      #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 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #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 Reply Last reply
        0
        • T Offline
          T Offline
          tempestas
          wrote on last edited by
          #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 Reply Last reply
          0
          • T Offline
            T Offline
            thomasSC
            wrote on last edited by
            #5

            Vielen Dank hat funktioniert!!

            1 Reply Last reply
            0
            • T Offline
              T Offline
              tempestas
              wrote on last edited by
              #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 Reply Last reply
              0
              • T Offline
                T Offline
                thomasSC
                wrote on last edited by
                #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 Reply Last reply
                0
                • D Offline
                  D Offline
                  DeepCore
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    tempestas
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      thomasSC
                      wrote on last edited by
                      #10

                      Jetzt ists perfekt, danke.

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        karstent
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          ReverZ
                          wrote on last edited by
                          #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 Reply Last reply
                          0

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          581

                          Online

                          32.8k

                          Users

                          82.7k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe