将大数据量发送到谷歌云物联网核心



我正在使用esp32开发一个项目,即测量传感器数据,将这些数据保存到SD,并将数据发布到网络(到谷歌云物联网核心(。 数据的测量和保存已经运行良好,但是我面临着有关发送到网络的一些问题。

为了测量数据(最大频率应为500 Hz(,我正在使用一个计时器,该计时器定期测量数据并将测量数据发送到队列。一个单独的任务从队列中读取数据,然后将格式化的此数据保存到 SD 卡。目前为止,一切都好。

我正在使用esp-idf进行开发,因此实现了Web框架esp-google-iot。连接到云效果很好,我已经能够接收命令(在第一种方法中只是一个停止或开始测量的命令(。现在我尝试创建另一个队列,其中应发布的数据被保留。然后,我创建了一个延迟发布任务,该任务应每秒将所有存储在队列中的数据发送到云。不幸的是,我总是收到错误"堆内存不足"。

由于我认为这可能是由于数据量大而出现的,因此我删除了第二个队列,并且每秒发送消息"虚拟"。这非常有效。

有谁知道如何处理这些数据量或有类似问题?

可能我也在做完全错误的方法......可能每次发布发送多个值,这样我就不必每秒发送 500 个请求?

任何帮助不胜感激

根据你在 IoT Core 上执行的操作,你可以在一个 JSON 字符串中发送整个队列,并使用云函数来解析 JSON 并将数据移动到 BigQuery。我认为这可能会解决您遇到的问题,尽管我建议在设备读取数据时发布数据。

此外,您可能希望将发布间隔到每秒一次,因为正如StrawHat指出的那样,发送500个请求/秒不是一个好主意,并且可能会导致IoT Core拒绝连接。

相关内容

  • 没有找到相关文章

最新更新