『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: evantalk

[智能音箱] 低成本DIY离线语音助手完结【已上传展示视频】

  [复制链接]

18

主题

422

帖子

1901

积分

金牌会员

Rank: 6Rank: 6

积分
1901
金钱
1479
HASS币
0
发表于 2023-12-11 16:38:34 | 显示全部楼层
bhc1365 发表于 2023-12-11 08:43
已经换过几gpio脚试过了,还是这样。

好吧 你试试我的配置
esphome:
  includes:
    - my_custom_component_8266.h

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

captive_portal:

uart:
  id: uart_bus
  tx_pin: GPIO5
  rx_pin: GPIO4
  baud_rate: 9600

text_sensor:
  - platform: custom
    lambda: |-
      auto my_custom = new MyCustomComponent(id(uart_bus));
      App.register_component(my_custom);
      return {my_custom->uart_text_sensors};
    text_sensors:
      name: "UartSensor"

h文件
#include "esphome.h"
using namespace esphome;

class MyCustomComponent : public Component, public uart::UARTDevice {
 protected:
  unsigned char telegram[100];
  char data[100];

  bool read_message() {
    int i = 0;
    if (available()) {
      while (available()) {
        telegram[i] = read();
        data[i] = (char) telegram[i];
        ESP_LOGD("DmsrCustom", "0x%x", telegram[i]);
        i++;
      }
      data[i] = 0;
      uart_text_sensors->publish_state(data);
      //延迟3秒
//      delay(3000);
      //发布固定状态为off 配合需要重复触发的情况
//      uart_text_sensors->publish_state("off");
    }
    return false;
  }
 public:
  MyCustomComponent(UARTComponent *parent) : UARTDevice(parent) {}
  TextSensor *uart_text_sensors = new TextSensor();

  void setup() override {
    // nothing to do here
  }
  void loop() override {
    // Use Arduino API to read data, for example
    if (available()) {
      ESP_LOGD("DmsrCustom", "loop start");
      read_message();
    }
  }
};



回复

使用道具 举报

22

主题

232

帖子

2120

积分

金牌会员

Rank: 6Rank: 6

积分
2120
金钱
1888
HASS币
0
发表于 2023-12-11 19:11:23 | 显示全部楼层
kjjuhfv 发表于 2023-12-11 16:38
好吧 你试试我的配置h文件

使用你的文件有语音信号输入时就断网了。也有空信号输出。感谢
回复

使用道具 举报

22

主题

232

帖子

2120

积分

金牌会员

Rank: 6Rank: 6

积分
2120
金钱
1888
HASS币
0
发表于 2023-12-12 15:54:44 | 显示全部楼层
没办法,只能用ardunio的了,就是多用了一个8266模块,本来想语音和实体使用一个esp8266的,看来还是不行。
回复

使用道具 举报

18

主题

422

帖子

1901

积分

金牌会员

Rank: 6Rank: 6

积分
1901
金钱
1479
HASS币
0
发表于 2023-12-12 17:42:06 | 显示全部楼层
本帖最后由 kjjuhfv 于 2023-12-12 17:44 编辑
bhc1365 发表于 2023-12-11 19:11
使用你的文件有语音信号输入时就断网了。也有空信号输出。感谢

你的语音模块是什么?供电共地了吗?
或者你可以使用另外的esp8266作为发射端 看看能不能正常接收
这是代码
刷进去后 tx接另一个8266的rx

uart:
  id: uart_bus
  tx_pin: GPIO5
  rx_pin: GPIO4
  baud_rate: 9600

button:
  - platform: template
    name: "aaaaa"
    on_press:
    - uart.write: 'a wo cao ni ma'

  - platform: template
    name: "bbbbb"
    on_press:
      - uart.write: "a wo yao hui jia"

  - platform: template
    name: "ccccc"
    on_press:
      - uart.write: [0x75, 0x70]

  - platform: template
    name: "ddddd"
    on_press:
      - uart.write: [0x64, 0x6F, 0x77, 0x6E]

  - platform: template
    name: "Test Button 5"
    on_press:
      - uart.write: "a zhe shi jie hao ke pa wo yao hui jia"

回复

使用道具 举报

22

主题

232

帖子

2120

积分

金牌会员

Rank: 6Rank: 6

积分
2120
金钱
1888
HASS币
0
发表于 2023-12-12 22:28:13 | 显示全部楼层
kjjuhfv 发表于 2023-12-12 17:42
你的语音模块是什么?供电共地了吗?
或者你可以使用另外的esp8266作为发射端 看看能不能正常接收
这是代码

用的是SU-03T语音模块,可以接收到语音数据,就是与hass里始终显示连接与离线。还是esphome的自定义UART的问题。
回复

使用道具 举报

0

主题

2

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
46
HASS币
0
发表于 2024-2-21 11:24:53 | 显示全部楼层
本帖最后由 f8fengh 于 2024-2-21 11:40 编辑

亲,感谢教程,很有帮助!!
这里遇到问题,为什么HA里text_sensor实体始终显示未知?
调试输出正常,能收到自定义的信息:
[11:21:48][D][uart_debug:158]: <<< "\xAAU\x03U\xAA"
[11:21:51][D][uart_debug:158]: <<< "\xAAU\x02U\xAA"
我的配置yaml文件如下:
    
uart:
  id: uart_bus
  tx_pin: D0
  rx_pin: D1
  baud_rate: 9600
  debug:
    direction: BOTH
    dummy_receiver: false
    after:
      delimiter: "\n"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);

text_sensor:
- platform: custom
  lambda: |-
    auto my_custom_sensor = new UartReadLineSensor(id(uart_bus));
    App.register_component(my_custom_sensor);
    return {my_custom_sensor};
  text_sensors:
    name: "命令"

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 11:40 , Processed in 0.668527 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表