我正在与esp32开发一个项目,即测量传感器数据,将这些数据保存到sd,并将数据发布到web (到Google cloud IOT核心)。数据的测量和保存已经很好地工作了,但我面临着一些关于发送到web的问题。
为了测量数据(最大频率应该是500 Hz),我使用了一个计时器,它定期测量数据并将测量的数据发送到队列。一个单独的任务从队列中读取数据,然后将这些格式化的数据保存到SD卡中。到目前一切尚好。
我使用esp-idf进行开发,因此实现了web框架esp-google-iot。连接到云工作得很好,我已经能够接收命令了(在第一种方法中,只是一个停止或开始测量的命令)。现在,我尝试创建另一个队列,其中应该发布的数据是hold。然后,我创建了一个延迟的发布任务,它应该每秒将存储在队列中的所有数据发送到云。不幸的是,我总是收到错误"heap out out memory“。
由于我认为由于大数据量,这可能会出现,我删除了第二个队列,并只发送消息“虚拟”每秒。这样做效果很好。
有没有人知道如何处理这些数据量或遇到类似的问题?
也许我做的也是完全错误的方法……可能每次发布发送一个以上的值,这样我就不需要每秒发送500个请求了?
任何帮助我们都将不胜感激
发布于 2020-07-24 01:13:25
根据您在JSON上所做的工作,您可以在一个IoT字符串中发送整个队列,并使用云函数解析整个JSON并将数据移动到BigQuery。我认为这可能会解决你所遇到的问题,尽管我建议只要你的设备读取了数据就发布它。
此外,您可能希望将您的发布间隔超过每秒一次,因为正如StrawHat指出的那样,发送每秒500个请求不是一个好主意,并且可能会导致IoT核心拒绝连接。
https://stackoverflow.com/questions/62314917
复制相似问题