本帖最后由 niu123 于 2025-11-18 11:01 编辑
前期折腾过小爱同学、小度的语音控制HA设备,因小度、小爱这种都需要通过互联网且响应延迟严重使用了几次后还是最终放弃了;
进入正题
# 1、自制离线语音思路
## 硬件:esp8266+ asr-pro +喇叭
## 思路:使用asr的离线语音唤醒能力,唤醒后接受设定命令词,接收到命令词后使用115200波特率通过串口向ESP8266发送设定数据,esp8266接收到数据后将其通过mqtt协议向HA发送,HA编写自动化指令执行对应命令;
## 优势:有手就行,杜邦线连接即可无需焊接;离线唤醒多命令连续执行;秒级响应体验无敌;无惧断网;无惧第三方服务异常;成本低;
51天问图形化编程代码:
http://www.twen51.com/C51/asr_pro_e.php?id=257734
esp8266代码:
https://gitee.com/beifen_home/esp8266.git
ESP8266温湿度传感器项目
基于ESP8266和DHT22的温湿度监测设备,支持MQTT协议和Home Assistant自动发现。 功能特性- 实时温湿度监测
- MQTT通信
- Home Assistant自动发现
- OTA无线更新
- Web配置界面
- 串口调试支持
硬件需求- ESP8266开发板(NodeMCU、Wemos D1 mini等)
- DHT22温湿度传感器
- 连接线若干
软件需求- PlatformIO Core 或 PlatformIO IDE
快速开始1. 安装PlatformIO# macOS/Linuxpip install platformio# 或者使用Homebrewbrew install platformio
2. 编译项目# 在项目根目录执行pio run
3. 上传固件# 上传固件到ESP8266pio run --target upload
4. 监控串口输出# 查看串口输出pio device monitor
配置说明WiFi配置在代码中修改以下参数: #define WIFI_SSID "your_wifi_ssid"#define WIFI_PASSWORD "your_wifi_password"
MQTT配置#define MQTT_SERVER "homeassistant.local"#define MQTT_PORT 1883#define MQTT_USER "mqtt_user"#define MQTT_PASSWORD "mqtt_password"
设备位置配置选择设备位置(取消注释其中一个): #define LOCATION_BEDROOM // 主卧设备// #define LOCATION_LIVINGROOM // 客厅设备
OTA配置#define OTA_USER "admin"#define OTA_PASSWORD "password"
使用说明首次使用- 上传固件后,设备会自动连接WiFi和MQTT服务器
- 在Home Assistant中会自动发现温湿度传感器
- 访问设备IP地址可进入OTA升级页面
OTA更新- 确保设备已连接到WiFi
- 访问 http://设备IP地址/update
- 使用配置的用户名和密码登录
- 上传新的固件文件
串口命令连接串口后,支持以下命令: - 版本 或 version - 显示固件版本
- 重启 或 reboot - 重启设备
- topic@message - 手动发送MQTT消息
LED灯状态说明设备上的LED灯通过不同的闪烁模式指示当前设备状态: - 设备启动 (STATE_STARTUP) - LED灯快速闪烁(亮100ms,灭100ms)
- WiFi连接中 (STATE_WIFI_CONNECTING) - LED灯中等速度闪烁(亮200ms,灭200ms)
- MQTT连接中 (STATE_MQTT_CONNECTING) - LED灯慢速闪烁(亮500ms,灭500ms)
- 正常运行 (STATE_OPERATIONAL) - LED灯常亮
- 错误状态 (STATE_ERROR) - LED灯快速闪烁一次后长时间熄灭(亮100ms,灭1000ms)
项目结构├── src/│ └── main.cpp # 主程序文件├── platformio.ini # PlatformIO配置文件├── .gitignore # Git忽略文件└── README.md # 项目说明文档
故障排除编译错误- 确保所有依赖库已正确安装
- 检查PlatformIO版本是否为最新
上传失败- 确认ESP8266已正确连接电脑
- 检查驱动程序是否安装
- 尝试更换USB线或端口
连接问题- 检查WiFi密码是否正确
- 确认MQTT服务器地址和端口
- 查看串口输出获取详细错误信息
|