将数据从远程传感器传递到服务器

Passing data from remote sensor to server

我目前从事的项目涉及许多基于 linux 的小型主机,这些主机从传感器读取数据并通过 Open VPN link 将数据发送到服务器。服务器是一个 Ubuntu 虚拟机,可以随着网络的增长进行扩展以满足需求。

最初我们将在校园内分布 20 个传感器,但最终解决方案可能需要扩展到数千个。

每个传感器每 15 分钟向服务器传递一次数据。每笔交易的数据大小约为 100 字节。

数据将被放置在服务器上的循环数据库中,并最终通过 apache 网络界面提供给审查。

我想知道目前使用开源技术实现这种从传感器到服务器的交易的最佳解决方案是什么。

我们正在考虑基于 ssh、scp、netcat 和 web 的解决方案,但也会考虑替代方案。

这种用法的常见实现是消息传递协议;传感器、IoT 等最流行的一种是 MQTT. There are numerous open source libraries in pretty much every language you want, and several open source brokers, e.g. MosQuitto

您提到的技术看起来像是同步的 - "sensor opens SSH shell on server and executes BASH command"、"sensor executes HTTP request on server and PUTS data"。 这相当于通过 phone 联系某人 - 如果他们不在,您必须等待 phone 响铃,并且您的消息可能会丢失(为此我们忽略语音邮件例如)。

这在大多数情况下都是有问题的 - 传感器通常使用不可靠的协议连接,并且 CPU 和存储容量有限。基于消息传递的异步协议要求传感器发送带有数据的消息,并继续其生命;消息传递解决方案处理错误处理、丢失连接等。 这相当于发送电子邮件 - 即使发送时您不在网络上,或者收件人不在,邮件最终也会到达那里。

MQTT 是一种真正轻量级且灵活的消息传递解决方案,专为硬件有限的客户端设计。