距离成功只差一个while


我不善养花,总死,怀疑跟不会浇水有关系,于是想用湿度传感器采集数据来进行精准控制, 要实现的功能也很简单,采集到数据后传送到服务器上,选择了 ESP8266 模块,按 PostHttpClient 示例简单改了改,用Python 写了个简单的 restapi 服务器,不论是 ipv4 还是 ipv6 在局域网内测试都没有问题。

1. 遇到问题

由于开发电脑不会长时间开着,想着将数据传到家里的 NAS 上,由于在另一个城市,使用 了 ipv6 和 DDNS 技术,系统环境都部署好了,在测试过程中遇到 "connection failed" 的问题,我打开调试查看 IP 获取正确,域名解析正确,换成GET方法获取数据正确, 一旦换成 POST 方法就出问题,TCP 连接失败,花了2天时间多次检查代码,修改 http timeout , 测试了100多次,只成功了2次,一度怀疑是 core 的问题。

2. 柳暗花明

由于原代码中使用了深度睡眠模式,为了排除问题,将这块功能先去掉,于是 loop 中实现 的功能就是不停地向服务器发送数据,他居然第一次没有提交成功,但后面几次都提交成功 了。于是我在代码中加了 While 循环,尝试10次来发送数据,一旦成功就退出循环,成功 解决遇到的问题。

3. 心得体会

3.1. 示例与产品之间少一个 While

这又是一个示例和产品之间差距,回忆上次做指纹锁时也遇到一个类似问题,即找不到指纹 模块的问题,最后也是加了一个 While 来等待指纹模块准备好。

3.2. 距离成功可能也少一个 While

测试的过程中始终找不到原因,我一度差点崩溃,好在最后没有放弃,多尝试了下才发现这 个问题的根源并成功解决他。这种问题可能不会发生在每一个人身上,但克服并解决他的方 法都需要 While , 只有不断地尝试才可能找到最后的出路。但是就像我在代码中采取的方 法,并没有使用无限循环,尝试10次不行就算了,先让模块睡一会,下次网络环境什么的变 化了,说不定就可以了。

此记。


本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议 进行许可。

posted on 2024-06-06 20:15  YourTech-WuPeng  阅读(1)  评论(0编辑  收藏  举报

导航