Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Pincode Eingabe Alarmanlage

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Pincode Eingabe Alarmanlage

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

      Hallo zusammen,

      ich habe auch noch eine Frage zum hier vorgestellten tollen Skript.

      1.) Wofür wird der State "Pin" erstellt? Ich konnte im Skript nirgendswo eine Zeile finde, die auf diesen Datenpunkt verweist.

      *EDIT = Nr. 1 hat sich erledigt. Ich vermute mal, dass man in der Variable den eigentlich PIN auslagern soll damit dieser nicht im Skript steht.

      Habe ich mal so gemacht und die PIN dann per getState in die Variable geladen

      2.) Im Testskript wurde als Pin "1111" gewählt. Bei mir lässt es das Skript nicht zu zwei gleiche Zahlen hintereinander zu schreiben. Erfasse ich als PIN z.b. "1234" reagiert das Skript wie gewünscht. Habt ihr dieses Phänomen auch?

      Skript habe ich aus dem letzten Codeschnippsel Smartboart genommen und lediglich den Datenknoten Alarm in Alarmobjekte geändert.

      ! ````
      ! // -----------------------------------------------------------------------------
      // allgemeine Variablen
      // -----------------------------------------------------------------------------
      var logging = true; // Logging on/off
      var instanz = 'javascript.0'; instanz = instanz + '.Alarmobjekte'; //
      ! var pfad0 = 'Alarmobjekte.Pin.Disable.'; // Pfad innerhalb der Instanz
      ! // -----------------------------------------------------------------------------
      // Variablen für Pin-Abfrage
      // -----------------------------------------------------------------------------
      var PinTast = ""; // Inhalt der Eingabe
      var PinTemp =""; // Puffer für eingegebe Ziffern
      var PinLae = 0; // Pin-Länge bei Eingabe
      ! var PinState = false ; // Eingabestatus - Eingabe beginnt nach Taste '#' und wird mit Taste '#' abgeschlossen
      var PinFehl =false; // Statusflag für fehlerhafte Eingabe
      var PinAnz = ""; // Angezeiger 'Displaytext' z.B. ****
      ! var PinSoll = 1111; // Pin die zur Deaktivierung der Alarmanlage benötigt wird
      ! // -----------------------------------------------------------------------------
      // Objekte
      // -----------------------------------------------------------------------------
      ! // Objekte für Pin-Eingabe
      createState(pfad0 + 'PinSelect', "" , {name: 'Pin-Eingabe'});
      createState(pfad0 + 'Pin', '0000' , {name: 'Pin'});
      createState(pfad0 + 'PinFehler', false , {name: 'Pin-Fehler'});
      createState(pfad0 + 'PinAnz', '' , {name: 'Pin-Anzeige'});
      createState(pfad0 + 'VisKeyPad', '' , {name: 'State für Vis Keypad Sichtbar'}); //State für Vis Keypad Sichtbar wird von Button in Vis beschrieben und bei unscharf zurück gesetzt
      ! // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      ! // #############################################################################
      // # #
      // # Pin-Abfrage #
      // # #
      // #############################################################################
      ! on('javascript.0.Alarmobjekte.Pin.Disable.PinSelect', function (dp) {
      if (dp.newState.val === 0 || dp.newState.val === 1 || dp.newState.val === 2 || dp.newState.val === 3 || dp.newState.val === 4 || dp.newState.val === 5 || dp.newState.val === 6 || dp.newState.val === 7 || dp.newState.val === 8 || dp.newState.val === 9) {
      PinTast = dp.newState.val;
      PinEingabe();
      }
      if (dp.newState.val === 'E') {
      PinPruef();
      }
      if (dp.newState.val === 'R') {
      PinReset();
      }
      });
      ! function PinEingabe () {
      PinTemp = (PinTemp + PinTast);
      PinAnz = (PinAnz + '*');
      setState('javascript.0.Alarmobjekte.Pin.Disable.PinAnz', PinAnz);
      PinLae = (PinLae +1) ;
      }
      ! function unscharf(){
      setState('javascript.0.Alarmobjekte.in.disable', true);
      setState('javascript.0.Alarmobjekte.Pin.Disable.VisKeyPad', false);
      if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');
      ///////////////////////////////////////////////////// Hier musst du dann deinen Türöffner auf machen reinschreiben
      }
      ! function PinPruef() {
      if (PinTemp == PinSoll) {
      if(logging) log('PinEingabe Disable erfolgreich');
      unscharf();

          setTimeout(function() {
      
              PinReset();
          }, 10 * 1000);
      

      ! } else {
      if(logging) log('Pin Eingabe Disable falscher Pin');
      setState('javascript.0.Alarmobjekte.Pin.Disable.PinFehler', true);
      PinReset();
      }
      }
      ! function PinReset() {
      PinLae=0;
      PinAnz="";
      PinTemp="";
      setState('javascript.0.alarm.Pin.Disable.PinAnz', PinAnz);
      }

      1 Reply Last reply Reply Quote 0
      • A
        ahfreezer last edited by

        OK, hab's selbst gelöst.

        Das Skript wird bei gleichem Wert schlicht weg nicht neu getriggert. Daher kommt die Zahl nie an.

         setState('javascript.0.Alarmobjekte.Pin.Disable.PinSelect', '11'); 
        

        Ich setze nach jeder Zahl das Feld auf eine zweistellige Zahl. Damit stell ich sicher, dass beim nächsten Drücken

        der Wert auf jeden Fall gezogen wird.

        Oder habt ihr bessere Ideen/Erklärungen.

        1 Reply Last reply Reply Quote 0
        • smartboart
          smartboart last edited by

          Change any Dann wird auch bei gleichen Zahlen getriggert

          Gesendet von meinem CLT-L09 mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • I
            ifled88 last edited by

            @smartboart:

            Wie gesagt habe es 2 mal am laufen . Ich beschreibe mit der pineingabe das state für disable und mit der 2. Pineingabe das state für stop..

            Die button dafür aus der alarmanlage setzen den state aus dem pinpad welches ich für vis eingefügt habe…

            Sobald also der button deaktiviern oder stop gedrückt wird , öffnet sich das pin pad .sobald der code richtig eingegeben wurd wird der state disable oder stop beschrieben und das pad verschwindet.

            function unscharf(){

            setState('javascript.0.alarm.in.disable', true);

            setState('javascript.0.alarm.Pin.Disable.VisKeyPad', false);

            if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');

            Gesendet von meinem SM-G800F mit Tapatalk

            ![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 0fd20f.jpg">https://uploads.tapatalk-cdn.com/20180908/ac0f04bfb882b922ff039b653a0fd20f.jpg</link_text>" /> ` ~~@smartboart

            Würdest du dein View incl widget auch hergeben :-)?

            oder gar dein Projekt? :mrgreen:~~

            C 1 Reply Last reply Reply Quote 0
            • smartboart
              smartboart last edited by

              Hallo, nein das kann ich leider nicht… Bei exportieren werden sämtliche persönliche Daten Passwörter IP zugangsdaten Pins und vieles mehr mitgenommen...eben alles was in den widgets hinterlegt ist... Das zu filtern ist zu viel Aufwand... Dafür habe ich keine Zeit... Und mit den Daten gebe ich nix raus... Sorry

              Gesendet von meinem CLT-L09 mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • Peoples
                Peoples last edited by

                @smartboart:

                Hallo, nein das kann ich leider nicht… Bei exportieren werden sämtliche persönliche Daten Passwörter IP zugangsdaten Pins und vieles mehr mitgenommen...eben alles was in den widgets hinterlegt ist... Das zu filtern ist zu viel Aufwand... Dafür habe ich keine Zeit... Und mit den Daten gebe ich nix raus... Sorry

                Gesendet von meinem CLT-L09 mit Tapatalk `

                Und der anonymisierte Export funktioniert nicht?

                1 Reply Last reply Reply Quote 0
                • C
                  ChrisXY @ifled88 last edited by

                  @delfser said in Pincode Eingabe Alarmanlage:

                  @smartboart:

                  Wie gesagt habe es 2 mal am laufen . Ich beschreibe mit der pineingabe das state für disable und mit der 2. Pineingabe das state für stop..

                  Die button dafür aus der alarmanlage setzen den state aus dem pinpad welches ich für vis eingefügt habe…

                  Sobald also der button deaktiviern oder stop gedrückt wird , öffnet sich das pin pad .sobald der code richtig eingegeben wurd wird der state disable oder stop beschrieben und das pad verschwindet.

                  function unscharf(){

                  setState('javascript.0.alarm.in.disable', true);

                  setState('javascript.0.alarm.Pin.Disable.VisKeyPad', false);

                  if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');

                  Gesendet von meinem SM-G800F mit Tapatalk

                  ![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 0fd20f.jpg">https://uploads.tapatalk-cdn.com/20180908/ac0f04bfb882b922ff039b653a0fd20f.jpg</link_text>" /> ` ~~@smartboart

                  Würdest du dein View incl widget auch hergeben :-)?

                  oder gar dein Projekt? :mrgreen:~~

                  hui das schaut echt schön aus dein VIS 🙂 Also da hätte ich auch Intresse dran. Aber beim Thema VIS bin ich noch nicht ganz angekommen. Bin aktuell noch mit Blockly sachen zu gange 😉

                  1 Reply Last reply Reply Quote 0
                  • Homer.J.
                    Homer.J. last edited by

                    Hi,
                    hier nochmal das Widget.

                    Grüße

                    Alarm_Pincode.txt

                    1 Reply Last reply Reply Quote 0
                    • S
                      sectorchan last edited by

                      Wie ist denn die Alarmausgabe bei euch realisiert?
                      Gibts auch was mit mit SIM Karte und sms verschicken?

                      T S CKMartens 3 Replies Last reply Reply Quote 0
                      • T
                        tempestas @sectorchan last edited by

                        @sectorchan

                        Telegram und bei Aktivierung "laut" Alarm auch auf Sonos

                        1 Reply Last reply Reply Quote 0
                        • K
                          KabaKoenig last edited by

                          Danke für alle die an diesem Projekt gearbeitet haben.
                          Ich hätte noch eine Frage zur Pin-Eingabe, ist es möglich das man mehrere Codes abfragt?
                          Und natürlich hallo an alle ich bin voll dabei mich einzuarbeiten.
                          Liebe Grüße
                          Timo

                          1 Reply Last reply Reply Quote 0
                          • S
                            smarti2015 @sectorchan last edited by

                            @sectorchan
                            Normale Benachrichtigungen und Statusmeldungen lasse ich mir per Telegram zuschicken.

                            Für die Alarmanlage und andere sehr wichtige Infos nutze ich Pushover.
                            Bei Pushover kann man sich schön den Dark Mode einstellen und wenn man die Benachrichtigung auf "Priorität hoch" stellt, erscheinen die ganze dringenden Benachrichtigungen, wie z.B eine Fenster wurde grad geöffnet bei scharfer Alarmanlage, rot hinterlegt.

                            Zusätzlich kannst du bei Pushover dir noch einen kurze oder auch langen eindringlichen Benachrichtigungston hinterlegen, was jetzt bei einem Auslösen der Alarmanlage super ist.
                            Also ich finde es mit Pushover für die Alarmanlage perfekt.

                            1 Reply Last reply Reply Quote 0
                            • CKMartens
                              CKMartens @sectorchan last edited by

                              @sectorchan ginge auch mit Asterisk eine gesprochene Nachricht an eine Rufnummer zu schicken.

                              Danny 0 1 Reply Last reply Reply Quote 0
                              • Danny 0
                                Danny 0 @CKMartens last edited by

                                Hi,

                                danke für den Quellcode. Ich habe ihn noch etwas erweitert.
                                Neue Funktion:

                                1. Auswahl Zwischen Pin aus der Variablen oder Quellcode
                                2. Vorschau in der Vis von der eingegebenen Zahl, die dann aber wieder verschwindet nach ein paar Millisekunden
                                3. Reaktion auf Taste "#" und "-" anstelle von "R" und "E"
                                4. Nachricht in der VIS wenn der Pin Richtig oder Falsch war
                                // -----------------------------------------------------------------------------
                                // allgemeine Variablen
                                // -----------------------------------------------------------------------------
                                var logging = true;                                                        // Logging on/off
                                var instanz = 'javascript.0';  instanz = instanz + '.Alarm';                     // 
                                 
                                var pfad0 =     'alarm.Pin.';                        // Pfad innerhalb der Instanz 
                                 
                                // -----------------------------------------------------------------------------
                                // Variablen für Pin-Abfrage
                                // -----------------------------------------------------------------------------
                                var PinTast = "";                   // Inhalt der Eingabe
                                var PinTemp ="";                    // Puffer für eingegebe Ziffern
                                var PinLae = 0;                     // Pin-Länge bei Eingabe
                                 
                                var PinState = false ;              // Eingabestatus - Eingabe beginnt nach Taste '#' und wird mit Taste '#' abgeschlossen
                                var PinFehl = false;                 // Statusflag für fehlerhafte Eingabe
                                var PinAnz = "";                    // Angezeiger 'Displaytext' z.B. ****
                                var PinAnzStat = 0;                 // Status der PinAnzeige im Display (0-Ruhe | 1-Start [grau] | 2-richtig [gruen] | 3-falsch [rot])
                                var PinShowLastState = true ;       // Zeigt die letzte eingegeben Zahl in der Variable VisKeyPad an z.B. ***4 diese Verschwindet automatisch nach einer gewissen zeit
                                var PinShowLastStateDelay = 400 ;   // Zeit in ms (Millisekunden) die die letzte eingebene Zahl angezeigt wird
                                
                                var PinSoll = getState(pfad0 + 'Pin').val;         // Pin die zur Deaktivierung der Alarmanlage benötigt wird
                                // var PinSoll = String("1111");         // Pin die zur Deaktivierung der Alarmanlage benötigt wird
                                
                                var PinUnlockMsg = "unlock"         // Text der in PinAnz zu sehen ist wenn der Pin i.O. eingegeben wurde
                                var PinFailureMsg = "failure"         // Text der in PinAnz zu sehen ist wenn der Pin i.O. eingegeben wurde
                                 
                                // -----------------------------------------------------------------------------
                                // Objekte
                                // -----------------------------------------------------------------------------
                                 
                                // Objekte für Pin-Eingabe
                                createState(pfad0 + 'disable', false ,  {name: 'Alarm abschalten'});
                                createState(pfad0 + 'PinSelect', "" , {name: 'Pin-Eingabe'});
                                createState(pfad0 + 'Pin', '0000' ,  {name: 'Pin'});
                                createState(pfad0 + 'PinFehler', false ,  {name: 'Pin-Fehler'});
                                createState(pfad0 + 'PinAnzStat', 1 ,  {name: 'PinAnzeigeStatus'});
                                createState(pfad0 + 'PinAnz', '' ,  {name: 'Pin-Anzeige'});
                                createState(pfad0 + 'VisKeyPad', '' ,  {name: 'State für Vis Keypad Sichtbar'}); //State für Vis Keypad Sichtbar wird von Button in Vis beschrieben und bei unscharf zurück gesetzt
                                 
                                // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                                // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                                
                                // #############################################################################
                                // #                                                                           #
                                // #  Pin-Abfrage                                                              #
                                // #                                                                           #
                                // #############################################################################
                                
                                on({id: 'javascript.0.alarm.Pin.PinSelect', change: "any"}, function (dp) {
                                    if (dp.state.val === 0 || dp.state.val === 1 || dp.state.val === 2 || dp.state.val === 3 || dp.state.val === 4 || dp.state.val === 5 || dp.state.val === 6 || dp.state.val === 7 || dp.state.val === 8 || dp.state.val === 9) {
                                        PinTast = dp.state.val;
                                        PinEingabe();
                                    }  
                                    if (dp.state.val === '#') {
                                        PinPruef();
                                    }      
                                    if (dp.state.val === '-') {
                                        PinReset();  
                                    }      
                                });
                                 
                                function PinEingabe () {
                                    PinTemp = (String(PinTemp) + String(PinTast));
                                    setState('javascript.0.alarm.Pin.VisKeyPad', PinAnz + PinTast);
                                    PinAnz = String(PinAnz + '*');
                                    // setState('javascript.0.alarm.Pin.PinAnz', PinAnz);
                                    timeout = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', PinAnz); }, PinShowLastStateDelay);              
                                    PinLae = (PinLae +1) ;
                                }
                                 
                                function unscharf(){
                                    setState('javascript.0.alarm.Pin.PinAnzStat',1);
                                    setState('javascript.0.alarm.Pin.disable', true);
                                    setState('javascript.0.alarm.Pin.VisKeyPad', PinUnlockMsg);
                                    timeout_unscharf = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', ""); }, 2000);
                                    if(logging) log('Deaktivierung / Pineingabe erfolgreich');
                                ///////////////////////////////////////////////////// Hier musst du dann deinen Türöffner auf machen reinschreiben    
                                }
                                 
                                function PinPruef() {
                                    if (PinTemp == PinSoll) {
                                        if(logging) log('PinEingabe erfolgreich');
                                        PinAnzStat = 1;
                                        unscharf();
                                        // Resette den Pin nach 2 Sekunden
                                        setTimeout(function() {
                                            PinReset();
                                        }, 2 * 1000);
                                    } else {
                                        if(logging) log('PinEingabe Fehler');
                                        PinAnzStat = 2;
                                        setState('javascript.0.alarm.Pin.PinAnzStat', 2);
                                        setState('javascript.0.alarm.Pin.PinFehler', true);
                                        setState('javascript.0.alarm.Pin.disable', false);
                                        setState('javascript.0.alarm.Pin.VisKeyPad', PinFailureMsg);
                                        PinReset();
                                    }
                                }    
                                 
                                function PinReset() {
                                        if (PinTemp == PinSoll) {
                                            setState('javascript.0.alarm.Pin.VisKeyPad', "");
                                        } else {
                                            timeout_pinpruef = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', ""); }, 1000);
                                        }
                                        PinLae=0;
                                        PinAnzStat=2;
                                        PinAnz="";
                                        PinTemp="";
                                        setState('javascript.0.alarm.Pin.PinAnzStat', 2);
                                        setState('javascript.0.alarm.Pin.PinAnz', PinAnz);
                                }
                                

                                was noch kommt ... Maximale Falscheingabe des PIN, melde Objekt wenn zu oft falsch eingegeben wurde

                                VG

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                853
                                Online

                                32.0k
                                Users

                                80.4k
                                Topics

                                1.3m
                                Posts

                                25
                                56
                                12825
                                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