Grow (R503) Fingerprint Reader mit ESPHome

Ich wollte euch ein kleines Projekt vorstellen mit einem Fingerprint Reader mit Anbindung an Homeassistant :v:

Inspiriert wurde ich durch ein Youtube Video inklusive yaml Code GitHub:

Damit war mein Spieltrieb geweckt :clown_face:

Auf der ESPHome Seite wird dieser Grow (R503) natürlich unterstützt, inklusive Verdrahtungsplan und Code(Schnipsel):

Grow Fingerprint Reader — ESPHome

Benötigt wird:

  • Grow (R503) Fingerprint Reader
  • ESP32 (hatte ich hier, welcher ist euch überlassen)
  • 10kOhms resistor
  • PNP transistor (like a BC327)

Natürlich muss das ganze zusammen gelötet werden,
bei mir sieht das Testobjekt halt erst einmal so aus:

Und natürlich gab es bei mir Schwierigkeiten mit der Flash Datei (Yaml)
Ich musste andere GPIOXX verwenden (habe ja eh keinen Baugleichen mini ESP C3 aus der Anleitung und mein Board wollte die beiden ersten rx_pin und tx_pin)

Mein verwendeter Verdrahtungsplan ist also mit den verwendeten GPIOXX :

Meine Flash Datei (Yaml) sieht also jetzt so aus:

esphome:
  name: fingersensor_esp32-7
  friendly_name: Fingersensor_ESP32-7

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "<eure eigene>"

## hier fuer Fingersensor
  services:
  - service: enroll
    variables:
      finger_id: int
      num_scans: int
    then:
      - fingerprint_grow.enroll:
          finger_id: !lambda 'return finger_id;'
          num_scans: !lambda 'return num_scans;'
      - fingerprint_grow.aura_led_control:
          state: ALWAYS_ON
          speed: 0
          color: PURPLE
          count: 0
  - service: cancel_enroll
    then:
      - fingerprint_grow.cancel_enroll:
  - service: delete
    variables:
      finger_id: int
    then:
      - fingerprint_grow.delete:
          finger_id: !lambda 'return finger_id;'
  - service: delete_all
    then:
      - fingerprint_grow.delete_all:
## ende neu

ota:
  - platform: esphome
    password: "<eure eigene>"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-7 Fallback Hotspot"
    password: "<eure eigene>"

captive_portal:

## alles fuer den Fingerabdrucksensor

uart:
  rx_pin: GPIO16
  tx_pin: GPIO17
  baud_rate: 57600

fingerprint_grow:
  sensing_pin: GPIO04
  sensor_power_pin:
      number: GPIO02
      inverted: true
  idle_period_to_sleep: 5s

  on_finger_scan_matched:
    - switch.turn_on: trigger_relay
    - homeassistant.event:
        event: esphome.test_node_finger_scan_matched
        data:
          finger_id: !lambda 'return finger_id;'
          confidence: !lambda 'return confidence;'
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 200
        color: GREEN
        count: 1
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Autorisiert"

  on_finger_scan_unmatched:
    - homeassistant.event:
        event: esphome.test_node_finger_scan_unmatched
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Unautorisiert"

  on_enrollment_scan:
    - homeassistant.event:
        event: esphome.test_node_enrollment_scan
        data:
          finger_id: !lambda 'return finger_id;'
          scan_num: !lambda 'return scan_num;'
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: BLUE
        count: 2
    - fingerprint_grow.aura_led_control:
        state: ALWAYS_ON
        speed: 0
        color: PURPLE
        count: 0
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Anlernen"

  on_enrollment_done:
    - homeassistant.event:
        event: esphome.test_node_enrollment_done
        data:
          finger_id: !lambda 'return finger_id;'
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 100
        color: BLUE
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Registrieren"

  on_enrollment_failed:
    - homeassistant.event:
        event: esphome.test_node_enrollment_failed
        data:
          finger_id: !lambda 'return finger_id;'
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 4
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Fehler"

# Optional direkt angeschlossenes Relaay
switch:
  - platform: gpio
    id: trigger_relay
    pin: GPIO18
    name: "Relay"
    on_turn_on:
      - delay: 1s
      - switch.turn_off: trigger_relay

# Optional template text sensor for visual feedback
text_sensor:
  - platform: template
    id: fingerprint_state
    name: "Fingerprint State"
    lambda: |-
      return {"-"};
    update_interval: 6s

# Optional sensors
binary_sensor:
  - platform: fingerprint_grow
    id: fingerprint_enrolling
    name: "Fingerprint Enrolling"

# Statusanzeige
  - platform: status
    name: "Status"

sensor:
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Abdruck Zähler"
    last_finger_id:
      name: "Letzte Abdruck ID"
    last_confidence:
      name: "Letzte Autorisation"
    status:
      name: "Abdruck Status"
    capacity:
      name: "Abdruck Menge"
    security_level:
      name: "Abdruck Sicherheitslevel"  

# Schalter fuer reset
button:
  - platform: restart
    name: "restart"

Beim nachbauen aber bitte erst einmal nur das Grundgerüst von der ESPHome Seite verwenden :v:

In HA erscheint das ganze dann so:

wobei natürlich die beiden für mich am interessanten sind um weitere Aktionen ausführen zu können:

