🚘 Garage Fingerprint Sensor

Yes, it is possible to install any older version.
Take a look here

1 Like

Hello, I am turning to you because I have been looking for several days and I cannot find the solution.
in HA I have the IDs which are displayed but I cannot see the names which correspond to the ID, they are however registered in my yaml file
What am I doing wrong
THANKS

esphome:
  name: capteur-emprunte-digital
  friendly_name: capteur emprunte digital

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret api_password
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  
  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: enroll_next # Idea by Ralf Klüber (thanks!)
    variables:
      num_scans: int
    then:
      - fingerprint_grow.enroll:
          finger_id: !lambda 'return id(fingerprint_count).state;'
          num_scans: !lambda 'return num_scans;'
  - 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:

ota:
  password: "xxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: NONE
  reboot_timeout: 5 min

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Capteur-Emprunte-Digital"
    password: "xxxxxxxxxxxxxxxxxx"

captive_portal:

uart:
  rx_pin: GPIO19
  tx_pin: GPIO21
  baud_rate: 57600

fingerprint_grow:
   # sécurisez votre système !ATTENTION à ne jamais perdre le mot de passe
  password: xxxxxxxxxxxxxxxxxxx      # Mot de passe existant, peut être omis s'il s'agit de la valeur par défaut 0x00
  #new_password: xxxxxxxxxxxxxxxx  # Nouveau mot de passe ensuite mettre à jour le mot de passe existant avec le nouveau.
  sensing_pin: GPIO4 #GPIO32
  on_finger_scan_matched:

    - homeassistant.event:
        event: esphome.test_node_finger_scan_matched
        data:
          finger_id: !lambda 'return finger_id;'
          confidence: !lambda 'return confidence;'  
    #- switch.turn_on: trigger_relay
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 200
        color: BLUE
        count: 1
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "doigt autorisé"
    - delay: 2s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
        
# Pousser un événement tag_scanned basé sur finger_id uniquement si la confiance est supérieure à 50
# Créer une balise avec nom d'utilisateur pour chaque numéro d'identifiaction
    - if:
        condition:
          lambda: 'return confidence > 50;'
        then:
          - homeassistant.tag_scanned: !lambda |-
              switch (finger_id) {
                case 0:
                  return "Seba";
                case 1:
                  return "person_1";
                case 2:
                  return "person_2";
                case 3:
                  return "person_3";                  
                default:
                  return "person_inconnu";
              }   
        
  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: "doigt refusé"
    - delay: 2s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
  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: "Finger scanné"
    - delay: 2s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
  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: "emprunte enrgistée"
    - delay: 2s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
  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: !lambda 'return "Failed to enroll into slot " + to_string(finger_id);'
    - delay: 3s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: !lambda 'return "Retrying enrollment into slot " + to_string(finger_id) + " in 3 seconds...";'
    - delay: 3s
    - fingerprint_grow.enroll: !lambda 'return finger_id;'
text_sensor:
  - platform: template
    id: fingerprint_state
    name: "Fingerprint State"
  - platform: wifi_info
    ip_address:
      name: ${entity_name} ESP IP Address
      entity_category: "diagnostic"
      disabled_by_default: True
      icon: mdi:ip-network
    mac_address:
      name: ${entity_name} ESP MAC
      entity_category: "diagnostic"
      icon: mdi:ip-network
      disabled_by_default: True
# Intégration des entités capteur pour Lovelace
sensor:
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Fingerprint Count"
      id: fingerprint_count
    last_finger_id:
      name: "Fingerprint Last Finger ID"
    last_confidence:
      name: "Fingerprint Last Confidence"
    status:
      name: "Fingerprint Status"
    capacity:
      name: "Fingerprint Capacity"
    security_level:
      name: "Fingerprint Security Level"
  - platform: uptime
    name: ${entity_name} ESP Uptime
    id: sys_uptime
    update_interval: 60s
    disabled_by_default: True
  - platform: wifi_signal 
    name: ${entity_name} RSSI
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"
button:
  - platform: restart
    icon: mdi:power-cycle
    name: ${entity_name} ESP Reboot
    entity_category: diagnostic

Hi diagus, did you solve the problem of installing the new sensor in a button? If so, could you tell me which components you used?

Ive been eyeing one of these for a while but, was unsure about how well it worked. Now that its been a while, can you do an update on it? Any malfunctions? Any weathering? No problems at all?

