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] Script: Wand-Display ein/aus nach Bewegungsmelder

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    14
    1
    181

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

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

[gelöst] Script: Wand-Display ein/aus nach Bewegungsmelder

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
44 Beiträge 19 Kommentatoren 9.3k 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.
  • blauholstenB Offline
    blauholstenB Offline
    blauholsten
    Developer
    schrieb am zuletzt editiert von
    #3

    Bin zwar nicht erfahren, aber vielleicht klappt das

    // Script zum Schalten des Wand-Displays nach Bewegungsmelder
    
    // Datenpunkt-ID
    var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION";
    
    // Variablendeklaration und Initialisierung bei Scriptstart
    var display_on = 'http://[rechnername:port]/cgi-bin/display_on.cgi';
    var display_off = 'http://[rechnername:port]/cgi-bin/display_off.cgi';
    var request = require('request');
    var timer = null;
    // Aufruf der Funktion bei Änderung
    on(idBewegung, function(dp) {
       if(dp.newState.val)
       {
       timer = null;
       request (display_on);
    
       timer = setTimeout(function() {
            request (display_off);
            }, 15 * 60000);
    
       }
    });
    

    EDIT: Bluefox war schneller :evil: :D

    Vielleicht kannst du ja meins trotzdem probieren, ist ja um einiges kürzer.

    Entwickler vom: - Viessman Adapter
    - Alarm Adapter

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #4

      @blauholsten:

      Bin zwar nicht erfahren, aber vielleicht klappt das

      // Script zum Schalten des Wand-Displays nach Bewegungsmelder
      
      // Datenpunkt-ID
      var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION";
      
      // Variablendeklaration und Initialisierung bei Scriptstart
      var display_on = 'http://[rechnername:port]/cgi-bin/display_on.cgi';
      var display_off = 'http://[rechnername:port]/cgi-bin/display_off.cgi';
      var request = require('request');
      var timer = null;
      // Aufruf der Funktion bei Änderung
      on(idBewegung, function(dp) {
         if(dp.newState.val)
         {
         timer = null;
         request (display_on);
         
         timer = setTimeout(function() {
              request (display_off);
              }, 15 * 60000);
         
         }
      });
      

      EDIT: Bluefox war schneller :evil: :D

      Vielleicht kannst du ja meins trotzdem probieren, ist ja um einiges kürzer. `

      Dein Sckript ist fast auch ok. Nun wird er nach 15 min nach BewegungON und nicht nach BewegungOFF ausgeschaltet. Und auch wenn zwei BewegungON kommen, dann wird sich display trotzdem ausschalten.

      // Script zum Schalten des Wand-Displays nach Bewegungsmelder
      
      // Datenpunkt-ID
      var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION";
      
      // Variablendeklaration und Initialisierung bei Scriptstart
      var display_on = 'http://[rechnername:port]/cgi-bin/display_on.cgi';
      var display_off = 'http://[rechnername:port]/cgi-bin/display_off.cgi';
      var request = require('request');
      var timer = null;
      
      // Aufruf der Funktion bei Änderung
      on(idBewegung, function(dp) {
          if (timer) {
      		clearTimeout(timer);
      		timer = null;
      	}
      
      	if (dp.newState.val) {
      	   request (display_on); 
      	} else {
      		timer = setTimeout(function() {
      			timer = null;
      			request (display_off);
              }, 15 * 60000);
         }
      });
      

      2661_2019-01-04-main.zip.pdf

      1 Antwort Letzte Antwort
      0
      • blauholstenB Offline
        blauholstenB Offline
        blauholsten
        Developer
        schrieb am zuletzt editiert von
        #5

        @Bluefox:

        Nun wird er nach 15 min nach BewegungON und nicht nach BewegungOFF ausgeschaltet. `

        huch das war ein Copy Fehler….````
        }
        else
        {

        
        Okay also reicht es nicht nur die var timer wieder null zu setzen, sondern man muss die timeout function leeren!–--->wieder was gelernt

        Entwickler vom: - Viessman Adapter
        - Alarm Adapter

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #6

          > wieder was gelernt
          Das wer der Grund warum ich zweiten Post geschrieben habe. ;)

          1 Antwort Letzte Antwort
          0
          • andreA Offline
            andreA Offline
            andre
            Developer
            schrieb am zuletzt editiert von
            #7

            Super, vielen Dank. Auch ich habe mal wieder was gelernt. :) Habe mein Script jetzt ausgebessert. Mal sehen wie es sich morgen verhält.

            MfG, Andre

            Gesendet mit Tapatalk.

            Bitte keine Support-Fragen per PN! Nutzt die öffentliche Kanäle damit auch andere von den Antworten profitieren können!

            1 Antwort Letzte Antwort
            0
            • andreA Offline
              andreA Offline
              andre
              Developer
              schrieb am zuletzt editiert von
              #8

              Habe es jetzt bereits eine ganze Weile in Betrieb. Klappt hervorragend. :)

              Danke.

              MfG,

              André

              Bitte keine Support-Fragen per PN! Nutzt die öffentliche Kanäle damit auch andere von den Antworten profitieren können!

              1 Antwort Letzte Antwort
              0
              • S Offline
                S Offline
                Solear
                schrieb am zuletzt editiert von
                #9

                @Bluefox:

                timer muss global sein:

                // Script zum Schalten des Wand-Displays nach Bewegungsmelder
                
                // Datenpunkt-ID
                var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION";
                
                // Variablendeklaration und Initialisierung bei Scriptstart
                var stateBewegung = getState(idBewegung).val;
                var display_on  = 'http://[rechnername:port]/cgi-bin/display_on.cgi';
                var display_off = 'http://[rechnername:port]/cgi-bin/display_off.cgi';
                var request = require('request');
                var timer;
                
                // Auswertung des Status "Bewegung" / Ausschalten per Timer nach 15 Minuten!
                function switch_display() {
                    if (timer) {
                        clearTimeout(timer);
                        timer = null;
                    }  
                		
                    if (stateBewegung === true) {
                        request (display_on);
                    } else {
                        timer = setTimeout(function () {
                         request (display_off);
                         timer = null;
                        }, 15 * 60000);
                    }
                }
                
                // Aufruf der Funktion bei Scriptstart
                switch_display();
                
                // Aufruf der Funktion bei Änderung
                on(idBewegung, function(dp) {
                   stateBewegung = dp.newState.val;
                   switch_display();
                });
                ```` `  
                

                Hallo,

                ich kapiere das mit dem Timer nicht.

                In dem Beispiel hier wartet er ja, bis der Bewegungsmelder wieder "false" ist.

                Was mache ich aber bei einem Taster? (Ich will eine Bewässerung steuern, für 1 Stunde an, wenn nochmal gedrückt soll er eben ab dann eine "neue" Stunde laufen)

                Wie mache ich das in dem Codeteil?

                //  Ausschalten per Timer nach 15 Minuten!
                function wasser() {
                    if (timer) {
                        clearTimeout(timer);
                        timer = null;
                    }  
                
                    if (stateBewegung === true) {			//sowas habe ich ja bei einem Taster nicht???? dieses if...else...bei einem Taster, wie formuliere ich das um?
                        setState(Ventil, true);				
                    } else {
                        timer = setTimeout(function () {
                         setState(Ventil, false);				
                         timer = null;
                        }, 60 * 60000);
                    }
                
                 // die function wasser wird mit on... gestartet
                }
                

                Sorry, habe gerade einen Knoten…

                iobroker als LXC unter Proxmox

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #10

                  @Solear:

                  @Bluefox:

                  timer muss global sein:

                  // Script zum Schalten des Wand-Displays nach Bewegungsmelder
                  
                  // Datenpunkt-ID
                  var idBewegung = "hm-rpc.0.MEQXXXXXXX.1.MOTION";
                  
                  // Variablendeklaration und Initialisierung bei Scriptstart
                  var stateBewegung = getState(idBewegung).val;
                  var display_on  = 'http://[rechnername:port]/cgi-bin/display_on.cgi';
                  var display_off = 'http://[rechnername:port]/cgi-bin/display_off.cgi';
                  var request = require('request');
                  var timer;
                  
                  // Auswertung des Status "Bewegung" / Ausschalten per Timer nach 15 Minuten!
                  function switch_display() {
                      if (timer) {
                          clearTimeout(timer);
                          timer = null;
                      }  
                  		
                      if (stateBewegung === true) {
                          request (display_on);
                      } else {
                          timer = setTimeout(function () {
                           request (display_off);
                           timer = null;
                          }, 15 * 60000);
                      }
                  }
                  
                  // Aufruf der Funktion bei Scriptstart
                  switch_display();
                  
                  // Aufruf der Funktion bei Änderung
                  on(idBewegung, function(dp) {
                     stateBewegung = dp.newState.val;
                     switch_display();
                  });
                  ```` `  
                  

                  Hallo,

                  ich kapiere das mit dem Timer nicht.

                  In dem Beispiel hier wartet er ja, bis der Bewegungsmelder wieder "false" ist.

                  Was mache ich aber bei einem Taster? (Ich will eine Bewässerung steuern, für 1 Stunde an, wenn nochmal gedrückt soll er eben ab dann eine "neue" Stunde laufen)

                  Wie mache ich das in dem Codeteil?

                  //  Ausschalten per Timer nach 15 Minuten!
                  function wasser() {
                      if (timer) {
                          clearTimeout(timer);
                          timer = null;
                      }  
                        
                      if (stateBewegung === true) {			//sowas habe ich ja bei einem Taster nicht???? dieses if...else...bei einem Taster, wie formuliere ich das um?
                          setState(Ventil, true);				
                      } else {
                          timer = setTimeout(function () {
                           setState(Ventil, false);				
                           timer = null;
                          }, 60 * 60000);
                      }
                      
                   // die function wasser wird mit on... gestartet
                  }
                  

                  Sorry, habe gerade einen Knoten… `

                  Hi probier mal:

                  // Script zum Starten einer Pumpe
                  
                  // Datenpunkt-ID
                  var idTaster = "DEIN TASTER";
                  var idPumpe = "DEINE PUMPE";
                  
                  // Variablendeklaration 
                  var timer;
                  
                  // Auswertung des Status "Bewegung" / Ausschalten per Timer nach 15 Minuten!
                  function taster() {
                      if (timer) {
                          clearTimeout(timer);
                          timer = null;
                      }  
                  
                      if (getState(idTaster).val) {
                          	setState(idPumpe, true);
                      } else {
                          timer = setTimeout(function () {
                           setState(idPumpe, false);
                           timer = null;
                          }, 60 * 60000);
                      }
                  }
                  
                  // Aufruf der Funktion bei Änderung
                  on(idTaster, function(dp) {
                  
                    taster();
                  
                  });
                  

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0
                  • S Offline
                    S Offline
                    Solear
                    schrieb am zuletzt editiert von
                    #11

                    Vielen Dank!

                    Es klappt jedoch leider nicht. Der Timer bleibt einfach an.

                    Ich glaube, dass liegt daran, dass die Homematic Taster im Status nie auf "false" gehen, sondern immer auf "true" bleiben (im Foto die letzte Zeile).

                    Das Aktivieren mit on(); funktioniert deshalb auch nur wenn man auf ein "neues true" wartet:

                    on({id: idTaster, val: true}, function() {
                           taster();
                    });
                    

                    Aber den Timer setzt er nicht zurück weil der Taster immer ein "true" zurückgibt, auch wenn er nicht gedrückt wird. Beim drücken wird das true im Foto nur ganz kurz grün und bleibt dann true.
                    1145_bildschirmfoto_vom_2016-06-01_19-34-35.png

                    iobroker als LXC unter Proxmox

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

                      Die Funktion taster() sollte nur bei einer Änderung von false auf true aufgerufen weden. Probier es mal so:

                      // Script zum Starten einer Pumpe
                      
                      // Datenpunkt-ID
                      var idTaster = "DEIN TASTER";
                      var idPumpe = "DEINE PUMPE";
                      
                      // Variablendeklaration 
                      var timer;
                      
                      function taster() {
                          if (timer) {
                              clearTimeout(timer);   // löschen zum Retriggern
                              timer = null;
                          }  
                           setState(idPumpe, true);  // Ein
                           timer = setTimeout(function () {
                               setState(idPumpe, false);
                           }, 60 * 60000);  // nach 60 Minuten aus
                      }
                      
                      // Aufruf der Funktion bei Änderung von false auf true
                      on({id: idTaster, val: true}, taster);
                      

                      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
                      • S Offline
                        S Offline
                        Solear
                        schrieb am zuletzt editiert von
                        #13

                        Jetzt klappt es, perfekt, vielen lieben Dank paul53 und blauholsten!!

                        iobroker als LXC unter Proxmox

                        1 Antwort Letzte Antwort
                        0
                        • S Offline
                          S Offline
                          Solear
                          schrieb am zuletzt editiert von
                          #14

                          Hallo

                          Falls es wen interessiert, hier mein Skript welches

                          • den Hauptwasserhahn per Taster oder Telegram für 60 Minuten aktiviert,

                            • die Heckenbewässerung genauso aktiviert,
                            • und beim ausschalten die Gartenrohre druckentlastet indem am ENde nochmal die Heckenbewässerung kurz aktiviert wird.

                            ! ````
                            // Script zum Starten der Heckenbewässerung mit Haupthahnaktivierung
                            ! // Datenpunkt-ID
                            var haupthahndauer = 60; // im Minuten
                            var heckenbewdauer = 60;
                            var idTasterHaupthahn = "hm-rpc.0.LTK005xxxx.2.PRESS_SHORT"/HM-PB-2-WM55-2 LTK005xxxx:2.PRESS_SHORT/;
                            var idTasterHeckehatti = "hm-rpc.0.LTK005xxxx.1.PRESS_SHORT"/HM-PB-2-WM55-2 LTK005xxxx:1.PRESS_SHORT/;
                            var idHaupthahn = "hm-rpc.0.LEQ08xxxxx.1.STATE"/Bewaesserung Haupthahn.STATE/;
                            var idHeckehatti = "hm-rpc.0.LEQ088xxxx.2.STATE"/Bewaesserung Hecke Hatti.STATE/;
                            ! // Variablendeklaration
                            var timerheckehatti;
                            var timerhaupthahn;
                            ! // Haupthahn Zeitsteuerung
                            function haupthahn() {
                            if (timerhaupthahn) {
                            clearTimeout(timerhaupthahn); // löschen zum Retriggern
                            timerhaupthahn = null;
                            }
                            haupthahnan();
                            timerhaupthahn = setTimeout(function () {
                            haupthahnausentlueften();

                             }, (haupthahndauer * 60000));  // nach 60 Minuten aus
                            

                            }

                            ! // Hecken Zeitsteuerung
                            function heckehatti() {
                            if (timerheckehatti) {
                            clearTimeout(timerheckehatti); // löschen zum Retriggern
                            timerheckehatti = null;
                            }

                             heckehattian();
                             setTimeout(haupthahn, 1000);
                             timerheckehatti = setTimeout(function () {
                                 haupthahnausentlueften();
                            
                             }, (heckenbewdauer * 60000));  // nach 60 Minuten aus
                            

                            }

                            ! // Steuerungsfunktionen
                            function haupthahnausentlueften() {
                            heckehattian();
                            setTimeout(haupthahnaus, 1000);
                            setTimeout(heckehattiaus, 10000);
                            }
                            ! function haupthahnan() {
                            setState(idHaupthahn, true);
                            }
                            ! function haupthahnaus() {
                            setState(idHaupthahn, false);
                            }
                            ! function heckehattian() {
                            setState(idHeckehatti, true);
                            }
                            ! function heckehattiaus() {
                            setState(idHeckehatti, false);
                            }
                            ! // Trigger
                            on({id: idTasterHaupthahn, val: true}, haupthahn);
                            on({id: idTasterHeckehatti, val: true}, heckehatti);
                            ! on("telegram.0.communicate.request", function (obj) {
                            if (obj.newState.val == "[Henrik]haupthahn" || obj.newState.val == "[Henrik]/haupthahn") {
                            haupthahn();
                            setState("telegram.0.communicate.request","leer");
                            sendTo('telegram', 'Garten Haupthahn eingeschaltet für ' + haupthahndauer + ' Minuten' +
                            '\n' +
                            '\n' + '#Was noch?' +
                            '\n' + '/torfoto' +
                            '\n' + '/haus' +
                            '\n' + '/heckehatti' +
                            '\n' + '/reboot');

                            }
                            });

                            ! on("telegram.0.communicate.request", function (obj) {
                            if (obj.newState.val == "[Henrik]heckehatti" || obj.newState.val == "[Henrik]/heckehatti") {
                            heckehatti();
                            setState("telegram.0.communicate.request","leer");
                            sendTo('telegram', 'Heckenbewässerung Hatti eingeschaltet für ' + heckenbewdauer + ' Minuten' +
                            '\n' +
                            '\n' + '#Was noch?' +
                            '\n' + '/torfoto' +
                            '\n' + '/haus' +
                            '\n' + '/haupthahn' +
                            '\n' + '/reboot');
                            }
                            });
                            ! ````

                            Ich würde aber sehr gerne noch per Telegram bzw. Datenpunkt abfragen, wie lange der Timer noch läuft.

                            Der Code mal gekürzt auf das Time-relevante:

                            var timerhaupthahn;
                            
                            function haupthahn() {
                                if (timerhaupthahn) {
                                    clearTimeout(timerhaupthahn);   // löschen zum Retriggern
                                    timerhaupthahn = null;
                                }  
                                 haupthahnan();
                                 timerhaupthahn = setTimeout(function () {
                                     haupthahnausentlueften();
                            
                                 }, (haupthahndauer * 60000));  // nach 60 Minuten aus
                            }
                            

                            Ich dachte, in der > var timerhaupthahn; steht immer die Restlaufzeit.

                            Wenn ich das jedoch abfrage mit

                            restlaufzeit = getState(timerhaupthahn);
                            
                            

                            oder

                            restlaufzeit = getState(timerhaupthahn).val;
                            
                            

                            kommt immer entweder "null" oder "Skript error" (im 2. Beispiel) heraus.

                            Kann man die Restlaufzeit nicht abfragen?

                          iobroker als LXC unter Proxmox

                          1 Antwort Letzte Antwort
                          0
                          • blauholstenB Offline
                            blauholstenB Offline
                            blauholsten
                            Developer
                            schrieb am zuletzt editiert von
                            #15

                            @Solear:

                            Ich dachte, in der > var timerhaupthahn; steht immer die Restlaufzeit. `

                            Ich weiß nicht ob das so möglich ist, aber ich glaube nicht.

                            Probier mal das(Zitat paul53)

                            var counter;
                            
                            function CountDown (seconds) {
                               counter = seconds;
                               var timer = setInterval(function () {
                                     if (counter > 0) {
                                        counter = counter - 1;
                                        log ("Im Count " + counter,"info")
                                     } else {
                                        clearInterval(timer);
                                        timer = null;
                                     }
                                  }, 1000);
                            }
                            
                            CountDown(10);     
                            

                            Musst du natürlich für dich anpassen

                            Entwickler vom: - Viessman Adapter
                            - Alarm Adapter

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              Solear
                              schrieb am zuletzt editiert von
                              #16

                              Hallo,

                              noch eine Frage.

                              Der Timerbefehl lässt sich ja zurücksetzen, so dass er neu anläuft, siehe einige Beiträge zuvor.

                              Dass man den Timerstand nicht abfragen kann, ist schade, aber nicht zu ändern. Kann man den Timer Befehl aber wenigstens vorzeitig beenden oder abbrechen? Also sozusagen auf 100% setzten? Sozusagen das Gegenteil von clearTimeout.

                              Gesendet von iPhone mit Tapatalk

                              iobroker als LXC unter Proxmox

                              1 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                Solear
                                schrieb am zuletzt editiert von
                                #17

                                OK, hab es selbst gelöst.

                                Einfach die Timerzeit ganz weit heruntersetzen.

                                Also in diesem Fall die 60000 ersetzen durch zB 1000. wobei man das durch eine Variable darstellen kann, die dann je nach "Zeitbedarf" beliebig gefüllt wird.

                                Ich probiere noch ein wenig herum und wenn ich ein sauberes Finalscript habe, stelle ich das in einem eigenen Thread zur Bewässerung vor.

                                var timerhaupthahn;
                                
                                function haupthahn() {
                                    if (timerhaupthahn) {
                                        clearTimeout(timerhaupthahn);   // löschen zum Retriggern
                                        timerhaupthahn = null;
                                    }  
                                     haupthahnan();
                                     timerhaupthahn = setTimeout(function () {
                                         haupthahnausentlueften();
                                
                                     }, (haupthahndauer * 60000));  // diese Zeiten individuell berechnen 
                                }
                                
                                

                                iobroker als LXC unter Proxmox

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  RobS
                                  schrieb am zuletzt editiert von
                                  #18

                                  Hallo zusammen,

                                  ich habe versucht das obige Skript von Bluefox zur Aktivierung des Wandtablets für meine Zwecke anzupassen:

                                  // Script zum Schalten des Wand-Displays nach Bewegungsmelder
                                  
                                  // Datenpunkt-ID
                                  var idBewegung = "hm-rpc.1.MEQ1849126.3.MOTION"/*Bewegungsmelder Flur:3.MOTION*/;
                                  
                                  // Variablendeklaration und Initialisierung bei Scriptstart
                                  var display_on = ("hm-rpc.1.MEQ0201171.1.STATE"/*iPad-Starter:1.STATE*/,false);
                                  var display_off = ("hm-rpc.1.MEQ0201171.1.STATE"/*iPad-Starter:1.STATE*/,true);
                                  var request = require('request');
                                  var timer = null;
                                  
                                  // Aufruf der Funktion bei Änderung
                                  on(idBewegung, function(dp) {
                                      if (timer) {
                                        clearTimeout(timer);
                                        timer = null;
                                     }
                                  
                                     if (dp.newState.val) {
                                        request (display_on); 
                                     } else {
                                        timer = setTimeout(function() {
                                           timer = null;
                                           request (display_off);
                                          }, 15 * 60000);
                                     }
                                  });
                                  
                                  

                                  leider habe ich hiermit nur einen Haufen Fehlermeldungen im Log und einen Absturz der Javascriptinstanz erreicht.

                                  Ich habe allerdings auch nicht verstanden, was es mit dem Timer (der Global sein muss) auf sich hat. Verstehe das so, dass da ein extra Skript erforderlich ist!? Habe im Forum nichts konkretes gefunden…

                                  Ich habe übrigens die stromlose Statusanszeige als Starter des IPads im Einsatz. Nicht wundern "false" ist an und "true" aus. Über die Homematic-Direktverknüpfung funktioniert es auch einwandfrei, nur halt nicht mit einem Timer, der bei erneuter ewegung zurückgesetzt wird. Will außerdem möglichst viele Funktionen auf ioBroker übertragen.

                                  Vielen Dank für jede Hilfe,

                                  Beste Grüße, Rob

                                  1 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    pix
                                    schrieb am zuletzt editiert von
                                    #19

                                    @RobS:

                                    Hallo zusammen,

                                    ich habe versucht das obige Skript von Bluefox zur Aktivierung des Wandtablets für meine Zwecke anzupassen:

                                    // Script zum Schalten des Wand-Displays nach Bewegungsmelder
                                    
                                    // Datenpunkt-ID
                                    var idBewegung = "hm-rpc.1.MEQ1849126.3.MOTION"/*Bewegungsmelder Flur:3.MOTION*/;
                                    
                                    // Variablendeklaration und Initialisierung bei Scriptstart
                                    var display_on = ("hm-rpc.1.MEQ0201171.1.STATE"/*iPad-Starter:1.STATE*/,false);
                                    var display_off = ("hm-rpc.1.MEQ0201171.1.STATE"/*iPad-Starter:1.STATE*/,true);
                                    var request = require('request');
                                    var timer = null;
                                    
                                    // Aufruf der Funktion bei Änderung
                                    on(idBewegung, function(dp) {
                                        if (timer) {
                                          clearTimeout(timer);
                                          timer = null;
                                       }
                                    
                                       if (dp.newState.val) {
                                          request (display_on); 
                                       } else {
                                          timer = setTimeout(function() {
                                             timer = null;
                                             request (display_off);
                                            }, 15 * 60000);
                                       }
                                    });
                                    
                                    

                                    leider habe ich hiermit nur einen Haufen Fehlermeldungen im Log und einen Absturz der Javascriptinstanz erreicht.

                                    Ich habe allerdings auch nicht verstanden, was es mit dem Timer (der Global sein muss) auf sich hat. Verstehe das so, dass da ein extra Skript erforderlich ist!? Habe im Forum nichts konkretes gefunden…

                                    Ich habe übrigens die stromlose Statusanszeige als Starter des IPads im Einsatz. Nicht wundern "false" ist an und "true" aus. Über die Homematic-Direktverknüpfung funktioniert es auch einwandfrei, nur halt nicht mit einem Timer, der bei erneuter ewegung zurückgesetzt wird. Will außerdem möglichst viele Funktionen auf ioBroker übertragen.

                                    Vielen Dank für jede Hilfe,

                                    Beste Grüße, Rob `

                                    Nee, da kommt einiges durcheinander. Mach lieber so:

                                    // Script zum Schalten des Wand-Displays nach Bewegungsmelder
                                    
                                    // Datenpunkt-ID
                                    var idBewegung = "hm-rpc.1.MEQ1849126.3.MOTION"/*Bewegungsmelder Flur:3.MOTION*/;
                                    
                                    // Variablendeklaration und Initialisierung bei Scriptstart
                                    var idDisplay = ("hm-rpc.1.MEQ0201171.1.STATE"/*iPad-Starter:1.STATE*/);
                                    
                                    var timer = null;
                                    
                                    // Aufruf der Funktion bei Änderung
                                    on(idBewegung, function(dp) {
                                        if (timer) { // wenn Timer läuft, wird er auf null gesetzt
                                          clearTimeout(timer);
                                          timer = null;
                                       }
                                    
                                       if (dp.newState.val) { // wenn erstmals Bewegung 
                                          setState(idDisplay, false);  // StromloseStatusanzeige kriegt false, also bei dir an
                                       } else { // wenn erstmals keine Bewegung wird timer gestartet
                                          timer = setTimeout(function() {
                                             timer = null;
                                             setState(idDisplay, true);  // Stausanzeige kriegt ein true, also bei dir aus
                                            }, 15 * 60 * 1000); // nach 15 * 60s, also 15 Minuten
                                       }
                                    });
                                    
                                    

                                    Ein globales Skript brauchst du nicht. Das geht alles hier.

                                    Gruß

                                    Pix

                                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                    1 Antwort Letzte Antwort
                                    0
                                    • R Offline
                                      R Offline
                                      RobS
                                      schrieb am zuletzt editiert von
                                      #20

                                      Super Pix, vielen Dank!

                                      Es funktioniert einwandfrei.

                                      Habe übrigens auch dein Skript zum Aktualisieren von Vis im Einsatz und seit vorhin auch die Sayit-Ansage mit Datum, Wetter und Geburtstag.

                                      Vielen Dank auch dafür, hast mir schon sehr oft geholfen!

                                      Grüße, Rob

                                      1 Antwort Letzte Antwort
                                      0
                                      • S Offline
                                        S Offline
                                        Sven2013
                                        schrieb am zuletzt editiert von
                                        #21

                                        Hallo,

                                        Ich wollte dieses Script nutzen um mein Wandtablet bei Bewegung des Innenbewegungsmelders für bestimmte Zeit einzuschalten. Bisher mache ich das per Tasker.

                                        Geht dieses Script dafür?

                                        Ich weiß nämlich nicht woher ich die 2 variable nehmen muss. (Für das Tablet)

                                        Wie löst ihr das?

                                        Gruß Sven

                                        Gesendet von iPhone mit Tapatalk

                                        1 Antwort Letzte Antwort
                                        0
                                        • S Offline
                                          S Offline
                                          Superdad
                                          schrieb am zuletzt editiert von
                                          #22

                                          Hallo,

                                          ich würde auch gerne wissen, woher ihr

                                          var display_on = ("hm-rpc.1.MEQ0201171.1.STATE"/iPad-Starter:1.STATE/,false);

                                          var display_off = ("hm-rpc.1.MEQ0201171.1.STATE"/iPad-Starter:1.STATE/,true);

                                          nehmt?

                                          Geht das auch mit einem anderen Tablett?

                                          Gruss Superdad

                                          CCU3

                                          iOBroker auf IntelNUC Proxmox

                                          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

                                          262

                                          Online

                                          32.7k

                                          Benutzer

                                          82.4k

                                          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