使用 python 的传感器数据和命令传输的客户端-服务器协议

client-server protocol for sensor data and command transmission using python

不幸的是,我对这类主题的经验很少,所以我停滞了一段时间(在四处搜索和阅读可能的解决方案时)。

我的问题很简单,我有一个这样工作的系统:

因此,基本上,我需要的是 用于 'n' 客户端连接到特定服务器地址并提供传感器每 'x' 分钟发送一次数据。然后,我希望服务器在需要时向特定客户端的执行器发送特定命令(客户端需要侦听命令或定期从服务器拉取命令)。

我对可用的各种协议和模块以及从这里开始的最佳方式感到有点困惑。特别是我正在寻找一些非常轻量级的东西,它可以很好地扩展(如果很多客户端将连接)并且不需要低级实现(我试图避免自己处理套接字并定义我自己的协议)。

额外信息: 只是为了给你一些背景,我主要考虑了:

MQTT

MQTT 是一种轻量级 subscriber/publisher 物联网协议(不仅如此),在该领域得到了大力发展。

如果您的客户端设备是 Raspberry Pi 的(或 运行 Linux OS 的任何其他设备),那么 MQTT 可能是可行的方法。您的发行版很可能提供 MQTT 代理(称为 mosquitto),安装后将 运行 开箱即用。您可以轻松地测试它安装 mosquitto-clients,它将为您提供 mosquitto_submosquitto_pub 命令行 api.

这将使您轻松进行双向通信。 MQTT 为各种平台(包括裸机)上的大多数语言(包括 Python、C、C++、Perl、Java,它甚至支持 Web 套接字)提供各种客户端库,因此它可以与任何系统集成不错

如果您未来的客户端设备是简单的 uC,那么您应该查看是否支持 MQTT(最有可能的是,有一大堆教程)。

您可以轻松管理 MQTT 代理,根据需要使用网桥将它们放入云中,或者通过 IP 主机名单独管理。它非常容易学习,使用起来非常有趣。