Hoje eu queria compartilhar como fiz um sensor de impressão digital para controlar minha garagem.
Foi o que me fez entrar no Home Assistant pela primeira vez. Eu queria poder controlar minha garagem pelo meu telefone. Isso foi há algum tempo, mas agora também posso controlá-la com um sensor de impressão digital.
Não vou abordar como controlo a garagem em si neste tópico, mas principalmente como controlar o sensor de impressão digital e como construí-lo em um objeto de madeira.
O que você precisa:
- Sensor de impressão digital GROW R503
- ESP8266 ou ESP32 executando ESPHome
- Cabo UTP
- Furadeira
- Broca de ± 35 mm
- Broca de ± 8 mm
- Ferro de solda com solda
- (Opcional) Impressora 3D para imprimir a capa
- (Opcional) Capa pré-fabricada para o sensor
O primeiro passo é descascar o cabo UTP para que todos os fios coloridos fiquem visíveis e possam ser soldados. O sensor de crescimento tem seis fios. Soldei o fio branco e o vermelho juntos porque ambos precisam de 3,3v. Os outros fios eu soldei em cores semelhantes no cabo UTP.
Após a soldagem, cubra a solda com fita isolante para isolá-los um do outro.
Para a outra ponta do cabo, você tem que soldá-los à placa ESP8266 ou ESP32. Estas são as cores e pinos que usei.
Para ESP8266:
- Vermelho e branco: 3V
- Preto: G
- Amarelo: D1
- Verde: D0
- Azul: D2
Para ESP32:
- Vermelho e branco: 3V
- Preto: GND
- Amarelo: GPIO16
- Verde: GPIO17
- Azul: GPIO05
Feito isso, carregue a configuração do ESPHome no ESP. Esta é minha configuração.
uart:
tx_pin: D0 # Or GPIO17 for ESP32
rx_pin: D1 # Or GPIO16 for ESP32
baud_rate: 57600
fingerprint_grow:
sensing_pin: D2 # Or GPIO05 for ESP32
on_finger_scan_matched:
- 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: "Authorized finger"
on_finger_scan_unmatched:
- fingerprint_grow.aura_led_control:
state: FLASHING
speed: 25
color: RED
count: 2
- text_sensor.template.publish:
id: fingerprint_state
state: "Unauthorized finger"
on_enrollment_scan:
- 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 scanned"
on_enrollment_done:
- fingerprint_grow.aura_led_control:
state: BREATHING
speed: 100
color: BLUE
count: 2
- text_sensor.template.publish:
id: fingerprint_state
state: "Enrolled fingerprint"
on_enrollment_failed:
- fingerprint_grow.aura_led_control:
state: FLASHING
speed: 25
color: RED
count: 4
- text_sensor.template.publish:
id: fingerprint_state
state: "Failed to enroll fingerprint"
text_sensor:
- platform: template
id: fingerprint_state
name: "Garage Fingerprint State"
sensor:
- platform: fingerprint_grow
fingerprint_count:
name: "Garage Fingerprint Count"
id: fingerprint_count
last_finger_id:
name: "Garage Fingerprint Last Finger ID"
last_confidence:
name: "Garage Fingerprint Last Confidence"
status:
name: "Garage Fingerprint Status"
capacity:
name: "Garage Fingerprint Capacity"
security_level:
name: "Garage Fingerprint Security Level"
api:
password: !secret api_password
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 # 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:
É importante também definir uma senha para o sensor de impressão digital para evitar ataques físicos, como soldar outro sensor de impressão digital ao cabo UTP. Consulte a documentação do ESPHome para obter mais informações.
Certifique-se de adicionar o dispositivo no Home Assistant como uma integração, caso ainda não o tenha feito.
Quando isso estiver pronto, você pode registrar sua impressão digital no sensor chamando o serviço esphome.X_enroll
onde X é o nome do dispositivo, com os parâmetros finger_id
e num_scans
. Para o primeiro dedo, preencha o id 0, o segundo dedo, o id 1 e assim por diante. O num scans é a quantidade de scans que leva para registrar o dedo. Eu uso 2 para isso.
Tudo funcionou? Ótimo! Vamos construir isso em uma superfície.
Para colocá-lo na madeira, tive que dessoldar o sensor de impressão digital do cabo UTP. Pegue a furadeira e uma broca grande, algo assim.