+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 12
  1. #1
    Registriert seit
    Aug 2010
    Beiträge
    677

    Standard ekey Fingerprint anbinden

    hier ist ein PhP Skript, welches die UDP-Pakete des EKEY-Systems interpretiert.
    • Alle Ereignisse (erfolgreich/erfolglos) werden in eine Access-Datenbank abgelegt.
    • Alle erfolgreiche Ereignisse werden auch via email verschickt.
    • Mithilfe des Skripts ist es natürlich einfach, allerlei Ereignisse zu triggern. Z.B. ein Gong läuten zu lassen, wenn jemand rein kommt - oder die Alarmanlage deaktivieren, wenn ein Fingerprint korrekt eingelesen wird.
    • Dieses Skript wurde in einer "Ekey Net Business" Umgebung getestet. Ich glaube, dass andere Versionen nur sehr leichte Unterschiede beim UDP-String aufweisen.


    Ich hoffe, dass dieses Skript für Andere nützlich sein wird!

    PHP-Code:
    <?
    // UDP Data Block Structure
    // long nVersion; // Version of the data (3)
    // long nCmd; // action code (TERMCMD_ENTER,...)
    // long nTerminalID; // Terminal ID
    // char strTerminalSerial[14]; // Serial number of the Terminal (for net)
    // char nRelayID; // Relay number
    // char nReserved; // unused
    // long nUserID; // User
    // long nFinger; // Finger ID
    // char strEvent[16]; // Event, which is to be triggered
    // char sTime[16]; // yyyymmdd hhmmss
    // unsigned short strName[1]; // Name of the User in Unicode, if available
    // unsigned short strPersonalID[1]; // Personal ID + \0 (used only in Version 2)

    $ekeyStringHex "";
    if (
    $IPS_SENDER == "Execute")
        {
       
    $ekeyStringHex ="0300000001000000f903100074657374383530393039303030390000680000000f0000000000000000000000000000000000000032303131313131392031323337323500610061006700000031000000";
        }
        else
        {
             
    $data $IPS_VALUE;
              for (
    $i=0$i strlen($data); $i++)
              {
                
    $ekeyStringHex .= str_pad(dechex(ord($data[$i])), 2'0'STR_PAD_LEFT);
              }
        }
     
    $ekeyString preg_replace('/[\x00-\x1F\x7F]/'''hextostr($ekeyStringHex))."\n ";

    $lenEkeyStringHex strlen($ekeyStringHex);


    $nVersion intval(substr($ekeyStringHex,0,8)); // Version of the data (3)
    $nCmd intval(substr($ekeyStringHex,8,8)); // action code (TERMCMD_ENTER,...)
    $nTerminalID intval(substr($ekeyStringHex,16,8)); // Terminal ID
    $strTerminalSerial hextostr(substr($ekeyStringHex,24,28)); // Serial number of the Terminal (for net)
    $nRelayID intval(substr($ekeyStringHex,52,2)); // Relay number
    $nReserved intval(substr($ekeyStringHex,54,2)); // unused
    $nUserID intval(substr($ekeyStringHex,56,8)); // User
    $nFinger intval(substr($ekeyStringHex,64,8)); // Finger ID
    $strEvent hextostr(substr($ekeyStringHex,72,32)); // Event which is to be triggered
    $sTimeStamp hextostr(substr($ekeyStringHex,104,15)); // yyyymmdd hhmmss
    $ekeyYear hextostr(substr($ekeyStringHex,104,8));
    $ekeyMonth hextostr(substr($ekeyStringHex,112,4));
    $ekeyDay hextostr(substr($ekeyStringHex,116,4));
    $ekeyHH hextostr(substr($ekeyStringHex,122,4));
    $ekeyMM hextostr(substr($ekeyStringHex,126,4));
    $ekeySS hextostr(substr($ekeyStringHex,130,4));
    $strName preg_replace('/[\x00-\x1F\x7F]/'''hextostr(substr($ekeyStringHex,134)));
    $ekeyTimeStamp $ekeyDay "-" $ekeyMonth "-" $ekeyYear "  " $ekeyHH ":" $ekeyMM ":" $ekeySS;


    $emailDebugBody "nVersion : " $nVersion " \n "
        
    "nCmd : ".$nCmd" \n "
        
    "nTerminalID : ".$nTerminalID" \n "
         
    "strTerminalSerial : ".$strTerminalSerial" \n "
        
    "nRelayID : ".$nRelayID" \n "
        
    "nReserved : ".$nReserved" \n "
        
    "nUserID : ".$nUserID"\n "
        
    "nFinger : ".$nFinger"\n "
        
    "ekeyYear : ".$ekeyYear"\n "
        
    "ekeyMonth : ".$ekeyMonth"\n "
        
    "ekeyDay : ".$ekeyDay"\n "
        
    "ekeyHH : ".$ekeyHH"\n "
        
    "ekeyMM : ".$ekeyMM"\n "
        
    "ekeySS : ".$ekeySS"\n "
        
    "lenEkeyStringHex : ".$lenEkeyStringHex"\n "
        
    "strName : " $strName"\n "
        
    "ekeyTimeStamp : " $ekeyTimeStamp ;

    $emailHeader $strName;



    if (
    $nCmd == "4000000")
        {
        
    // SMTP_SendMail(18471 /*[E-Mail senden (SMTP)]*/ ,
        //    $emailHeader." Finger not recognized",
        //    $emailDebugBody . "\n "
        //    . $ekeyStringHex . "\n "
        //    . $ekeyString . "\n ");
        
    }
    else
        {
        
    SMTP_SendMail(18471 /*[E-Mail senden (SMTP)]*/ ,
        
    $emailHeader,
        
    $emailDebugBody "\n "
        
    $ekeyStringHex "\n "
        
    $ekeyString "\n ");
        }


    // $mdbFilename = "\\GRUEMPELCHAMMER\SSD_Grumpelchammer\TimeSheets\ekeyPhP.accdb";

    $conn=odbc_connect('ekey_SysWOW64','','');
    $sql="SELECT * FROM tblEkeyPhP";
    $rs=odbc_exec($conn,$sql);

    echo 
    $strEvent;

    /* run insert */
    // $stmt = odbc_prepare($conn, "INSERT INTO tblEkeyPhP (nTerminalID, strEvent, 
    // VALUES($nVersion, $nCmd, $nTerminalID, '$strTerminalSerial', $nRelayID, $nReserved, $nUserID, $nFinger, '$strEvent', '$sTimeStamp', '$strName', '$ekeyTimeStamp');" );

    $stmt odbc_prepare($conn"INSERT INTO tblEkeyPhP (nTerminalID, nVersion, strTerminalSerial, strName, ekeyTimeStamp, nCmd, nRelayID, nReserved, nUserID, nFinger, ekeyStringHex)
    VALUES(
    $nTerminalID$nVersion, '$strTerminalSerial', '$strName', '$ekeyTimeStamp', $nCmd$nRelayID$nReserved$nUserID$nFinger, '$ekeyStringHex');" );


    //$stmt = odbc_prepare($conn, "INSERT INTO tblEkeyPhP (strTerminalSerial) VALUES ('$strTerminalSerial');" );


    /* check for errors */
    if (!odbc_execute$stmt))
    {
    /* error */
    echo "Whoops odbc error";
    }


    function 
    hextostr($x) {
      
    $s='';
      foreach(
    explode("\n",trim(chunk_split($x,2))) as $h$s.=chr(hexdec($h));
      return(
    $s);
    }

    function 
    strtohex($x) {
      
    $s='';
      foreach(
    str_split($x) as $c$s.=sprintf("%02X",ord($c));
      return(
    $s);
    }

    ?>
    Geändert von aag (26.11.11 um 20:00 Uhr)

  2. #2
    Registriert seit
    Jan 2008
    Beiträge
    5

    Standard ekey Fingerprint anbinden

    Hallo aag,

    Könntest bitte beschreiben mit welcher Version von ekey (home, multi oder net) dein Script funktioniert.

    Ich möchte dämnachst meine beiden Haustüren mit einen Fingerscanner ausrüsten.

    Besten Dank

    Hans

  3. #3
    Registriert seit
    Aug 2010
    Beiträge
    677

    Zitat Zitat von hans, Beitrag anzeigen
    Hallo aag,

    Könntest bitte beschreiben mit welcher Version von ekey (home, multi oder net) dein Script funktioniert.

    Ich möchte dämnachst meine beiden Haustüren mit einen Fingerscanner ausrüsten.

    Besten Dank

    Hans
    Version: Net Business. Habe ich nun oben ergänzt. Viel Spass beim dämnachst anstähenden Unterfangen!

  4. #4
    Registriert seit
    Sep 2011
    Ort
    53639 Königswinter
    Beiträge
    1,404

    Zitat Zitat von hans, Beitrag anzeigen
    Hallo aag,

    Könntest bitte beschreiben mit welcher Version von ekey (home, multi oder net) dein Script funktioniert.

    Ich möchte dämnachst meine beiden Haustüren mit einen Fingerscanner ausrüsten.

    Besten Dank

    Hans
    Hast Du den ekey schon eingebunden? Wenn ja, welche Version hast Du?

    Ich hab hier einen TOCAhome 3 und könnte dafür günstig ein PC-Modul mit Ser. Schnittstelle bekommen. Die Frage ist nur, ob mir das was bringt. Ansonsten bleibe ich bei meiner 3-Relais Version damit kann ich zwar nicht sehen wer im einzelnen rein kommt aber duch die Kombination der Relais zumindest Benutzergruppen erkennen.

    mws
    mws
    ---------------------------------------------------------------
    Wer Rechtschreibfehler findet darf sie behalten.
    ----------------o00o----'(_)'----o00o---------------------

  5. #5
    Registriert seit
    Aug 2010
    Beiträge
    677

    Wichtig ist festzuhalten, dass der obige Script die unilaterale Kommunikation Ekey->IPS herstellt. Der umgekehrten Weg (IPS->Ekey) geht im Prinzip auch, und ist woanders im Forum beschrieben.

    Für mich ist es sehr nützlich (eigentlich essentiell!), dass eine Popup-Message auf dem Computer erscheint und eine Glocke läutet, wenn jemand seinen Finger einliest. Das funktioniert hiermit hervorragend.

  6. #6
    Registriert seit
    Sep 2011
    Ort
    53639 Königswinter
    Beiträge
    1,404

    Also ich hab mich mal im KNX Forum schlau gemacht und es sieht so aus müsse man einen UDP Converter verwenden, der die Signale an eine IP Adresse senden kann und das geht wohl auch mit der einfachsten ekey home Version. Allerdings kostet das Teil um die 260,- Euro.

    Ich denke ich werde erst mal mit den drei Relais hantieren zumal ich ein kostenloses Firmwareupdate bekomme und damit dann auch mit einem Finger mehrere Relais angesteuert werden können. Damit hätte man dann nicht nur 3 Gruppen sondern theoretisch 7 (2^3 minus 1), damit sollte sich doch schon was anfangen lassen.
    mws
    ---------------------------------------------------------------
    Wer Rechtschreibfehler findet darf sie behalten.
    ----------------o00o----'(_)'----o00o---------------------

  7. #7
    Registriert seit
    Jan 2011
    Ort
    Uetendorf, Bern, CH
    Beiträge
    1,108

    @aag

    woher hast du die Leser und was kosten die?
    mfG Jürg
    IPS V.5.0,Homematic(CCU2,Lanadapter),1-Wire,Pokeys,FS20,Fritzbox 7390,Fingerprint Bio-Gate,RaspberryPi's, Sonos

  8. #8
    Registriert seit
    Mar 2006
    Beiträge
    3,422

    Zitat Zitat von jbu Beitrag anzeigen
    woher hast du die Leser...
    Die waren schon eingebaut, wie als er sein neues Grundstück bezog...

    ...und was kosten die?
    Die bekannteste Suchmaschine im Netz wird dir unter dem Begriff "ekey" auch weiter helfen und beantwortet gleich nochmal den ersten Teil deiner Frage mit
    Gruß nancilla

  9. #9
    Registriert seit
    Jan 2008
    Beiträge
    5

    Standard ist RS485 mit ekey auch möglich

    Hallo,

    kennt von Euch jemand den ekey-RS485 Protokollaufbau (Baudrate, Bits, Parity, Stopbit)?
    Mir währe die direkte Anbindung via RS485 lieber.

    Besten Dank

    Hans

  10. #10
    Registriert seit
    May 2013
    Ort
    München Ost
    Beiträge
    57

    Zitat Zitat von aag Beitrag anzeigen
    hier ist ein PhP für die ekey Anbindung in IP-Symcon ...
    [/PHP]
    Guten Abend aag,

    ich hab mir auch den ekey UDP Converter bestellt und würde gerne als Basis Dein Skript verwenden.
    Da es ja schon ein paar Jahre her ist und Du vielleicht noch was verbessert/geändert hast wollte ich Dich bitten Deinen aktuellsten Stand zu posten.

    Müsste man zwingend in Access ablegen (hab ich nicht) oder ginge auch was anderes? Leider hab ich kaum DB Ahnung.

    Merci Sepp

Ähnliche Themen

  1. eKey - Anbindung an iP-Symcon
    Von Jürgen74 im Forum Haustechnik
    Antworten: 24
    Letzter Beitrag: 09.11.17, 09:19
  2. Dioder von Ikea anbinden
    Von Hagbard235 im Forum Beleuchtung / Lichttechnik
    Antworten: 9
    Letzter Beitrag: 27.12.11, 13:04
  3. Vailant Gastherme anbinden
    Von jolentes im Forum Haustechnik
    Antworten: 51
    Letzter Beitrag: 13.09.11, 23:29
  4. Erfahrung mit Fingerprint Zugangssystem FP260
    Von DeejayT im Forum Haustechnik
    Antworten: 12
    Letzter Beitrag: 12.12.09, 19:29
  5. Wetter Modul an wetterarchive.de (->wetter.com) anbinden?
    Von Torro im Forum IP-Symcon WIIPS für Version 1.0
    Antworten: 5
    Letzter Beitrag: 13.04.06, 22:08