Titel: Fingerprint R503 & NFC Tag Reader PN532 – Verkabelung & Einrichtung in ESPHome & Home Assistant
Möchtest du den Fingerprint-Sensor R503 und den NFC Tag Reader PN532 in dein Smart Home integrieren? In unserem neuesten YouTube-Video zeigen wir dir Schritt für Schritt, wie du die Geräte verkabelst und in ESPHome sowie Home Assistant einrichtest.
Was dich im Video erwartet:
✅ Detaillierte Verkabelungsanleitung für R503 & PN532
✅ Einrichtung in ESPHome mit den passenden YAML-Codes
✅ Integration in Home Assistant für eine einfache Nutzung
Hier der YAML-Code zum Projekt aus dem Video:
1substitutions:
2 name: fingerprint_tagreader
3 friendly_name: Fingerprint TagReader
4
5
6esp32:
7 board: esp32doit-devkit-v1
8 framework:
9 type: arduino
10
11
12esphome:
13 name: $name
14 on_boot:
15 priority: -10
16 then:
17 - wait_until:
18 api.connected:
19 - logger.log: API is connected!
20 - rtttl.play: "success:d=24,o=5,b=100:c,g,b"
21 - light.turn_on:
22 id: activity_led
23 brightness: 100%
24 red: 0%
25 green: 0%
26 blue: 100%
27 flash_length: 500ms
28 - switch.turn_on: buzzer_enabled
29 - switch.turn_on: led_enabled
30
31wifi:
32 networks:
33 - ssid: "Fritz!Box 7590"
34 password: "XXXXXXX"
35 power_save_mode: none
36 output_power: 20dB
37 manual_ip:
38 static_ip: 192.168.178.17
39 gateway: 192.168.178.1
40 subnet: 255.255.255.0
41
42 ap:
43 ssid: "FingerprintEingang"
44 password: "muckel18"
45
46captive_portal:
47
48logger:
49 level: DEBUG
50
51# Enable Web server
52web_server:
53 port: 80
54
55ota:
56 platform: esphome
57
58uart:
59 rx_pin: GPIO16 # Gelb
60 tx_pin: GPIO17 # Violett
61 baud_rate: 57600
62
63
64api:
65 services:
66 - service: enroll
67 variables:
68 finger_id: int
69 num_scans: int
70 then:
71 - fingerprint_grow.enroll:
72 finger_id: !lambda 'return finger_id;'
73 num_scans: !lambda 'return num_scans;'
74 - service: enroll_next
75 variables:
76 num_scans: int
77 then:
78 - fingerprint_grow.enroll:
79 finger_id: !lambda 'return id(fingerprint_count).state;'
80 num_scans: !lambda 'return num_scans;'
81 - service: cancel_enroll
82 then:
83 - fingerprint_grow.cancel_enroll:
84 - service: delete
85 variables:
86 finger_id: int
87 then:
88 - fingerprint_grow.delete:
89 finger_id: !lambda 'return finger_id;'
90 - service: delete_all
91 then:
92 - fingerprint_grow.delete_all:
93
94
95fingerprint_grow:
96 sensing_pin: GPIO5 # Blau
97 password: 0x00000000
98 on_finger_scan_matched:
99 - logger.log: "scan matched"
100 - text_sensor.template.publish:
101 id: fingerprint_state
102 state: "Autorisierter Fingerabdruck"
103 - delay: 1s
104 - text_sensor.template.publish:
105 id: fingerprint_state
106 state: "Warte"
107 - fingerprint_grow.aura_led_control:
108 state: BREATHING
109 speed: 200
110 color: BLUE
111 count: 1
112 - light.turn_on:
113 id: activity_led
114 brightness: 100%
115 red: 0%
116 green: 100%
117 blue: 0%
118 - switch.turn_on: buzzer_enabled
119 - rtttl.play: "success:d=24,o=5,b=100:c,g,b" # Warnton Erfolgreich (kann angepasst werden)
120 - delay: 2s # Warte einige Sekunden, um die Erfolgsanzeige anzuzeigen
121 - light.turn_off: # LED ausschalten nach dem Erfolg
122 id: activity_led
123 - switch.turn_off: # Buzzer ausschalten nach dem Erfolg
124 id: buzzer_enabled
125
126 on_finger_scan_unmatched:
127 - logger.log: "scan unmatched"
128 - text_sensor.template.publish:
129 id: fingerprint_state
130 state: "Unautorisierter Fingerabdruck"
131 - fingerprint_grow.aura_led_control:
132 state: FLASHING
133 speed: 25
134 color: RED
135 count: 2 # LED blinkt rot, um einen Fehler anzuzeigen
136 - light.turn_on: # LED rot leuchten bei negativer Erkennung
137 id: activity_led
138 brightness: 100%
139 red: 100%
140 green: 0%
141 blue: 0%
142 - switch.turn_on: buzzer_enabled # Buzzer einschalten für den Warnton
143 - rtttl.play: "failure:d=24,o=5,b=100:c,d,e,f" # Warnton (kann angepasst werden)
144 - delay: 3s # Warnton für 3 Sekunden abspielen
145 - light.turn_off: # LED ausschalten nach dem Warnton
146 id: activity_led
147 - switch.turn_off: # Buzzer ausschalten nach dem Warnton
148 id: buzzer_enabled
149 - delay: 1s
150 - text_sensor.template.publish:
151 id: fingerprint_state
152 state: "Warte"
153
154 on_enrollment_scan:
155 - text_sensor.template.publish:
156 id: fingerprint_state
157 state: "Fingerabdruck erfasst"
158 - fingerprint_grow.aura_led_control:
159 state: FLASHING
160 speed: 25
161 color: BLUE
162 count: 2
163 - fingerprint_grow.aura_led_control:
164 state: ALWAYS_ON
165 speed: 0
166 color: GREEN
167 count: 0
168
169 on_enrollment_failed:
170 - text_sensor.template.publish:
171 id: fingerprint_state
172 state: "Erfassung des Fingerabdrucks fehlgeschlagen"
173 - fingerprint_grow.aura_led_control:
174 state: FLASHING
175 speed: 25
176 color: RED
177 count: 4
178
179
180
181# Optionaler Vorlagentextsensor für visuelles Feedback
182text_sensor:
183 - platform: template
184 id: fingerprint_state
185 name: "Fingerabdruck Status"
186
187 - platform: version
188 hide_timestamp: true
189 name: "${friendly_name} ESPHome Version"
190 entity_category: diagnostic
191 - platform: wifi_info
192 ip_address:
193 name: "${friendly_name} IP Address"
194 icon: mdi:wifi
195 entity_category: diagnostic
196 ssid:
197 name: "${friendly_name} Connected SSID"
198 icon: mdi:wifi-strength-2
199 entity_category: diagnostic
200
201binary_sensor:
202 - platform: fingerprint_grow
203 id: fingerprint_enrolling
204 name: "Fingerabdruck erfassen"
205
206 - platform: status
207 name: "${friendly_name} Status"
208 entity_category: diagnostic
209
210 - platform: pn532
211 uid: "6B-D8-B4-19"
212 name: "Luis-Tag"
213
214 - platform: pn532
215 uid: "04-49-5B-42-F8-61-80"
216 name: "Felix-Tag"
217
218 - platform: pn532
219 uid: "DB-6F-03-3D"
220 name: "Suse-Tag"
221
222sensor:
223 - platform: fingerprint_grow
224 fingerprint_count:
225 name: "Fingerabdruck Zähler"
226 id: fingerprint_count
227 last_finger_id:
228 name: "Letzte Fingerabdruck ID"
229 last_confidence:
230 name: "Zuverlässigkeit des letzten Fingerabdrucks"
231 status:
232 name: "Fingerabdruckstatus"
233 capacity:
234 name: "Abdruckkapazität"
235 security_level:
236 name: "Sicherheitsstufe"
237
238switch:
239- platform: template
240 name: "${friendly_name} Buzzer Enabled"
241 id: buzzer_enabled
242 icon: mdi:volume-high
243 optimistic: true
244 restore_mode: RESTORE_DEFAULT_ON
245 entity_category: config
246- platform: template
247 name: "${friendly_name} LED enabled"
248 id: led_enabled
249 icon: mdi:alarm-light-outline
250 optimistic: true
251 restore_mode: RESTORE_DEFAULT_ON
252 entity_category: config
253
254button:
255 - platform: restart
256 name: "${friendly_name} Restart"
257 entity_category: config
258
259#NFC PN532
260i2c:
261 sda: GPIO21 # Orange
262 scl: GPIO22 # Gelb
263 scan: true
264 id: bus_a
265 frequency: 400kHz
266
267# PN532 Tag Reader ## Lambda LED leuchtet Rot bei unbekannten Tag
268pn532_i2c:
269 id: pn532_board
270 on_tag:
271 then:
272 - lambda: |-
273 std::string known_tags[] = {"6B-D8-B4-19", "04-49-5B-42-F8-61-80", "DB-6F-03-3D"};
274 bool known = false;
275 for (auto &tag : known_tags) {
276 if (tag == x) {
277 known = true;
278 break;
279 }
280 }
281 if (known) {
282 ESP_LOGD("tagreader", "Bekannter Tag erkannt");
283 id(rtttl_buzzer).play("hallo:d=24,o=5,b=100:c,e,g");
284 auto call = id(activity_led).turn_on();
285 call.set_rgb(0, 1, 0);
286 call.perform();
287 } else {
288 ESP_LOGD("tagreader", "Unbekannter Tag erkannt");
289 id(rtttl_buzzer).play("failure:d=24,o=5,b=100:c,d,e,f");
290 delay(2000);
291 auto call = id(activity_led).turn_on();
292 call.set_rgb(1, 0, 0);
293 call.perform();
294 }
295
296 - delay: 2s
297 - light.turn_off:
298 id: activity_led
299
300
301output:
302 - platform: ledc
303 pin: GPIO26
304 id: buzzer_output
305
306
307rtttl:
308 id: rtttl_buzzer
309 output: buzzer_output
310
311# Configure LED
312light:
313 - platform: neopixelbus
314 variant: WS2812
315 pin: GPIO19
316 num_leds: 1
317 id: activity_led
318 flash_transition_length: 500ms
319 type: GRB
320 name: "${friendly_name} LED"
321 restore_mode: ALWAYS_OFF


