我不太确定如何在标题中表达我的问题,如果造成混淆,我们深表歉意。
我想构建一个系统,作为我家的一种信息仪表板。它将由许多硬件和软件组件组成,最终形成一个简单、干净的网站,实时显示许多模拟传感器,例如温度、风速和风向等。
我很清楚我要为硬件做什么,以及如何显示信息;我的问题与硬件和网络服务器之间的通信有关。
我希望硬件能够以相当快的速度发送消息,所以我认为 HTTP POST 是不够的。我也不太关心是否收到 100% 的消息,但收到尽可能多的消息绝对是一个加号。数据将来自硬件,填充某种数据库(可能是 Redis)。
到目前为止,我已经研究了几件事,但我不确定我的方向是否正确。我研究过面向消息的中间件,例如 RabbitMQ但我不相信我需要开销。我也调查过 Redis Pub/Sub这似乎是一个更合适的解决方案,因为我希望网络应用程序能够绘制出最后 5 分钟的数据,但即便如此我也不确定。我可以只将 UDP 数据包发送到定制的监听器吗?
我非常确定硬件将分为两个阶段(uC 为小型嵌入式 linux 机器供电),因此您甚至可以将其比作桌面软件尽快向网络服务器发送消息。
我正在冒险进入一个我完全不了解的领域,因此非常感谢任何指导。
最佳答案
要在数据采集器和采集器之间进行通信,您可以考虑使用行业标准 Modbus TCP 协议(protocol)。 (前世我写过可编程 Controller 的网络代码。)
我确信大多数微 Controller 都有可用的库,尽管它们可能不是开源的,但我怀疑是否存在 JS 版本的 Modbus,因此您需要自己编写服务器端库。我记得 Modbus 并不是特别复杂,特别是如果你不使用它的一些更深奥的功能。 当然,写这篇文章让我开始思考我将如何编写这样的东西,你瞧,它是 already been done for nodejs ! (我喜欢 nodejs 社区的众多原因之一!)
这就是简单的答案......现在,我的黑客帽子已经牢牢地固定......
您提到您的硬件将支持一台或多台“小型嵌入式 Linux 机器”。
您是否考虑过在每个数据收集器上运行 nodejs?如果 nodejs 的可执行文件的大小是问题所在,我确信它的大部分开箱即用功能可以删除或移入模块。
我意识到我推荐的不是一件小事——将 nodejs/V8 的大小和复杂性的应用程序移植到一个新平台肯定是具有挑战性的——但我强烈怀疑 nodejs 的事件驱动设计将是一个非常适合数据采集、离散制造、过程控制和其他制造应用。
关于node.js - 硬件和 Web 组件之间的实时通信协议(protocol)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6195759/