首页 > 解决方案 > 从 RaspberryPi 传感器向 Django 后端发送数据(频率、批量更新、稳健性)

问题描述

我目前正在研究一个比我习惯的稍微复杂的 Raspberry Pi/Django 项目。(我要么做本地树莓派项目,要么做简单的 Django 网站;从来没有把两者结合起来!)

这个想法是两个有两个运行本地 Python 脚本的 Raspberry Pi 收集信息,每个都将使用图像处理从一个 HDMI 馈送(我已经弄清楚所有部分 - 我认为)获取输入。现在我希望这两个 Raspberry Pi(不相互通信)连接到一个后端服务器,该服务器将组合、存储(和处理)我的两个 Pi 收集的信息

我希望每个 Pi 每秒处理一帧,将其与前一秒的帧进行比较(只有他正在寻找的几个不同的东西)隔离任何新事件,并将其发送到服务器。因此,我预计每秒不超过十几个二进制时间戳数据点。

现在在这里做这件事的聪明方法是什么?

基本上,我在询问有关制作基于物联网的项目的建议,其中传感器收集大量信息并希望将其发送到后端服务器进行处理,以及应该如何设计归档过程。

PS:我希望我的 Pi Zero 上的图像处理部分(1 fps)足够快(因为它非常简单);该级别的积压应该不是问题。

PPS:我正在使用 django 后端(即使它看起来有点矫枉过正)a/ 因为我已经非常了解框架 b/ 因为我希望从收集的组合数据点构建实时性能指标,使用django,并在网页上(几乎)实时显示它们。

非常感谢 !

标签: pythondjangoraspberry-piiotbulk-load

解决方案


这部分取决于您需要它的弹性。如果您真的无法承受丢失单个更新的代价,我会考虑使用消息队列,例如 RabbitMQ - 客户端会将内容直接添加到队列中,服务器会依次将它们弹出,无需参与HTTP 请求。

否则,仅以某种序列化格式(即 JSON)发布每个帧的数据会简单得多,Django 会简单地反序列化并遍历列表,将每个条目保存到数据库中。对于您描述的速度,这应该足够快-我希望保存十几个数据库条目需要不到半秒的时间-但这仍然留下了如果由于某种原因挂断了该怎么办的问题。在服务器上设置超短超时将有所帮助,在您确认已保存数据之前保留要发布的数据 - 并在客户端中创建唯一 ID 以确保请求是幂等的。


推荐阅读