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. Pushover senden mit zeitlichem Versatz

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Pushover senden mit zeitlichem Versatz

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 1.3k 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.
  • B Offline
    B Offline
    baluderbär
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    momentan nutze ich ein Skript, das mir eine Pushover-Nachricht sendet, wenn die Alarmanlage scharf ist und eine Bewegung festgestellt wird.

    var idMotion = "hm-rpc.0.KEQ084xxxx.1.MOTION"; // Bewegungsmelder Diele Datenpunkt MOTION
    var idAlarm = "hm-rega.0.26xxx"/*Alarmanlage*/;   
    
    on({id:idAlarm, change:'ne', val: true}, function () {
        warten();  
        });
    
    function warten() {                      
        setTimeout(waittime, 1 * 500);    // Warteschleife, 1 * 500 Millisekunden und rufe dann waittime auf
    }
    
    function waittime() {                       
        var Alarm = getState(idAlarm).val;
        if (Alarm === true) sendTo("pushover.0", "Alarmanlage AKTIVIERT"); 
    }
    
    on({id:idMotion, val: true}, function () {
        var Alarm = getState(idAlarm).val;
        if (Alarm === true) sendTo("pushover.1", "Alarmanlage AKTIVIERT und Diele: Motion");   
    });
    

    Jetzt würde ich das Skript gerne so umbauen, dass folgendes passiert.

    Wenn Alarmanlage scharf und Bewegung entdeckt, warte x Sekunden. Wird die Alarmanlage innerhalb von x Sekunden deaktiviert sende keine Pushover-Nachricht. Bleibt die Alarmanlage nach x Sekunden noch scharf, sende eine Pushover-Nachricht.

    Hat jemand eine Idee, wie ich das Skript abändern muss?

    Vielen Dank im Voraus.

    Martin

    ioBroker auf VM Proxmox (Intel NUC-Kit i3-7100U 2.4GHz HD620 NUC7I3BNH)

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

      Hallo,

      abgesehen von dem umständlichen Konstrukt mit den Funktionen warten() und waittime() kannst du ein setTimeout von X Sekunden vor die pushover-Sendung setzen. Wenn dann die Alarmanlagen in der Zwischenzeit auf false geht, kannst du den Timeout mit clearTimeout löschen.

      Hier mal mein Versuch:

      var idMotion = "hm-rpc.0.KEQ084xxxx.1.MOTION"; // Bewegungsmelder Diele Datenpunkt MOTION
      var idAlarm = "hm-rega.0.26xxx"/*Alarmanlage*/;   
      
      var timer = null; // Timervariable setzen und nullen (bei jedem Skriptstart)
      
      on({
          id:idAlarm, 
          change:'ne'
      }, function (obj) {
          setTimeout(function() {
              if (obj.state.val) sendTo("pushover.0", "Alarmanlage AKTIVIERT"); // verzögerte Meldung
              if (!obj.state.val) {
                  sendTo("pushover.0", "Alarmanlage DEAKTIVIERT"); // optionale Verzögerte Meldung
                  if(timer) clearTimeout(timer); // anderen Timer aus Motion löschen
                  timer = null; // anderen Timer nullen
              }
          }, 1000 * 0.5); // halbe Sekunde bis Ausführung
      });
      
      on({
          id:idMotion, 
          val: true
      }, function () {
          var alarm = getState(idAlarm).val; // Zustand Alarmanlage aktuell abholen
          timer = setTimeout(function() {  // Verzögerung starten (alles in geschweiften Klammern wird verzögert)
              timer = null;  // verzögert Timer nullen
              if (alarm) sendTo("pushover.1", "Alarmanlage AKTIVIERT und Diele: Motion");   // verzögert Nachricht senden
          }, 1000 * 10); // Verzögerungseinstellungen; Meldung über Bewegung erst nach 10s     
      });
      
      

      Wenn die Alarmanlage eingeschaltet wird (vermutlich bei true von Boolean Typ Homematic-Variable), dann wird verzögert eine Meldung über das EInschalten geschickt (0.5 Sekunden oder 500ms später). Ebenso beim Ausschalten (kannst du auskommentieren).

      Wenn bei aktivierter Alarmanlage eine Bewegung erkannt wird, dann startet in der zweiten on-Subscription ein Timer (10s oder 10000 Millisekunden). Wenn diese Zeit abgelaufen ist, wird der Timer sicherheitshalber genullt und eine Pushnachricht geschickt, dass eine Bewegung erkannt wurde. Statt 10s kannste natürlich auch eine kürzere Zeit nehmen. Wenn nun während dieser 10s die Alarmanlage deaktiviert wird, dann wird der gestartete Timer abgebrochen und die eigentlich anstehenden Aufgaben aus den geschweiften Klammern werden nicht abgearbeitet.

      Damit beide on-Subscriptions auf die timer-Variable zugreifen können, wird sie ganz oben im Skript deklariert (var timer = null).

      Das Skript bitte nicht in "global", sondern in "common" speichern. Nenne es doch einfach "Alarmanlage".

      Man kann es später einfach erweitern, um weitere Bewegungsmelder einzubauen oder zB die Zeiten mitzuschicken, wann der Alarm ausgelöst wurde ("Alarmanlage EIN und Bewegung in Diele (vor 10s)"). Ich gehe davon aus, es dient dazu, keinen Fehlalarm zu provozieren, wenn man selbst beim Betreten der Wohnung in den Bewegungsmelderbereich kommt.

      Gib mal Feedback

      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
      • B Offline
        B Offline
        baluderbär
        schrieb am zuletzt editiert von
        #3

        Hallo Pix,

        du bist mein Held, was würde ich dafür tun programmieren zu können. Dein Skript hat zu 100% meinen Vorstellungen entsprochen.

        Der Grund weshalb ich eine Verzögerung möchte ist in der Tat, die Vermeidung eines Fehlalarms.

        Echt unglaublich wie einem hier geholfen wird …. tausend Dank.

        <u>Anderes Thema:</u>

        Momentan habe ich für jeden TFK (Tür-Fenster-Kontakt) ein eigenes Skript (das gleiche wie beim Motion-Alarm in der Diele), um bei einem offenen Kontakt auch eine Pushover zu senden.

        Mit Sicherheit kann man alle TFK in einem Skript zusammenfassen, richtig? Wenn es keine Umstände machen sollte, würde ich mich freuen wenn du mir noch einmal unter die Arme greifen könntest.

        Wichtig wäre, dass der auslösende TFK auch mit seinem Namen in der Pushover mitgeschickt wird.

        z.B. Alarmanlage AKTIVIERT und Gästebad: Fenster OFFEN

        Schönen Abend und Gruß

        Martin

        ioBroker auf VM Proxmox (Intel NUC-Kit i3-7100U 2.4GHz HD620 NUC7I3BNH)

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

          Hallo,

          schön, dass es läuft.

          Sind die TFK alle einem Gewerk zugeordnet? Dann ist es einfach und man muss keine Ausnahmen festlegen (Ausnahme können umgebaute TFK für sonstige Aufgaben oder so sein). Notfalls leg in der HM ein Gewerk an. Bespielname: "Alarmsensor".

          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
          • B Offline
            B Offline
            baluderbär
            schrieb am zuletzt editiert von
            #5

            @pix:

            Hallo,

            schön, dass es läuft.

            Sind die TFK alle einem Gewerk zugeordnet? Dann ist es einfach und man muss keine Ausnahmen festlegen (Ausnahme können umgebaute TFK für sonstige Aufgaben oder so sein). Notfalls leg in der HM ein Gewerk an. Bespielname: "Alarmsensor".

            Pix `
            Hallo Pix,

            Bisher verwende ich die TFK nur an Türen und Fenstern. Also kein "Fremdeinsatz". Alle TFK sind einem Gewerk zugeordnet.

            Gruß Martin

            Gesendet von iPhone mit Tapatalk

            ioBroker auf VM Proxmox (Intel NUC-Kit i3-7100U 2.4GHz HD620 NUC7I3BNH)

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

              Suchfunktion nutzen, dann muss pix das nicht für dich machen.

              Er hat hier ein komplettes Skript gepostet.

              <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
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              335

              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