Weil´s sein musste … Thema Fingerprint

Begonnen von Papa Romeo, 21 August 2024, 23:56:23

Vorheriges Thema - Nächstes Thema

Papa Romeo

Sodale ... und wieder ein Stück schlauer.

Ich hab jetzt den Fingerprint-Sensor wieder an den ersten ESP32 Mini angeschlossen, wo auch die Namen zu den einzelnen registrierten Finger hinterlegt sind.
Hier zeigt er jetzt zwar an, dass er die Finger kennt, mit Speicherplatz, Namen und Vertraulichkeit, sagt aber, dass auf Grund eines fehlerhaften Pairings
keine MQTT-Meldungen abgesetzt werden. Betätigt man aber nun den Pairing-Button unter Settings, führt er dieses aus und alles funktioniert wieder wie gewohnt.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Im Anhang mal ein Auszug aus dem Sketch, wie der Pairing_Code erzeugt wird:

String SettingsManager::generateNewPairingCode() {

    /* Create a SHA256 hash */
    SHA256 hasher;

    /* Put some unique values as input in our new hash */
    hasher.doUpdate( String(esp_random()).c_str() ); // random number
    hasher.doUpdate( String(millis()).c_str() ); // time since boot
    hasher.doUpdate(getTimestampString().c_str()); // current time (if NTP is available)
    hasher.doUpdate(appSettings.mqttUsername.c_str());
    hasher.doUpdate(appSettings.mqttPassword.c_str());
    hasher.doUpdate(wifiSettings.ssid.c_str());
    hasher.doUpdate(wifiSettings.password.c_str());

    /* Compute the final hash */
    byte hash[SHA256_SIZE];
    hasher.doFinal(hash);
   
    // Convert our 32 byte hash to 32 chars long hex string. When converting the entire hash to hex we would need a length of 64 chars.
    // But because we only want a length of 32 we only use the first 16 bytes of the hash. I know this will increase possible collisions,
    // but for detecting a sensor replacement (which is the use-case here) it will still be enough.
    char hexString[33];
    hexString[32] = 0; // null terminatation byte for converting to string later
    for (byte i=0; i < 16; i++) // use only the first 16 bytes of hash
    {
        sprintf(&hexString[i*2], "%02x", hash[i]);
    }

    return String((char*)hexString);
}

... irgendwie erkenne ich hier keine Komponente die Fingerprint-Sensor spezifisch ist  :-\

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

UweH

Zitat von: Papa Romeo am 10 Oktober 2024, 23:19:57
Zitat von: UweH am 10 Oktober 2024, 17:56:04Soso...wo hast Du die denn gefunden?

die Adafruit_Fingerprint.h entsprechend modifiziert:


#define FINGERPRINT_LED_GREEN  0x04      //!< Grüne LED
#define FINGERPRINT_LED_YELLOW 0x05      //!< Gelbe LED
#define FINGERPRINT_LED_CYAN  0x06      //!< Cyan LED
#define FINGERPRINT_LED_WHITE  0x07      //!< Weiße LED


... ist aber auch schon in der Adafruit_Fingerprint_Lib, in der zip die ich für meinen Sketch zur Verfügung gestellt habe, enthalten, da ich auch hier
für mich schon mit anderen Farben arbeite.

LG
Papa Romeo


Perfekt, Danke
Grün bei erkanntem Finger ist etwas sinnvoller  ;)

Gruß
Uwe

JoWiemann

Zitat von: UweH am 11 Oktober 2024, 07:51:45Perfekt, Danke
Grün bei erkanntem Finger ist etwas sinnvoller  ;)


Hallo Uwe,

Rot/Grün Blindheit ist allerdings gar nicht so selten.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

rob

Hallo zusammen.

Zugegebenermaßen bin ich noch zu weit weg vom Thema, um sinnvolle Fragen stellen/ mitreden zu können. Muss mich erst rantasten.
Vielleicht trotzdem schon eine Frage: Laut dieser Doku zu esphome wird der Sensor anscheinend auch dort unterstützt: https://esphome.io/components/fingerprint_grow.html. Kennt das jemand schon und kann sagen, ob es sich lohnt auch damit zusätzlich zu experimentieren?

Viele Grüße
rob

UweH

