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. JavaScript
  5. Ansage bei Tür offen länger als 2 Minuten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Ansage bei Tür offen länger als 2 Minuten

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 3 Kommentatoren 2.9k 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
    tesso
    schrieb am zuletzt editiert von
    #1

    Hallo Leute,

    ich habe keine Ahnung wie ich das angehen soll.

    Es gelingt mit bereits beim öffnen der Tür eine Ansage zu machen. Nur wie baue ich die zusätzliche Bedingung "länger als 2 Minuten offen" ein?

         var idSayIt   = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID
         var idButton = "hm-rpc.0.MEQ0175436.1.STATE"; // Test ID
         var lastSay   = null;
        // Bei Tastendruck wird folgender Text gesprochen
         subscribe({id: idButton, val: true}, function (obj) {
             if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
                      lastSay = (new Date()).getTime();
                      setState (idSayIt, "de;40;Wohnungstür geöffnet");
             }
    
         });
    
    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Hallo tesso,

      ich nutze dafür den CUxD und ioBroker. Das CUxD Wrapper State Device kann für jedes Homematic Gerät mit STATE Datenpunkt angelegt werden. Es misst die Zeit jedes Zustandes (false/true) und speichert sie in verschiedenen Datenpunkten. Ebenso ist die Nutzung eines Timers mit Eventauslösung am Ende möglich. Das wird dann bei der Konfiguration des CUxD Gerätes in der WebUI festgelegt. http://homematic-forum.de/forum/viewtopic.php?f=31&t=12669&p=101103 ist die Konfiguration erklärt, habe das schon früher genutzt.

      Dann musst du nur die CCU-Daten in ioBroker neu einlesen und hast die Datenpunkte zur Verfügung. Ein Datenpunkt wie hm-rpc.1.CUX9001002.1.TIME_ON_EVENT kann abgefragt werden. Er zeigt als Status an, ob der Timer läuft oder nicht, also ob Tür zu oder auf. Wenn false, dann Zeit abgelaufen. Alternativ kann auch der Wert von hm-rpc.1.CUX9001002.1.TIME_ON abgefragt werden. Der gibt die Dauer/Zeit in des Zustands in Minuten an.

      ! So überwache ich das WC-Fenster:

      idWCFensterTimeOn = "hm-rpc.1.CUX9001009.1.TIME_ON"/*Fenster WC Statistik 1h.TIME_ON*/;
      >! on( {
          id: idWCFensterTimeOn,
          change: 'ne'
      }, function(data) {
          var anwesenheit = getState(idAnwesenheit),
              nachtruhe = getState(idNachtruhe),
              status,
              betreff = "ioBroker Meldung";
              zeit = parseInt(data.newState.val,10);
          if (data.newState.val > 30 && anwesenheit.val === 1) { // wenn 30min und anwesend
              if (nachtruhe.val !== 1) { // wenn nicht Nachtruhe
                  status = 'Das WC-Fenster ist seit ' + zeit + ' Minuten geöffnet. Bitte das Fenster schließen!' ;
                  meldung_sayit(status);
                  meldung_push(status, betreff, 1);
              } else { // bei Nachtruhe
                  status = 'Das WC-Fenster ist bei Nachtruhe seit ' + zeit + ' Minuten geöffnet. Bitte schließen!' ;
                  // meldung_sayit(status);
                  meldung_push(status, betreff, 0); // bei Nachtruhe leiser
              } // Ende Nachtruhe
          } // Ende Anwesenheit
          log(status, "info");
      });
      

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

        Das klingt gut. Die Wrapper Devices habe ich bisher nie genutzt. Schaue ich mir auf alle Fälle an.

        Danke

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tesso
          schrieb am zuletzt editiert von
          #4

          Das Gerät habe ich angelegt. Mit Test geht es erst Morgen weiter.

          @pix

          Kannst du mir evtl. noch die Funktionen meldung_sayit und meldung_push zur Verfügung stellen? Ich bin bei Javascript leider blutiger Anfänger. Bisher dachte ich, das brauch ich nicht lernen. Nun kommt iobroker und ich brauche es doch.

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

            @tesso:

            Hallo Leute,

            ich habe keine Ahnung wie ich das angehen soll.

            Es gelingt mit bereits beim öffnen der Tür eine Ansage zu machen. Nur wie baue ich die zusätzliche Bedingung "länger als 2 Minuten offen" ein?

                 var idSayIt   = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID
                 var idButton = "hm-rpc.0.MEQ0175436.1.STATE"; // Test ID
                 var lastSay   = null;
                // Bei Tastendruck wird folgender Text gesprochen
                 subscribe({id: idButton, val: true}, function (obj) {
                     if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
                              lastSay = (new Date()).getTime();
                              setState (idSayIt, "de;40;Wohnungstür geöffnet");
                     }
                   
                 });
            ```` `  
            

            Wie währe es damit:

            var idSayIt  = "sayit.0.tts.text"; // Hier die entsprechende SayIt Text ID
            var idButton = "hm-rpc.0.MEQ0175436.1.STATE"; // Test ID
            var lastSay  = null;
            vra timer    = null;
            
            // Bei Tastendruck wird folgender Text gesprochen
            subscribe(idButton, function (obj) {
            	if (obj.newState.val) {
            		if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
            			lastSay = (new Date()).getTime();
            			setState (idSayIt, "de;40;Wohnungstür geöffnet");
            		}
            		// Starte timer für 2 Minuten
            		if (!timer) {
            			timer = setTimeout(function () {
            				timer = null;
            				setState (idSayIt, "de;40;Wohnungstür ist zu lang geöffnet");
            			}, 120000);
            		}
            	} else {
            		// Tür zugemacht. Falls timer läuft = stopp
            		if (timer) {
            			clearTimeout(timer);
            			timer = null;
            		}
            	}
            
            });
            
            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              @tesso:

              Das Gerät habe ich angelegt. Mit Test geht es erst Morgen weiter.

              @pix

              Kannst du mir evtl. noch die Funktionen meldung_sayit und meldung_push zur Verfügung stellen? Ich bin bei Javascript leider blutiger Anfänger. Bisher dachte ich, das brauch ich nicht lernen. Nun kommt iobroker und ich brauche es doch. `

              Das ist eigentlich nur:

              setState(idSayitHome24MP, ansage);
              ````und````
                      sendTo("pushover", {
                          message: text,
                          title: titel,
                          priority: prio
                      });
              

              Das ist in eine Funktion gepackt, weil ich zusätzlich noch Variablen abfrage, ob das ganze angesagt/gepusht werden soll oder nicht (daher Optin).

              Bluefox' Lösung ist natürlich auch fein. Ich mag CUxD als Lösung für CCU-geräte, weil es so zuverlässig arbeit. Der Wrapper läuft auch über einen CCU-Neustart hinaus. Die Daten über die offenstehende Tür kommen von der CCU, warum also nicht noch die angereicherten Daten des CUxD mitnehmen. Wenn du allerdings mal andere Systeme anbindest (KNX, Homepilot, etc..), dann wirst du wieder die reine JavaScript Variante brauchen.

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


              Support us

              ioBroker
              Community Adapters
              Donate

              744

              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