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

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

[经验分享] 我好像找到了ESP8266转发TTL串口发生丢消息问题的根本原因

[复制链接]

2

主题

223

帖子

3302

积分

论坛元老

Rank: 8Rank: 8

积分
3302
金钱
3079
HASS币
0
发表于 2020-6-26 09:33:01 | 显示全部楼层
XCray 发表于 2020-6-25 06:35
这几个月推送服务经常超时,估计是伟大的墙的作用,没啥好办法。

如果是群晖的话,也许可以尝试群晖的ch ...

你这句话提醒我了,我加个白名单试试,看看还会不会推送丢失。
回复

使用道具 举报

11

主题

266

帖子

2574

积分

金牌会员

Rank: 6Rank: 6

积分
2574
金钱
2298
HASS币
50
发表于 2020-6-26 10:07:45 | 显示全部楼层
XCray 发表于 2020-6-24 19:41
算是验证完了吧,不同条件反复对比,丢消息的原因应该就是散热造成的——散热好就不会丢消息、散热不好就 ...

很正常 全本地的末端 网关之间丢数据也是有可能发生的
回复

使用道具 举报

16

主题

292

帖子

2145

积分

金牌会员

Rank: 6Rank: 6

积分
2145
金钱
1853
HASS币
20
发表于 2020-6-29 14:43:18 | 显示全部楼层
我用arduino官方的例子都丢
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2020-11-7 19:50:19 | 显示全部楼层
ESP-12S 用热缩管包着放到小白里面

160Mhz

代码没写 delay~

运行24小时,暂时没发现楼主说丢消息问题~
Nero
回复

使用道具 举报

19

主题

269

帖子

1888

积分

金牌会员

Rank: 6Rank: 6

积分
1888
金钱
1619
HASS币
50
发表于 2020-11-16 22:25:00 | 显示全部楼层
楼主伟大啊。我的esp01,在外裸露时一切正常,只要放入86盒中,立马作妖。害得我都放弃放入86盒的想法了。买几个散热片试试效果
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-11-19 06:55:49 | 显示全部楼层
姚远 发表于 2020-11-16 22:25
楼主伟大啊。我的esp01,在外裸露时一切正常,只要放入86盒中,立马作妖。害得我都放弃放入86盒的想法了。 ...

伟大这个词也太夸张了!
不必客气,能解决问题就好
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-11-19 06:57:11 | 显示全部楼层
neroxps 发表于 2020-11-7 19:50
ESP-12S 用热缩管包着放到小白里面

160Mhz

esp-12s芯片上有金属屏蔽罩吧?那玩意本身也有很好的散热效果,应该是这个原因。
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2020-11-19 09:32:37 | 显示全部楼层
本帖最后由 neroxps 于 2020-11-19 09:37 编辑
XCray 发表于 2020-11-19 06:57
esp-12s芯片上有金属屏蔽罩吧?那玩意本身也有很好的散热效果,应该是这个原因。 ...

我感觉会不会是代码有问题.
试了一个星期,发现丢消息了

看了下代码是用这个来获取 Serial.readStringUntil('\n')


问了下高人,高人说这个不靠谱,让我参考下用 ESPHOME 的做法. https://esphome.io/components/text_sensor/uart.html

用 read() 每字节写入到缓冲区内,然后判断是否换行,遇到换行开始判断数据是否符合要求,不符合就把缓冲区的POS置零,重新read()

数据解析必须在一个时间单位周期内处理完毕,不可到下一个周期,否则数据会出现乱码.

最近参考了下 tuya 的esphome 传感器做法在重写.
才学的C++ 不知道能不能搞出来~

Nero
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-11-23 06:39:25 | 显示全部楼层
neroxps 发表于 2020-11-19 09:32
我感觉会不会是代码有问题.
试了一个星期,发现丢消息了

这个太深了,超出了我的理解能力,哪天有空试试看
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2020-11-23 08:58:35 | 显示全部楼层
XCray 发表于 2020-11-23 06:39
这个太深了,超出了我的理解能力,哪天有空试试看

我也才学C++~发现用 esphome 写太麻烦了.

要先添加了 UART 组件和监听程序的组件,然后在日志刷到传感器内容再根据日志手动编写传感器,esphome框架要求了这样做,不然就和你一样写自定义组件,但是一大堆 return```还不好处理多个锁或者多个传感器~

弃坑了,换罗总的框架试试 https://github.com/qlwz/esp_framework
Nero
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 16:37 , Processed in 2.220338 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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