1. 准备硬件
ESP8266模块:如NodeMCU、Wemos D1 Mini等。
射频收发模块:如433MHz或315MHz的射频发射模块。
连接线:用于将ESP8266与射频模块连接。
连接方式:
射频模块引脚 ESP8266引脚
VCC 3.3V
GND GND
DATA GPIO (如GPIO5)
注意:确保射频模块的工作电压为3.3V。如果模块需要5V供电,请使用外部电源并进行电平转换。
2. 安装和配置Tasmota固件
刷入Tasmota固件:
使用工具(如esptool或tasmotizer)将Tasmota固件刷入ESP8266模块。
下载Tasmota固件:Tasmota Releases
配置WiFi和MQTT:
将ESP8266连接到电脑,通过串口工具(如PuTTY或Tasmota Web界面)配置WiFi网络。
设置MQTT服务器信息(Broker地址、端口、用户名、密码),以便与Home Assistant通信。
配置GPIO功能:
通过Tasmota的Web界面或命令行设置GPIO引脚功能。
将射频模块的DATA引脚对应的GPIO设置为RF Transmit功能。例如:
SetOption60 1 # 启用RF发射支持
测试射频信号发射:
使用Tasmota的RfSend命令测试发送射频信号。例如:
RfSend <协议>,<设备ID>,<命令>
示例:
RfSend 1,12345,1 # 协议1,设备ID 12345,发送
3. 集成到Home Assistant
安装MQTT集成:
在Home Assistant中启用MQTT集成,并配置与Tasmota相同的MQTT Broker。
添加Tasmota设备:
在Home Assistant中自动发现Tasmota设备,或者手动添加MQTT传感器和开关。
创建自动化:
使用Home Assistant的自动化功能,通过MQTT发送命令控制射频信号发射。
示例自动化代码:
Yaml
automation:
- alias: "发射射频信号"
trigger:
platform: state
entity_id: input_boolean.rf_signal_trigger
to: 'on'
action:
- service: mqtt.publish
data:
topic: cmnd/tasmota_device/RfSend
payload: "1,12345,1"
需要注意的是,这里使用的是串口通信,不需要选择RF相关的选项
需要使用tasmota遥控专用的固件,如下,可以直接上官网下载,
也可以在线更新
tasmota-ir.bin.gz | http://ota.tasmota.com/tasmota/release/tasmota-ir.bin.gz | 457k | tasmota-ir.bin | 667k | 20250416 13:40 |
这里不用做任何设置,只需将433接受发射模块接到对应的RX,TX引脚就行
然后再HA中的configuration.yaml文件内容如下:
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
mqtt:
camera:
- name: "ESP32-CAM Snapshot"
topic: "tele/tasmota_A7CA68/CAMERA"
image_encoding: "b64"
unique_id: "cam_001"
button:
# 红外信号按钮
- name: "Send IR Signal"
unique_id: send_ir_signal_1
command_topic: "cmnd/tasmota_B7EFC5/IRSend"
payload_press: '{"Protocol":"SAMSUNG","Bits":32,"Data":"0xE0E09966"}'
- name: "Send IR Signal2"
unique_id: send_ir_signal_2
command_topic: "cmnd/tasmota_B7EFC5/IRSend"
payload_press: '{"Protocol":"SAMSUNG","Bits":32,"Data":"0x707030CF"}'
- name: "Send IR Signal3"
unique_id: send_ir_signal_3
command_topic: "cmnd/mini_8266/IRSend"
payload_press: '{"Protocol":"NEC","Bits":32,"Data":"0xFDB04F"}'
# 射频信号按钮,串口通信的
- name: "Send RF Signal 1"
unique_id: send_rf_signal_1
command_topic: "cmnd/tasmota_B7EFC5/SerialSend5"
payload_press: "FD03AD67285EDF"
- name: "Send RF Signal 2"
unique_id: send_rf_signal_2
command_topic: "cmnd/tasmota_B7EFC5/SerialSend5"
payload_press: "FD03AD67245EDF"
- name: "Send RF Signal 3"
unique_id: send_rf_signal_3
command_topic: "cmnd/tasmota_B7EFC5/SerialSend5"
payload_press: "FD03AD67225EDF"
这段内容仅供参考,这样会在HA的主页中显示接按钮,点击相应的按钮就会发射对应的信号
另外还有两个再tasmota控制台使用的命令
SetOption60 1启用后,设备发送的 MQTT 消息(如 stat/%topic%/RESULT 或 tele/%topic%/STATE)均会附加保留标记。若需禁用,执行 SetOption60 0 即可。
SetOption59 1该命令扩展了 Tasmota 设备的状态反馈机制,适用于对 MQTT 消息可靠性要求较高的场景。