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 总线。
通过 SPI
Section titled “通过 SPI”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触发器。
通过 I²C
Section titled “通过 I²C”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触发器。
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 二进制传感器平台允许你追踪 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 条目。对每个标签重复此过程。