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
    445

  • 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
    thomasSC
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • 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

                          649

                          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