Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Ansage bei Tür offen länger als 2 Minuten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tesso last edited by

      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 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        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

        1 Reply Last reply Reply Quote 0
        • T
          tesso last edited by

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

          Danke

          1 Reply Last reply Reply Quote 0
          • T
            tesso last edited by

            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 Reply Last reply Reply Quote 0
            • Bluefox
              Bluefox last edited by

              @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 Reply Last reply Reply Quote 0
              • P
                pix last edited by

                @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

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                844
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                3
                6
                2726
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo