151 lines
4.8 KiB
Markdown
151 lines
4.8 KiB
Markdown
|
|
# ESP Fingerprint for FHEM
|
|
|
|
[ESPHome](https://esphome.io/components/fingerprint_grow.html) based firmware for ESP32 or ESP8266 to manage and use a R503-RGB Fingerprint Reader over MQTT.
|
|
|
|
Supported features of my code:
|
|
|
|
* Control R503 LED
|
|
* LED colors: RED, BLUE, PURPLE, GREEN, YELLOW, CYAN and WHITE
|
|
* LED effects: BREATHING, FLASHING, ALWAYS_ON, ALWAYS_OFF, GRADUAL_ON and GRADUAL_OFF
|
|
* enroll a fingerprint to the reader
|
|
* delete fingerprint
|
|
|
|
|
|
<img src="doc/r503.gif" width="300">
|
|
|
|
|
|
# Getting started
|
|
|
|
## Config pins and effects
|
|
|
|
Set correct GPIO Pins in `fingerprintdoor.yaml`
|
|
|
|
```yaml
|
|
# -----------------------------
|
|
# Config
|
|
# -----------------------------
|
|
devicename: fingerprintdoor
|
|
reader_rx_pin: GPIO16
|
|
reader_tx_pin: GPIO17
|
|
reader_sensor_pin: GPIO5
|
|
speed_flash: "100"
|
|
count_flash: "4"
|
|
speed_breath: "75"
|
|
count_breath: "7"
|
|
speed_gradual_off: "200"
|
|
speed_gradual_on: "35"
|
|
```
|
|
|
|
## Wifi and MQTT
|
|
Create a `secrets.yaml`file in your project folder
|
|
|
|
```yaml
|
|
wifi_ssid: "YourSSID"
|
|
wifi_password: "YourPASS"
|
|
ota_password: "OtaPass"
|
|
mqtt_ip: "192.168.1.1"
|
|
mqtt_user: ""
|
|
mqtt_password: ""
|
|
```
|
|
## Flash to ESP
|
|
Follow this [GUIDE](https://esphome.io/guides/installing_esphome.html) to install ESPHome and flash it to your device with:
|
|
|
|
```shell
|
|
esphome run fingerprintdoor.yaml --device COM4
|
|
```
|
|
> Note: COM Port may differ, change it to your COM port
|
|
## FHEM MQTT2 device
|
|
|
|
```shell
|
|
defmod myFingerprintReader MQTT2_DEVICE fingerprintdoor
|
|
attr myFingerprintReader comment ToDo neuer Finger:\
|
|
- enroll neue ID\
|
|
- ID in userreading speichern\
|
|
- ID in Hashtable im notify eintragen (Admin oder Standard User)
|
|
attr myFingerprintReader event-on-change-reading .*
|
|
attr myFingerprintReader event-on-update-reading msg
|
|
attr myFingerprintReader setList GREEN:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
BLUE:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
RED:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
PURPLE:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
WHITE:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
CYAN:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
YELLOW:ALWAYS_ON,ALWAYS_OFF,BREATHING,FLASHING,GRADUAL_ON,GRADUAL_OFF fingerprintdoor/led/command {"color":"$EVTPART0","effect":"$EVTPART1","speed":150, "count":0}\
|
|
purple_breath fingerprintdoor/led/command {"color":"purple","effect":"breathing","speed":90, "count":0}\
|
|
light_master:noArg fingerprintdoor/led/command {"color":"BLUE","effect":"BREATHING","speed":165, "count":0}\
|
|
light_master_off:noArg fingerprintdoor/led/command {"color":"BLUE","effect":"GRADUAL_OFF","speed":165, "count":0}\
|
|
ready4finger:noArg fingerprintdoor/led/command {"color":"PURPLE","effect":"BREATHING","speed":165, "count":0}\
|
|
ready4finger_off:noArg fingerprintdoor/led/command {"color":"PURPLE","effect":"ALWAYS_OFF","speed":165, "count":0}\
|
|
custom fingerprintdoor/led/command {"color":"$EVTPART1","effect":"$EVTPART2","speed":$EVTPART3, "count":$EVTPART4}\
|
|
off:noArg fingerprintdoor/led/command {"color":"RED","effect":"ALWAYS_OFF","speed":20, "count":0}\
|
|
cancel:noArg fingerprintdoor/cancel_enroll\
|
|
enroll fingerprintdoor/enroll $EVTPART1\
|
|
delete fingerprintdoor/delete $EVTPART1\
|
|
\
|
|
|
|
attr myFingerprintReader userReadings ID1 {"Person 1"},\
|
|
ID2 {"Person 2"},\
|
|
ID3 {"Person 3"}
|
|
```
|
|
|
|
## Usage in FHEM
|
|
|
|
### Enroll new finger
|
|
|
|
Syntax:
|
|
```shell
|
|
set <fhem device name> enroll <finger ID>
|
|
```
|
|
|
|
Example:
|
|
```shell
|
|
set myFingerprint enroll 1
|
|
```
|
|
|
|
>Note: Enrollment cancel ist possible with:
|
|
```shell
|
|
set myFingerprint cancel
|
|
```
|
|
|
|
### Delete finger
|
|
|
|
Syntax:
|
|
```shell
|
|
set <fhem device name> delete <finger ID>
|
|
```
|
|
|
|
Example:
|
|
```shell
|
|
set myFingerprint delete 1
|
|
```
|
|
|
|
### Set Led color and effect
|
|
Syntax:
|
|
```shell
|
|
set <fhem device name> <color> <effect> <speed> <count>
|
|
```
|
|
|
|
Example:
|
|
```shell
|
|
set myFingerprint blue flash 120 3
|
|
```
|
|
|
|
>Note: If `<count>=0` for effect "flashing" or "breathing" will run continously and can be interrupted
|
|
|
|
# Example
|
|
|
|
|
|
|
|
## Device Readings
|
|
|
|
<img src="doc/fhem.jpg" width="200">
|
|
|
|
## Setlist
|
|
<img src="doc/fhem2.jpg" width="200">
|
|
|
|
|
|
## Credits
|
|
[ESPHome project](https://esphome.io/)
|
|
|
|
[Helpful ESPHome tutorials](https://www.youtube.com/@Smarthomeyourself) |