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。
组件/集线器
Section titled “组件/集线器”-
如果您有如上图所示的模块,它只能在 SPI 模式下使用(除非破解),您必须在配置中定义一个 SPI 总线,并设置 miso_pin 和 mosi_pin。
-
如果您有通过 I²C 通信的 RC522(如 M5 Stack),您需要配置一个 I²C 总线。
通过 SPI
Section titled “通过 SPI”rc522_spi 组件允许您在 ESPHome 中使用 RC522 NFC/RFID 控制器。此组件是一个全局集线器,通过 SPI 建立与 RC522 的连接。使用 RC522 二进制传感器,您可以创建单独的二进制传感器来跟踪 NFC/RFID 标签当前是否被 RC522 检测到。
spi:
rc522_spi: cs_pin: GPIOXX
binary_sensor: - platform: rc522 uid: 74-10-37-94 name: "RC522 RFID 标签"-
cs_pin (*必需, 引脚模式): ESP 上连接片选线的引脚。
-
reset_pin (可选, 引脚模式): 连接到 RST 线的引脚。一些测试显示 RC522 在没有此引脚的情况下也能正常工作。
-
update_interval (可选, 时间): RC522 上每次扫描的持续时间。这影响各个二进制传感器被发现时保持活动的时间。如果在此时间窗口内未找到设备,将被标记为不存在。默认为
1s。 -
id (可选, ID): 手动指定此组件的 ID。
-
on_tag (可选, 自动化): 当读取标签时执行的自动化。请参阅
on_tag触发器。 -
on_tag_removed (可选, 自动化): 当标签被移除后执行的自动化。请参阅
on_tag_removed触发器。
通过 I²C
Section titled “通过 I²C”rc522_i2c 组件允许您在 ESPHome 中使用 RC522 NFC/RFID 控制器。此组件是一个全局集线器,通过 I²C 建立与 RC522 的连接(也可通过 SPI)。使用 RC522 二进制传感器,您可以创建单独的二进制传感器来跟踪 NFC/RFID 标签当前是否被 RC522 检测到。
i2c:
rc522_i2c:
binary_sensor: - platform: rc522 uid: 74-10-37-94 name: "RC522 RFID 标签"-
address (可选, 整数): 手动指定传感器的 I²C 地址。默认为
0x28。 -
reset_pin (可选, 引脚模式): 连接到 RST 线的引脚。一些测试显示 RC522 在没有此引脚的情况下也能正常工作。
-
update_interval (可选, 时间): RC522 上每次扫描的持续时间。这影响各个二进制传感器被发现时保持活动的时间。如果在此时间窗口内未找到设备,将被标记为不存在。默认为
1s。 -
id (可选, ID): 手动指定此组件的 ID。
-
on_tag (可选, 自动化): 当读取标签时执行的自动化。请参阅
on_tag触发器。 -
on_tag_removed (可选, 自动化): 当标签被移除后执行的自动化。请参阅
on_tag_removed触发器。
on_tag 触发器
Section titled “on_tag 触发器”当 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;'on_tag_removed 触发器
Section titled “on_tag_removed 触发器”当 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 二进制传感器
Section titled “rc522 二进制传感器”rc522 二进制传感器平台允许您跟踪具有给定唯一 ID (uid) 的 NFC/RFID 标签当前是否被 RC522 检测到。
# 示例配置条目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 标签"-
uid (*必需, 字符串): NFC/RFID 标签的唯一 ID。这是以连字符分隔的十六进制值列表。例如
74-10-37-94。 -
所有其他选项来自 二进制传感器。
要为特定 NFC/RFID 标签设置二进制传感器,您首先需要知道它们的唯一 ID。要获取此 ID,首先设置一个简单的 RC522 配置,不带任何二进制传感器,如上所示。
当代码运行并且您将 NFC/RFID 标签靠近 RC522 时,您应该看到类似以下的消息:
Found new tag '74-10-37-94'然后复制此 ID 并创建一个 binary_sensor 条目,如配置示例所示。对每个标签重复此过程。