node.js - 硬件和 Web 组件之间的实时通信协议(protocol)是什么?

标签 node.js real-time redis microcontroller data-collection

我不太确定如何在标题中表达我的问题,如果造成混淆,我们深表歉意。

我想构建一个系统,作为我家的一种信息仪表板。它将由许多硬件和软件组件组成,最终形成一个简单、干净的网站,实时显示许多模拟传感器,例如温度、风速和风向等。

我很清楚我要为硬件做什么,以及如何显示信息;我的问题与硬件和网络服务器之间的通信有关。

我希望硬件能够以相当快的速度发送消息,所以我认为 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/

相关文章:

node.js - 如何让 Resilient 自动重新提交速率限制请求

node.js - MeteorJS 高负载应用程序

java - Google App Engine 为从 Java 应用程序到您的客户端的实时数据传输提供了什么?

javascript - 我怎样才能制作一个像窗口滚动控制系统一样的 friend 圈?

ruby - 如何在 websocket eventmachine 中断开 redis 客户端

redis - redis中键的短语匹配

redis - Celery 在没有代理和后端运行的情况下工作

javascript - 在 Mocha 单元测试 Node.js 期间找不到环境变量

html - 使用 Angularjs 和 Nodejs 将 HTML 表单另存为 JSON 文件

github - github "web push notifications"是如何工作的?