Zitat von: JoWiemann am 11 Oktober 2024, 08:43:24
Zitat von: UweH am 11 Oktober 2024, 07:51:45Perfekt, Danke
Grün bei erkanntem Finger ist etwas sinnvoller  ;)


Hallo Uwe,

Rot/Grün Blindheit ist allerdings gar nicht so selten.

Grüße Jörg
Ich bekomme es noch hin, meine Frau auch, das reicht  ;)

UweH

#111
Ich habe nun auch die modifizierte Frickelversion ausprobiert. Die Konfiguration über die Weboberfläche ist zwar hübsch, aber ein Code, in den ich direkt eingreifen kann, ist mir lieber. Hat aber auch den Hintergrund, dass ich meine Tür bisher über die Kombination RFID/Nextion-Display öffne (abgespeckte Version von DoorPi von PAH). Da will ich den RFID-Scanner durch den Fingerprint ersetzen. Somit kommt für mich eigentlich nur Deine Version in Frage, weil ich beide Codes miteinander verheiraten kann.

Was mir aber aufgefallen ist...der Fingerabdruck wird bei der Frickel-Version deutlich schneller erkannt. Kann das sein?

Gruß
Uwe

EDIT: Ich antworte mir selber. Ja, kann nicht nur sein, ist so, weil der Frickelmann Pin5 des Sensors mit auswertet. Steht in seiner Beschreibung.

Papa Romeo

Zitat von: UweH am 11 Oktober 2024, 13:58:57EDIT: Ich antworte mir selber. Ja, kann nicht nur sein, ist so, weil der Frickelmann Pin5 des Sensors mit auswertet. Steht in seiner Beschreibung.

Hallo Uwe,

an dem dürfte es nicht liegen, hier ein Auszug aus dem Sketch:

#define FINGERPRINT_WRITENOTEPAD 0x18 // Write Notepad on sensor
#define FINGERPRINT_READNOTEPAD 0x19 // Read Notepad from sensor
/*
  By using the touch ring as an additional input to the image sensor the sensitivity is much higher for door bell ring events. Unfortunately
  we cannot differ between touches on the ring by fingers or rain drops, so rain on the ring will cause false alarms.
*/
const int touchRingPin = 5;    // touch/wakeup pin connected to fingerprint sensor

... eine erhöhte Sensivität für das Klingeln, nicht für die Fingererkennung.

Im Sketch wird hier eine Variable mit dem Namen "bool ringTouched" erzeugt. Der dann die Werte false oder true annimmt, je nachdem ob ein Finger auf dem Sensor liegt oder nicht.

Ich hab´s mir auch nochmal im Sketch angeschaut. Dieses "ringTouched" hat nirgends im Sketch einen Einfluss auf die Fingerprinterkennung. Würde zudem auch keinen Sinn machen, da man diese "Toucherkennung" über MQTT deaktivieren kann.

Eine Vermutung hätte ich noch, aber das muss ich jetzt erst mal durchtesten.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

UweH

#113
Zitat von: Papa Romeo am 11 Oktober 2024, 19:55:39... eine erhöhte Sensivität für das Klingeln, nicht für die Fingererkennung.
Ja, ist richtig, es ist gefühlt eine schnellere Erkennung, es ist aber nur eine schnellere Reaktion des Sensors auf's Fingerauflegen. Weiß ich nun, nachdem ich wundgescheuerte Finger habe  ;)
Ich bin da eher empirisch rangegangen, da ich beide Versionen auf einem Steckbrett laufen habe und somit testen konnte, wer schneller ist  ;D
Tatsächlich ist Frickeldings beim Klingeln schneller, nicht aber in der Erkennung des Fingers.

Gruß
Uwe

P.S.: Das mit dem Regen stimmt, wenn's also dauerklingelt, dann regnet es.

Papa Romeo

#114
Hallo Uwe,

ich habe auch gerade beide parallel laufen und kann auch nicht viel Unterschied in der "Erkennungsgeschwindigkeit" feststellen.

