跳转到内容

RC522 NFC/RFID

rc522 组件允许你在 ESPHome 中使用 RC522 NFC/RFID 控制器 (数据手册、Ali Express)。 ESPHome 可以从标签读取 UID。每个 NFC/RFID 标签都有一个在制造时分配的 唯一“UID”值。标签可以与二进制传感器关联,使得确定特定标签何时存在变得容易。 你还可以在 ESPHome 自动化/lambda 中直接使用标签信息。有关 使用此组件设置单独二进制传感器的信息,请参见 设置标签。

RC522 IC 支持 SPI、I²C 和 UART 通信协议;ESPHome 可以使用 SPI 或 I²C。

  • 如果你有一个如上图中所示的模块,它只能在 SPI 模式下使用 (除非破解),并且必须在你的配置中定义一个 SPI 总线 ,同时设置 miso_pin 和 mosi_pin。

  • 如果你有一个通过 I²C 通信的 RC522(如 M5 Stack 上那样),则需要配置一个 I²C 总线。

rc522_spi 组件允许你在 ESPHome 中使用 RC522 NFC/RFID 控制器。该组件是一个全局中心, 通过 SPI 与 RC522 建立连接。使用 RC522 二进制传感器, 然后可以创建单独的二进制传感器来追踪 RC522 当前是否检测到 NFC/RFID 标签。

spi:
rc522_spi:
cs_pin: GPIOXX
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID Tag"
  • cs_pin(必选,Pin Schema):芯片选择线 在 ESP 上连接的引脚。

  • reset_pin(可选,Pin Schema):连接到 RST 线的引脚。一些测试 表明在没有它的情况下 RC522 也能正常工作。

  • update_interval(可选,Time):RC522 上每次扫描的持续时间。它影响 个别二进制传感器被发现时保持活动状态的持续时间。 如果在此时间窗口内未找到设备,它将被标记为不存在。默认为 1s。

  • spi_id(可选,ID):如果你想 使用多个 SPI 总线,请手动指定 SPI Component 的 ID。

  • id(可选,ID):手动指定此组件的 ID。

  • on_tag(可选,Automation):读取标签时要执行的自动化。参见 on_tag 触发器。

  • on_tag_removed(可选,Automation):移除标签后要执行的自动化。参见 on_tag_removed 触发器。

rc522_i2c 组件允许你在 ESPHome 中使用 RC522 NFC/RFID 控制器。该组件是一个全局中心, 通过 I²C 与 RC522 建立连接(也可以通过 SPI 实现)。使用 RC522 二进制传感器,然后可以创建单独的二进制传感器来追踪 RC522 当前是否检测到 NFC/RFID 标签。

i2c:
rc522_i2c:
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID Tag"
  • address(可选,int):手动指定传感器的 I²C 地址。默认为 0x28。

  • reset_pin(可选,Pin Schema):连接到 RST 线的引脚。一些测试 表明在没有它的情况下 RC522 也能正常工作。

  • update_interval(可选,Time):RC522 上每次扫描的持续时间。它影响 个别二进制传感器被发现时保持活动状态的持续时间。 如果在此时间窗口内未找到设备,它将被标记为不存在。默认为 1s。

  • i2c_id(可选,ID):如果你想 使用多个 I²C 总线,请手动指定 I²C Component 的 ID。

  • id(可选,ID):手动指定此组件的 ID。

  • on_tag(可选,Automation):读取标签时要执行的自动化。参见 on_tag 触发器。

  • on_tag_removed(可选,Automation):移除标签后要执行的自动化。参见 on_tag_removed 触发器。

当 RC522 识别出标签后,将立即触发此自动化。

此触发器提供的参数 x 类型为 std::string,是以 74-10-37-94 格式表示的标签 UID。例如,下面的配置将在 MQTT 主题 rc522/tag 上发布标签 ID。

rc522_spi: # 或 rc522_i2c
# ...
on_tag:
then:
- mqtt.publish:
topic: rc522/tag
payload: !lambda 'return x;'

标签扫描事件也可以通过 homeassistant.tag_scanned 动作 发送到 Home Assistant 标签组件。

rc522_spi: # 或 rc522_i2c
# ...
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'

当 RC522 不再“看到”先前扫描的标签时,将触发此自动化。

此触发器提供的参数 x 类型为 std::string,是以 74-10-37-94 格式表示的移除标签 UID。下面的示例配置将在 MQTT 主题 pn7160/tag_removed 上发布移除的标签 ID。

rc522_spi: # 或 rc522_i2c
# ...
on_tag_removed:
then:
- mqtt.publish:
topic: rc522/tag_removed
payload: !lambda 'return x;'

rc522 二进制传感器平台允许你追踪 RC522 当前是否正在检测具有给定唯一 id(uid )的 NFC/RFID 标签。

# 示例配置条目
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
rc522_spi: # 或 rc522_i2c
cs_pin: D3
update_interval: 1s
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID Tag"
  • uid(必选,string):NFC/RFID 标签的唯一 ID。这是一个以连字符分隔的 十六进制值列表。例如 74-10-37-94。

  • 来自 Binary Sensor 的所有其他选项。

要为特定的 NFC/RFID 标签设置二进制传感器,你首先需要知道它们的唯一 ID。为了获取此 id,首先像上面那样设置一个不带任何二进制传感器的简单 RC522 配置。

当你的代码正在运行,并且你用 NFC/RFID 标签接近 RC522 时,你应该看到类似这样的消息:

Found new tag '74-10-37-94'

然后复制此 id,并在配置示例中创建一个 binary_sensor 条目。对每个标签重复此过程。