No problems for me. It’s installed under a cover, but outside. No rust or anything like that. Still works fine since the day I installed it.

Does anyone else have problems with R307 sensor? Says “finger misplaced” 99 times out of 100. Totally unusable.

Bought it from aliexpress so it may be cheap copy.

Never used it, but generally speaking optical sensors are inferior to capacitive ones, so I wouldn’t put too much faith in the R307.

I need help, every time I scan my finger I get this:
[03:30:47][W][component:237]: Component fingerprint_grow took a long time for an operation (61 ms).
[03:30:47][W][component:238]: Components should block for at most 30 ms.

esphome:
  name: door-controller
  friendly_name: Door Controller 

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino

# Enable logging
logger:
  baud_rate: 9600

# Enable Home Assistant API
api:
  encryption:
    key: "secretkeyhere"

  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;'
  - service: enroll_next
    variables:
      num_scans: int
    then:
      - fingerprint_grow.enroll:
          finger_id: !lambda 'return id(fingerprint_count).state;'
          num_scans: !lambda 'return num_scans;'          
  - 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:    

ota:
  password: "secretpasswordhere"
  platform: esphome  

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Door-Controller Fallback Hotspot"
    password: "6VJ7TXB4f3Z6"


captive_portal:

uart:
  rx_pin: GPIO21 #Blue
  tx_pin: GPIO20 #Green
  baud_rate: 57600
  id: biometrics

binary_sensor:
  - platform: gpio
    pin: GPIO4 #Light Green
    name: "Touch Top"
    id: touch1

  - platform: gpio
    pin: GPIO3 #Dark Brown
    name: "Touch Bottom" 
    id: touch2

  - platform: gpio
    pin:
      number: GPIO2 #Dark Blue
      inverted: False
    name: "Lock Sensor"
    device_class: lock
    id: locksensor

  - platform: gpio
    pin:
      number: GPIO1 #Pale Purple
      inverted: False
    name: "Door Sensor"
    filters:
      - delayed_on: 50ms    
    device_class: door
    id: doorsensor

  - platform: fingerprint_grow
    name: "Fingerprint Scanner"
    id: fingerprintscanner

  - platform: fingerprint_grow
    id: fingerprint_enrolling
    name: "Fingerprint Enrolling"    

lock:
  - platform: template
    name: "Door Lock"
    lambda: |-
      if (id(locksensor).state) {
        return LOCK_STATE_UNLOCKED;
      } else {
        return LOCK_STATE_LOCKED;
      }
    lock_action:
      then:
      - if:
          condition:
            and:
              - binary_sensor.is_off: doorsensor
          then:
            - switch.turn_on: lockclose
          else:
            - text_sensor.template.publish:
                id: door_state
                state: "Door is Open"         
    unlock_action:
      - switch.turn_on: lockopen
    open_action:
      - switch.turn_on: lockopen
    on_lock:
    - text_sensor.template.publish:
        id: door_state
        state: "Door Locked"
    on_unlock:
    - text_sensor.template.publish:
        id: door_state
        state: "Door Unlocked" 

switch:
  - platform: gpio
    name: "Lock"
    pin:
      number: GPIO8 #Yellow
      inverted: true
    id: lockclose
    internal: True
    on_turn_on:
    - delay: 500ms
    - switch.turn_off: lockclose    

  - platform: gpio
    name: "Unlock"
    pin:
      number: GPIO9 #Grey
      inverted: true
    id: lockopen
    internal: True    
    on_turn_on:
    - delay: 500ms
    - switch.turn_off: lockopen

  - platform: restart
    name: "Restart"

light:
  - platform: esp32_rmt_led_strip
    rgb_order: GRB
    pin: GPIO7 #White
    num_leds: 10
    rmt_channel: 0
    chipset: ws2812
    name: "Status Lights"
    id: statuslights
    internal: True

  - platform: partition
    name: "Lock Status"
    id: lockstatus
    internal: false
    restore_mode: RESTORE_DEFAULT_OFF
    segments:
      - id: statuslights
        from: 0
        to: 0                     
    effects:
      - strobe:
          name: Door Locked
          colors:
            - state: true
              brightness: 50%
              red: 0%
              green: 100%
              blue: 0%
              duration: 1s
            - state: false
              duration: 500ms
      - strobe:
          name: Door Closed
          colors:
            - state: true
              brightness: 50%
              red: 0%
              green: 0%
              blue: 100%
              duration: 1s
            - state: false
              duration: 500ms
      - strobe:
          name: Door Open
          colors:
            - state: true
              brightness: 50%
              red: 100%
              green: 0%
              blue: 0%
              duration: 1s
            - state: false
              duration: 500ms

  - platform: partition
    name: "Ring Light"
    id: ringlight
    internal: false
    restore_mode: RESTORE_DEFAULT_OFF
    segments:
      - id: statuslights
        from: 1
        to: 9    
    effects:
      - strobe:
          name: Proximity
          colors:
            - state: true
              brightness: 50%
              red: 100%
              green: 100%
              blue: 100%
              duration: 2s
              transition_length: 1s
            - state: false
              duration: 1s
              transition_length: 500ms                  
      - addressable_color_wipe:
          name: Lock Effect
          colors:
            - red: 0%
              green: 0%
              blue: 0%
              num_leds: 8
              gradient: False
            - red: 25%
              green: 25%
              blue: 75%
              num_leds: 5
              gradient: True        
          add_led_interval: 50ms
          reverse: True
      - addressable_color_wipe:
          name: Unlock Effect
          colors:
            - red: 0%
              green: 0%
              blue: 0%
              num_leds: 8
              gradient: False
            - red: 25%
              green: 25%
              blue: 75%
              num_leds: 5
              gradient: True              
          add_led_interval: 50ms
          reverse: False


text_sensor:
  - platform: template
    name: "Fingerprint State"
    id: fingerprint_state

  - platform: template
    name: "Door State"
    id: door_state    

fingerprint_grow:
  uart_id: biometrics
  id: fingerprint
  sensing_pin: GPIO10 #Purple
  password: !secret fingerprint_password
   
  on_finger_scan_start:
  - fingerprint_grow.aura_led_control:
      state: ALWAYS_ON
      color: GREEN
      speed: 0
      count: 0
  
  on_finger_scan_invalid:
    - homeassistant.event:
        event: esphome.test_node_finger_scan_invalid
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Invalid Finger"        
  
  on_finger_scan_matched:
    - 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: BLUE
        count: 1
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 2

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

  on_finger_scan_misplaced:
    - homeassistant.event:
        event: esphome.frontdoor_finger_scan_misplaced
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Misplaced finger"
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: PURPLE
        count: 2

  on_enrollment_scan:
    - homeassistant.event:
        event: esphome.test_node_enrollment_scan
        data:
          finger_id: !lambda 'return finger_id;'
          scan_num: !lambda 'return scan_num;'
    - text_sensor.template.publish:
        id: fingerprint_state
        state: !lambda 'return "Enrolling into slot " + to_string(finger_id) + ", scanned " + to_string(scan_num) + " time(s)";'          
    - 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

  on_enrollment_done:
    - homeassistant.event:
        event: esphome.test_node_enrollment_done
        data:
          finger_id: !lambda 'return finger_id;'
    - text_sensor.template.publish:
        id: fingerprint_state
        state: !lambda 'return "Enrolled into slot " + to_string(finger_id);'          
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 100
        color: BLUE
        count: 2

  on_enrollment_failed:
    - homeassistant.event:
        event: esphome.test_node_enrollment_failed
        data:
          finger_id: !lambda 'return finger_id;'
    - text_sensor.template.publish:
        id: fingerprint_state
        state: !lambda 'return "Failed to enroll into slot " + to_string(finger_id);'
    # Retry enrollment into the same slot
    - delay: 3s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: !lambda 'return "Retrying enrollment into slot " + to_string(finger_id) + " in 3 seconds...";'
    - delay: 3s
    - fingerprint_grow.enroll: !lambda 'return finger_id;'
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 4

sensor:
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Fingerprint Count"
      id: fingerprint_count
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Count"
    last_finger_id:
      name: "Last ID"
    last_confidence:
      name: "Last Confidence"
    status:
      name: "Status"
    capacity:
      name: "Capacity"
    security_level:
      name: "Security Level"


It’s just a warning, does the sensor work fine?

The sensor seems to work fine, when I test the reader I get a Misplaced finger message, and I can’t enroll any fingerprints.

I disabled the sensing pin in esphome, now the reader works fine. Does the pin send an hi/low signal or does it send data?