und später dann noch WER das ausgelöst hat, also die ID des hinterlegten Fingerabdruck

Anlernen eines Fingerabdruck ( ID 0-200 )

das geht in den Entwicklerwerkzeugen unter Aktionen mit dem Dienst:
ESPHome: fingersensor_esp32_7_enroll (Name vorne ist natürlich euer gewählter)

LED Ring Blinkt Lila und wird jeweils mit grün bestätigt


Ja, das war es grob :grinning:

LED Ring grün wenn Autorisiert
LED Ring rot wenn Unautorisiert

natürlich auch eine grobe Automation zum testen (spielerei)
wenn Autorisiert oder Unautorisiert dann spiele Töne am Aqara M3 (Matter Geräte von Szene in HA)

alias: Fingersensor_ESP32-7 Fingerprint State
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.fingersensor_esp32_7_fingerprint_state
    to: Autorisiert
    id: Autorisiert
  - trigger: state
    entity_id:
      - sensor.fingersensor_esp32_7_fingerprint_state
    to: Unautorisiert
    id: Unautorisiert
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Autorisiert
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.lustiger_ton_01
      - conditions:
          - condition: trigger
            id:
              - Unautorisiert
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.geisterrufe_ton
mode: single

Viel Spaß beim Nachbauen :v:
gehe jetzt wieder spielen

6 „Gefällt mir“

Sehr schön, danke für den Input, gleich mal eine Lesezeichen gesetzt. :slight_smile:

EDIT: eigentlich auch ein schönes Wiki!

1 „Gefällt mir“

Habe diese Rubrik vorher gar nicht gesehen
wenn das für gut befunden wird kann das ja bestimmt ein Admin erledigen :hugs:

Also diese Komponenten habe ich nicht verwenden müssen

10kOhms resistor
PNP transistor (like a BC327)

Läuft bei mir auch ohne problemlos.

Ok, ich habe keine anderen Anleitungen im Netz gefunden.

Hast du mal bitte dein Anschlussschema?

@Dreckfresse Ich habe das Thema ins Wiki verschoben. :slight_smile: Schlagwörter/Tags habe ich auch gleich noch gesetzt.

Habe mir das auch gerade mal alles genauer angeschaut. Wozu der Transistor dient ist mir auch nicht ganz klar. Ob damit wohl sichergestellt wird, dass immer ein Steuersignal mit korrekter Spannung am ESP ankommt. Der 10k Widerstand ist ja bei fast allen Schaltungen mit ESP Standard als Pull-Up, habe aber auch schon oft ohne diesen gearbeitet und funktionierte bisher immer.

Habe jetzt natürlich auch Anschlussschema ohne diese gefunden :grin:

Nun gut, auf der ESPHome Seite sind sie halt mit inbegriffen (hatte ich eh hier)

Danke fürs verschieben :+1:

Jo kommt Laufe des Tages :wink:

1 „Gefällt mir“

Kann man den Sensor in den sleep modus setzen bzw. Aufwecken.
Da er sonstst ständig 20 - 30 mA verbraucht.
Kann man muss man nicht.
Gruss

1 „Gefällt mir“
2 „Gefällt mir“

Das ist ja schon mal super erklärt in diesem Video

gerade die Code Erklärung finde ich :+1:

Danke

Super Video zu diesem Thema? Danke.

Wie erhalte ich die Druck Daten zu diesem Gehäuse?
Habe auch eine Reolink Doorbell.

Währe super wenn ich die bekommen könnte.

Gruss

Bitte schön und viel Spaß bei dem Projekt

1 „Gefällt mir“

Sorry habe eine Frage zum Druck vom Gehäuse (Shield)

Hast du das Horizontal mit stütz Struktur gedruckt oder aufgestellt?

Gruss

Ich würde es horizontal drucken, bessere Layeranordnung und nach dem Druck stabiler. In aufgestellter Form hat man auch die Drucklinien sichtbar und bei horizontal ist das ja sozusagen die Deckschicht, sieht nach dem Druck einfach schöner aus. :slight_smile:

Also so wie auf dem Bild + stütz Struktur ??
Bin mit 3D druck noch nicht so sattelfest!

Gruss

ja genau so. :+1:

1 „Gefällt mir“

Ich hab’s aufgestellt gedruckt, dadurch benötigt man auch weniger Support.
Je nach Drucker liefert es auch so ein top Ergebnis.
Gedruckt habe ich es mit ASA, 100% infill, layer Schicht 0.16 meine ich.

Alternativ hätte ich noch 2 fertig gedruckte Exemplare liegen

Wenn du es horizontal druckst, dann passe beim Entfernen des supports auf die beiden schraubstutzen auf, die brechen ganz schnell weg

Das glaube ich nicht, dass weniger Support benötigt wird. :wink: Musste ich glatt mal schnell kontrollieren. 179g liegend und 200g stehend Supportmaterial mit Standard Einstellungen.

1 „Gefällt mir“

Ja Standard Einstellungen :smiley: du supportest ja auch indem Fall jedes löchlein - und mit Baumsupport kommste da auf weniger Material.
Mein Druck ist auch schon länger her, aus diesem Grund kann ich mich natürlich auch irren :wink:

1 „Gefällt mir“