我正在使用 esp32 开发一个项目,即测量传感器数据,将此数据保存到 sd 并将数据发布到网络(到谷歌云 IOT 核心)。数据的测量和保存已经非常好,但是我在发送到网络方面遇到了一些问题。
为了测量数据(最大频率应为 500 Hz),我使用了一个计时器,它定期测量数据并将测量数据发送到队列。一个单独的任务从队列中读取数据,然后将这些数据格式化保存到 sd 卡。到目前为止,一切都很好。
我正在使用 esp-idf 进行开发,因此实现了 Web 框架 esp-google-iot。连接到云的效果非常好,我已经能够接收命令(在第一种方法中,只是停止或开始测量的命令)。现在我尝试创建另一个队列,其中应该发布的数据被保存。然后我创建了一个延迟发布任务,它应该每秒将存储在队列中的所有数据发送到云端。不幸的是,我总是收到“内存不足”错误。
由于我认为这可能是由于数据量大而出现的,所以我删除了第二个队列,并且每秒发送一次“虚拟”消息。这非常有效。
有谁知道,如何处理这些数据量或有类似的问题?
可能我也采用了完全错误的方法......每次发布可能只发送一个以上的值,这样我就不必每秒发送 500 个请求?
任何帮助表示赞赏