我是这个论坛和这个领域的新手。我期待着良好的批评和教程/链接/指导建议,以尽可能少的努力构建一个好的系统,同时实现我想要的所有东西。
情况
主要枢纽是树莓派(最新的 v3)。
- 托管 MQTT-Server 以保存消息传输
- 托管基于 Python(套接字)的服务器,用于与 arduinos 通信(因此:传感器)
- 主机数据存储
- 使用 Kivy 托管 GUI(漂亮整洁)
Arduinos(纳米)直接控制传感器/执行器/等:
- 通过 I²C 连接
- 握手协议交换可能的功能
- 从 Python 服务器接收情况依赖于不同的脚本
raspicam (v2):
- 提供可以预览或存储的图像流。
项目状态:我从一个更简单的方法开始,没有使用任何服务器。因此,目前只有 1 个主程序 (Kivy-Gui) 具有所有相关代码和接口。我正在使用 Pi-camera 模块,Arduinos 通过 I²C 接口连接到 pi。它运作良好。:)
那么,如果一切基本上都已经在一台机器上运行了,为什么还要这么麻烦呢?
简单地说:我想重新调整整个设置。将有:
- 多个树莓派,每个树莓派都有自己的一组传感器
- 用于 GUI/人机交互的外部(智能手机)
- 外部(网络)存储
- (可选)第 3 方设备,例如用于进一步感应或 IP 摄像头或...
因此我需要补充:
- Raspberry #1 上的mQTT 服务器
- Raspberry #2 上的wifi 集线器
- 在每个 Raspberry 上托管和执行 Python-(套接字)服务器的脚本
- 网络流服务器到每个 Raspberry 上的ip-stream Raspicam 视频等到外部 GUI
- 网络驱动器来存储来自不同系统的数据
最后,我希望仍然有可能将屏幕连接到其中一个树莓上并直接在其上运行 GUI。因此,我将通过外包执行代码来修改我现有的 GUI。有可能直接在选择的 raspi 上运行 GUI 固有地导致新设置的各种问题。仅提及 1:将 Raspicam 数据流式传输到 ip 并使用流式设备读取它可能很慢或不可能。在这里(例如)我正在考虑实施一种解决方法,如果主题订阅者和内容发布者是同一设备,则使用由 MQTT 决定的不同代码。
我的问题:
您如何看待此设置在不同任务方面的速度和效率?你认为我的推理和方法有什么重大错误吗?由于 Arduinos 具有正确使用的 init 例程,因此每个树莓派运行 1 个实例并将所有参数等作为活动对象是很好的。您是否看到比编写自己的 Python 服务器更高效、更稳定、更快速的方法?例如,我阅读了有关为此使用 node.js 的信息,但这可能会导致 arduino 握手问题...