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

时间:2016-10-22 14:04:21

标签: python flask client-server mqtt network-protocols

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

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

  • 客户端设备(现在是覆盆子pi;将来考虑多个设备),它们都会读取传感器数据并控制一些执行器。

  • 服务器(我现在的电脑)想要详细说明这些数据并向远程执行器发送命令(显然取决于它的详细说明)。

因此,基本上,我需要的是 ,因为' n'客户端连接到特定的服务器地址,并提供传感器数据每个' x'分钟。然后,我希望服务器将特定命令发送给特定客户端'当感觉需要时(客户端需要监听命令或定期从服务器拉出命令)执行器。

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

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

  • MQTT,但在我看来,我必须把经纪人放在我称之为" server"然后使用服务器作为连接到localhost代理进行订阅的客户端...这似乎是错误的。我的意思是,经纪人现在是问题,我该如何解决?
  • 像Flask这样的web框架,有一些REST get / post请求将数据发送到服务器......似乎有点沉重的解决方案,服务器没有办法将命令推送到客户端......客户必须定期检查。

1 个答案:

答案 0 :(得分:1)

MQTT

MQTT是IOT(而不仅仅是)的轻量级订阅者/发布者协议,在该领域大量开发。

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

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

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

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