В последнее время получили широкое распространение метки беспроводной идентификации RFID - Radio Frequency IDentification. Существует несколько разновидностей подобных меток.
Мы рассмотрим современную систему, работающую на частоте 13.5 Мгц именуемую Mifare и NFC. Данные метки доступны в форм-факторе пластиковых карт, брелоков, наклеек. Отличительной особенностью данных меток является наличие внутренней памяти, помимо серийного номера. В зависимости от типа метки она может быть размером до 1 кБ.
Устройство работает в сегменте Wi-Fi сети.
Сборка считывателя
Для сборки считывателя нам понадобятся следующие компоненты:

Подобрав подходящий корпус можно приступать к сборке. Для лучшей дальности считывания применяем нейлоновый крепеж.
Собираем по схеме

Переключатели на модуле PN532 установите в положение SPI - 1 выключен, 2 включен.
Собранный считыватель

Интеграция в Home Assistant
Для подключения к серверу будем использовать аддон ESPHome. Переходим в раздел Supervisor - Add-on и устанавливаем.

Переходим в меню аддона и нажимаем зеленый плюс внизу страницы для добавления нашего нового устройства.

Запускается мастер установки, вносим данные нашей Wi-Fi сети, тип модуля и пароль для перепрошивки по воздуху ОТА



Подтверждаем кнопкой SUBMIT

После чего заходим в редактирование конфигурации созданного модуля

Очищаем и добавляем следующий код:
wifi:
ssid: "Ваша сеть"
password: "Ваш пароль"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Rfidreader Fallback Hotspot"
password: "rwKmhuc3YrVX"
captive_portal:
substitutions:
devicename: tagreader
friendly_name: TagReader
esphome:
name: rfid_reader
platform: ESP8266
board: d1_mini
# Если зуммер включен, уведомлять о подключении к api
on_boot:
priority: -10
then:
- wait_until:
api.connected:
- logger.log: API is connected!
- rtttl.play: "success:d=24,o=5,b=100:c,g,b"
# Установка переключателей для контроля светодиода и зуммера из HA
switch:
- platform: template
name: "${friendly_name} Buzzer Enabled"
id: buzzer_enabled
icon: mdi:volume-high
optimistic: true
- platform: template
name: "${friendly_name} LED enabled"
id: led_enabled
icon: mdi:alarm-light-outline
optimistic: true
# Enable logging
logger:
# Enable Home Assistant API
api:
services:
- service: rfidreader_tag_ok
then:
- rtttl.play: "beep:d=16,o=5,b=100:b"
- service: rfidreader_tag_ko
then:
- rtttl.play: "beep:d=8,o=5,b=100:b"
- service: play_rtttl
variables:
song_str: string
then:
- rtttl.play: !lambda 'return song_str;'
# Enable OTA upgrade
ota:
# Enable SPI interface
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
# Configure the PN532 module
pn532:
cs_pin: D3
update_interval: 2s
# Действие если считана метка
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'
- if:
condition:
switch.is_on: buzzer_enabled
then:
- rtttl.play: "success:d=24,o=5,b=100:c,g,b"
- if:
condition:
switch.is_on: led_enabled
then:
- light.turn_on:
id: activity_led
brightness: 100%
red: 0%
green: 0%
blue: 100%
flash_length: 200ms
# Define the buzzer output
output:
- platform: esp8266_pwm
pin: D8
id: buzzer
# Define buzzer as output for RTTTL
rtttl:
output: buzzer
# Configure LED
light:
- platform: fastled_clockless
chipset: WS2812
pin: D7
default_transition_length: 10ms
num_leds: 1
rgb_order: GRB
id: activity_led
name: "${friendly_name} LED"
restore_mode: ALWAYS_OFF
# Зная ID метки, можно использовать ее как бинарный сенсор
binary_sensor:
- platform: pn532
uid: 9A-EA-DA-80
name: "Blue NFC Tag"
Сохраняем SAVE проверяем VALIDATE. Если ошибок нет, то можем прошивать.
Подключаем наш модуль Wemos к Raspberry в usb порт, и в верхнем углу плагина выбираем появившийся Serial порт. Если до этого модуль прошивался по кабелю, то можно использовать прошивку по воздуху OTA.
После чего жмем UPLOAD. Происходит компиляция и прошивка. После чего, видим лог подключения к нашему устройству. Теперь модуль можно отключить от Raspberry и подключить в любому источнику 5 вольт.
Переходим в раздел Интеграции
И видим наше подключенное устройство.
Нажимаем на ссылку и переходим
Переключателями можно отключать зуммер и светодиод.
В настройках HA появляется пункт Метки переходим в него.
Подносим любую метку к считывателю и она заносится в память. Кликнув на шестеренку, задаем имя.
Настройку можно считать завершенной и приступать к созданию автоматизаций.