Es gibt hier im Forum einen älteren Thread, der sich mit diesem Fingerprint-Thema beschäftigt hat. Damals war das Problem, dass das mit der Erkennung und dem Zusammenspiel mit den LED-Ringen nicht so optimal funktionierte.
Ich hab dann herausgefunden, dass wenn man immer nach einem LED-Ring Steuerbefehl, ein erneutes "finger.begin(57600)" setzt, dieses Problem weg ist. Warum das so war, kann ich nicht sagen.
Mein Gedanke war jetzt, das die erneuten Aufrufe dieser Anweisung, eventuell für eine Verzögerung verantwortlich sind.
Man müsste jetzt mal Testen ob das immer noch so ist und ob durch eine eventuell Entfernung eine schneller Erkennung erreicht wird
oder ob es eventuell auch dem etwas besseren Prozessor(ESP32 via ESP8266) zuzuschreiben ist.

Die beiden R503 (1 x 3 Farben und 1 x 7 Farben) die ich hier vor mir liegen haben, weisen, wenn man sie mit dem ESP32 betreibt, doch erhebliche Unterschiede und das nicht nur in Bezug auf die mögliche Farben hin, auf.  Das muss ich aber erst noch etwas zusammenstellen.

LG
Papa Romeo


...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

UweH

Zitat von: Papa Romeo am 12 Oktober 2024, 00:08:52Man müsste jetzt mal Testen ob das immer noch so ist und ob durch eine eventuell Entfernung eine schneller Erkennung erreicht wird
Moin,
habe ich mal getan und nur noch den Aufruf von "finger.begin" in "void setup" übriggelassen. Es funktioniert weiterhin alles korrekt und ich möchte behaupten, dass die Erkennung schneller ist. Alles nur subjektiv und das spielt sich alles im Millisekundenbereich ab, aber trotzdem. Ein registrierter Finger wird in unter 500ms erkannt. Ein unregistrierter etwas schneller. Zwar mit unzureichenden Messmethoden ermittelt, aber ausreichend.
Passt also.

Gruß
Uwe

Papa Romeo

Zitat von: Papa Romeo am 12 Oktober 2024, 00:08:52Die beiden R503 (1 x 3 Farben und 1 x 7 Farben) die ich hier vor mir liegen haben, weisen, wenn man sie mit dem ESP32 betreibt, doch erhebliche Unterschiede und das nicht nur in Bezug auf die mögliche Farben hin, auf.  Das muss ich aber erst noch etwas zusammenstellen.

Liest man die Parameter der Fingerprint-Sensoren mit dem Beispielprogramm der Adafruit-Fingerprint-Lib aus, sieht alles ganz ordentlich aus.
Der einzige Unterschied zwischen meinen beiden 3-farbigen und dem 7-farbigen:

- meine 3-farbigen haben 100 Speicherplätze
- der 7-farbige hat 200 Speicherplätze.

Dürfte aber erstmal keine Rolle spielen.

Liest man nun über die serielle Schnittstelle die Parameter des Frickelzeugs-Programm aus, kommt man ein bisschen ins Staunen und ich denke deswegen funktionieren die Sensoren mit diesem Sketch auch nicht.
 
Ich habe im Anhang eine Aufstellung der gelesenen Parameter eingestellt.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

pc1246

Moin
Ich dachte immer ich bin lange auf, und schlafe kurz.
@Papa Romea: Danke fuer die Bereitstellung, des geaenderten Sketches!
Das gefaellt mir wesentlich besser!
Ich lass den jetzt erstmal drauf und ueberlege mir, wie ich das jetzt sinnvoll verpacke. (3D Gehaeuse, oder Verteilerdose)
Da das nur in die Garage soll, da habe ich einen Kellereingang, ist der WAF 2trangig.
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

UweH

Ich habe auch mal die "Regentropfenempfindlichkeit" verglichen...tatsächlich, ohne die Auswertung von Pin 5 reagiert das Ding nicht gleich auf jeden Tropfen. Kann man aber mittels Regenschutz abdecken, das Teil gibt's auch bei Ali: http://en.hzgrow.com/product/178.html und wenn man möchte auch in einer etwas dezenteren Plastikversion.

Gruß
Uwe

Icinger

ZitatIch habe das Frickelzeugs-Programm ein wenig modifiziert und folgende Änderungen gemacht:

Oh, bin da heute drübergestolpert.....Hättest dir sparen können, ich hab das seit 1 1/2 Jahren im Einsatz bei mir.
Hab auch die Farben, LED-Modus etc. per MQTT steuerbar gemacht.

Läuft wie gesagt seit ca. 1 1/2 Jahren ohne Probleme.
Das Klingelschild wird dann je nach Lust/Laune/Anlass geändert :)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho