Ich wollte euch ein kleines Projekt vorstellen mit einem Fingerprint Reader mit Anbindung an Homeassistant
Inspiriert wurde ich durch ein Youtube Video inklusive yaml Code GitHub:
Damit war mein Spieltrieb geweckt
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
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
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
gehe jetzt wieder spielen