Ankündigung

Einklappen
Keine Ankündigung bisher.

DYI Fingerprint Türöffner

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Sehr cooles Projekt (und passt genau, da mein Inokey von 2016 gerade den Geist aufgibt), ich habe die nötigen Teile für den Grundaufbau bestellt und diese sollten diese Woche kommen.
    Als erstes würde ich mal den "Originalaufbau" von Seite 1 nachbauen und anschließend könnte ich euch bei euren Anpassungen/Erweiterungen (Software, 3D Druck) unterstützen.

    Edit:
    so das Ding läuft mal, und kann nun auch weitere Farben (Grün bei OK, Rot bei NOK, und während des Abtastens blinkt er Weiss)
    eine "OpenDoor"-Funktion hab ich auch dazugefügt (steuerbar über MQTT), dann geht die Türe mit jedem Finger auf

    henfri: hab gesehen, dass du auch auf den Bug bzgl. baud_rate gestossen bist, aber selbst wenn ich den Typo fixe, kann ich die BaudRate nicht umstellen. Hast du es geschafft?
    Mit den 57600 bekomm ich keine Übertragung über zwei RS485 Adapter zusammen bzw. recht instabil.

    Edit: da mach ich wohl was falsch, weil das SecurityLevel will sich auch nichtbauf 5: schalten lassen...
    Zuletzt geändert von trant; 12.05.2023, 18:58.
    lg
    Stefan

    Kommentar


      So da die Entwicklung hier ja noch andauert, habe ich mich dazu entschieden einen Fork von FrickelzeugsDoorbell auszuprobieren.

      Habe den Fork von RocketSience zu installieren, dieser hat auch eine KNX Anbindung integriert. Habe alles auf einem ESP32 Board mit einem DC Shield am Laufen und klappt wirklich super.

      Vielleicht ist es ja für den ein oder anderen eine Inspiration dieses Projekt auch mal zu testen,

      Kommentar


        Ich würde auch gerne das Ganze testen, zunächst war ich auf ekey aus, aber irgendwie wird es mir zu wolkig. Wie ist denn die Zuverlässigkeit des Scanners?

        Kommentar


          Zitat von trant Beitrag anzeigen
          Sehr cooles Projekt (und passt genau, da mein Inokey von 2016 gerade den Geist aufgibt), ich habe die nötigen Teile für den Grundaufbau bestellt und diese sollten diese Woche kommen.
          Als erstes würde ich mal den "Originalaufbau" von Seite 1 nachbauen und anschließend könnte ich euch bei euren Anpassungen/Erweiterungen (Software, 3D Druck) unterstützen.

          Edit:
          so das Ding läuft mal, und kann nun auch weitere Farben (Grün bei OK, Rot bei NOK, und während des Abtastens blinkt er Weiss)
          eine "OpenDoor"-Funktion hab ich auch dazugefügt (steuerbar über MQTT), dann geht die Türe mit jedem Finger auf

          henfri: hab gesehen, dass du auch auf den Bug bzgl. baud_rate gestossen bist, aber selbst wenn ich den Typo fixe, kann ich die BaudRate nicht umstellen. Hast du es geschafft?
          Mit den 57600 bekomm ich keine Übertragung über zwei RS485 Adapter zusammen bzw. recht instabil.

          Edit: da mach ich wohl was falsch, weil das SecurityLevel will sich auch nichtbauf 5: schalten lassen...
          Bzgl. RS485 hab ich es nicht mehr weiterverfolgt und nur mal probiert das serielle Signal in den Keller/Netzwerkschrank zu bekommen. Mit einem CAT7 Kabel, welches eh an der Stelle verlegt ist (eines von vielen ;-)) bekomm ich das Signal problemlos runter, würde schätzen dass es 10m sind (mein Technikraum liegt fast direkt unter meiner Eingangstüre). Somit hab ich an der Stelle der Klingel nur den Sensor und die Auswertung getrennt im Technikraum.
          lg
          Stefan

          Kommentar


            Nutzt eigentlich jemand schon die Adressierung einzelner FP Sensoren?
            Angeblich kann man mehrere FP an einer Schnittstelle betreiben.
            www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

            Kommentar


              Hallo,

              ich versuche die RS485 Platine von Masifi zu nutzen.
              Der Sensor wird auch erkannt, aber wenn ich versuche einen Finger anzulernen erhalte ich einen Communication Error. Das kommt von dieser Zeile:
              Code:
                    case FINGERPRINT_PACKETRECIEVEERR:
                      Serial.println("Communication error");​
              FINGERPRINT_PACKETRECIEVEERR wird zurückgegeben, wenn diese Funktion nicht FINGERPRINT_OK zurück gibt:
              Code:
              Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet *packet,
                                                        uint16_t timeout) {
                uint8_t byte;
                uint16_t idx = 0, timer = 0;
              
              #ifdef FINGERPRINT_DEBUG
                Serial.print("<- ");
              #endif
              
                while (true) {
                  while (!mySerial->available()) {
                    delay(1);
                    timer++;
                    if (timer >= timeout) {
              #ifdef FINGERPRINT_DEBUG
                      Serial.println("Timed out");
              #endif
                      return FINGERPRINT_TIMEOUT;
                    }
                  }
                  byte = mySerial->read();
              #ifdef FINGERPRINT_DEBUG
                  Serial.print("0x");
                  Serial.print(byte, HEX);
                  Serial.print(", ");
              #endif
                  switch (idx) {
                  case 0:
                    if (byte != (FINGERPRINT_STARTCODE >> 8))
                      continue;
                    packet->start_code = (uint16_t)byte << 8;
                    break;
                  case 1:
                    packet->start_code |= byte;
                    if (packet->start_code != FINGERPRINT_STARTCODE)
                      return FINGERPRINT_BADPACKET;
                    break;
                  case 2:
                  case 3:
                  case 4:
                  case 5:
                    packet->address[idx - 2] = byte;
                    break;
                  case 6:
                    packet->type = byte;
                    break;
                  case 7:
                    packet->length = (uint16_t)byte << 8;
                    break;
                  case 8:
                    packet->length |= byte;
                    break;
                  default:
                    packet->data[idx - 9] = byte;
                    if ((idx - 8) == packet->length) {
              #ifdef FINGERPRINT_DEBUG
                      Serial.println(" OK ");
              #endif
                      return FINGERPRINT_OK;
                    }
                    break;
                  }
                  idx++;
                  if ((idx + 9) >= sizeof(packet->data)) {
                    return FINGERPRINT_BADPACKET;
                  }
                }
                // Shouldn't get here so...
                return FINGERPRINT_BADPACKET;
              }
              Kann mir jemand sagen, wie ich den Code mit den Debug-Ausgaben (FINGERPRINT_DEBUG) kompiliere?
              Reicht da ein #define FINGERPRINT_DEBUG​ in meiner main.cpp, oder muss man dies in der Bibiliothek setzen?

              Und: Hat jemand eine Idee, woran die Kommunikationsprobleme liegen können?

              Gruß,
              Hendrik

              Kommentar


                Moin,

                Gibt es eigentlich Fortschritte? Sei es Software oder auch hardwaretechnisch?

                LG

                Kommentar


                  Vom meiner Seite leider nicht, da ich wegen der Haussanierung bis Ende des Jahres definitiv noch total eingespannt bin. Da ich selber aber einen Anwendungsfall habe, werde ich sicher in 2024 daran weitermachen.
                  www.smart-mf.de | KNX-Klingel | GardenControl | OpenKNX-Wiki

                  Kommentar


                    Zitat von Mabalero Beitrag anzeigen
                    Moin,

                    Gibt es eigentlich Fortschritte? Sei es Software oder auch hardwaretechnisch?

                    LG
                    Bei mir läuft's seit fast vier Monaten problemlos, sehe hier nicht wirklich notwendige Anpassungen, weder bei Software, noch Hardware (wenn mal unter 7m zwischen Fingerprint und ESP hat, funkt es auch über die Serielle)
                    lg
                    Stefan

                    Kommentar


                      Zitat von Masifi Beitrag anzeigen
                      Nutzt eigentlich jemand schon die Adressierung einzelner FP Sensoren?
                      Angeblich kann man mehrere FP an einer Schnittstelle betreiben.
                      Das würde mich auch interessieren
                      Gruß Pierre

                      Mein Bau: Sanierung

                      DIY-Bastelprojekte: KNX-Statusdisplay/|\KNX-Tankmonitor(Füllstandsamessung)

                      Kommentar


                        Zitat von trant Beitrag anzeigen

                        Bei mir läuft's seit fast vier Monaten problemlos, sehe hier nicht wirklich notwendige Anpassungen, weder bei Software, noch Hardware
                        Welche Software und Hardware benutzt du?

                        Kommentar


                          Ich hatte mir auch einen R503 gekauft und bin danach auch hier im Forum auf den Thread gestoßen.

                          Ich öffne damit aktuell zwei Garagentore und hab es an einem Arduino Nano hängen. Dort sind zwei Relais Platine dran, die bei konfigurierten Fingern einen Binäreingang schaltet.

                          Das war für mich der einfachere Ansatz als über esp und wlan zu gehen, da binärkanäle eh noch frei sind und eine Leitung mit freien Adern auch schon vorhanden war.

                          Bisher funktioniert es super, bin gespannt wie der Langzeittest wird.

                          Als provisorium hab ich den Reader in einer Spelsberg Abzweigdose aufputz, die natürlich viel zu groß ist.
                          Der Reader ist außen, der Arduino mit den Relais innen.
                          hat von euch vielleicht einer eine gute Idee über ein schickes schlankes Aufputzgehäuse für außen? Metall / Alu könnte ich mir gut vorstellen. Ich habe Betonwände und will ungern eine unterputzdose setzen.

                          Kommentar


                            Hallo fry2k, hast du das mit dem Nao und den Raiplatinen möglicherweise dokumentiert oder den Code etc im Git? Das wäre sehr super !

                            Kommentar


                              Hi kleinklausi,
                              klar, ich hab mich an der Anleitung orientiert und eigentlich nur den Code mit copy&paste übernommen:
                              https://how2electronics.com/interfac...-with-arduino/

                              Da ist auch die Lib auf GitHub verlinkt:
                              https://github.com/adafruit/Adafruit...Sensor-Library

                              Ich hab ein Passwort (PIN) gesetzt für die Kommunikation, um ein besseres Gefühl in der Sicherheit zu haben:
                              https://github.com/adafruit/Adafruit...gepassword.ino

                              Im Beispiel wird alle 50ms der Reader gelesen. Das kam mir vom Bauchgefühl sehr viel vor, hab das auf 1000 geändert.

                              Das sind die Relais Module, die ich gekauft hatte:
                              https://de.aliexpress.com/item/1005002867727977.html
                              Hatte natürlich welche mit nur einem Kanal gekauft, direkt mit 2 Kanälen wäre schlauer gewesen

                              Den Arduino hab ich auf ne kleine Lochrasterplatine gepackt, dort dann 4 Schraubklemmen für den R503 und 2 3er Pin Blöcke für die Relais.
                              Alles in eine Abzweigdose und fertig.

                              Programmiertechnisch für die Relais hab ich diesen Code an das Beispiel angefügt:

                              Code:
                              // die relay pins ganz oben definieren
                              int relayA=6;
                              int relayB=7;​​
                              Code:
                              // in der setup die relay pins initialisieren
                              Serial.println("\nSet relayA to high");
                              digitalWrite(relayA,HIGH);
                              pinMode(relayA,OUTPUT);
                              Serial.println("Set relayB to high\n");
                              digitalWrite(relayB,HIGH);
                              pinMode(relayB,OUTPUT);​

                              Code:
                              // in der funktion getFingerprintID diese Condition anpassen
                              if (p == FINGERPRINT_OK) {
                                 Serial.println("Found a print match!");
                                 finger.LEDcontrol(FINGERPRINT_LED_FLASHING, 25, FINGERPRINT_LED_PURPLE, 10);
                                 delay(1000);
                                 if (finger.fingerID == 1) {
                                    Serial.println("RelayA low");
                                    digitalWrite(relayA,LOW);
                                    delay(1000);
                                    Serial.println("RelayA high");
                                    digitalWrite(relayA,HIGH);
                                 }
                                 if (finger.fingerID == 2) {
                                    Serial.println("RelayB low");
                                    digitalWrite(relayB,LOW);
                                    delay(1000);
                                    Serial.println("RelayB high");
                                    digitalWrite(relayB,HIGH);
                                 }
                              }​
                              Ich sehe gerade da ist noch ein delay(1000) in der Condition, wenn der Finger erkannt wurde. Die schmeiß ich auch noch raus, damit ich da nicht noch eine Sekunde warten muss, bis das Tor aufgeht.

                              War alles so eine quick & dirty Lösung am Wochenende.
                              Nächstes Projekt wird sein zu schauen ob der Leser auch mit 20-25m Kabellänge klar kommt. Dann kommt noch einer in den freistehenden Briefkasten und der Arduino dazu in den Keller. Das Leerrohr dazu geht leider einmal ums Haus und ist entsprechend lang.

                              Wenn du zu irgendwas Hilfe brauchst, gerne anschreiben. C ist nicht meine primäre Programmiersprache, aber als langjähriger Programmierer findet man sich schnell zurecht
                              You do not have permission to view this gallery.
                              This gallery has 2 photos.

                              Kommentar


                                Vielen Dank fry2k
                                Kommt auf die Liste für die kalte Zeit...

                                Kommentar

                                Lädt...
                                X