哪些物联网服务可用于在云中存储/发送/发布通用数据?

物联网 网页服务 发布订阅者
2021-06-25 23:05:23

哪些物联网服务可用于在云中存储/发送/发布(和相反的操作)通用少量数据?

例如,我正在寻找一种服务,其中设备可以在云中存储值。其他一些实体(另一个设备、带有一些 JS 代码的网站、Web 服务器、移动应用程序)可以检索此值。

它可以是某种异步通信,例如用于存储和检索小到键值对、<255 字节、整数、字符串、最多一个小的 JSON 对象的东西。该服务可以提供一个 REST API(因此它可以被多种语言访问)以及一些用于验证的令牌以及要存储的密钥和值。

用例的详细示例是:

家里有一个温度传感器,我希望它将值存储在云中(家外某处)。这样,无论我的家庭连接是否断开,我都可以访问它。此外,这将避免保留和维护专用服务器 + portForwarding + DynamicDNS。

到目前为止,我还没有找到类似的东西,但偶尔,我找到了一些我想描述的例子:

还有哪些其他类似(免费/开放)的替代方案?

4个回答

看看这些服务:

这两种服务都将接受来自设备的简单键/值数据。我相信他们都有准备好导入粒子设备的库,因为你提到了这一点。

许多云提供商,如亚马逊、微软、谷歌、IBM 等,试图通过提供更简单的方法将传感器数据发送/存储/分析到他们的云中来吸引物联网空间。甚至他们将收购硬件供应商以扩大其在物联网领域的范围。

除了 AWS,我没有使用任何服务,因此我可以解释我使用 AWS 的经验以及我们如何将其集成到生产用途中。


设想:

我们有数百个传感器,每个传感器每分钟向本地网关发送 184-428 字节的数据,本地网关聚合数据并在本地存储数据,然后将相同的数据发送到 AWS 云。我们还有专门的传感器,可以将数据直接发送到云端。

云服务

我们正在使用AWS IoT、AWS S3、AWS DynamoDB、AWS Lambda、AWS API Gateway、AWS SNS、AWS Cloudwatch、AWS RedShift 来构建整个解决方案。基本上,这些并非特定于 IoT(AWS IoT 除外),因为我们可以将它们用于移动、Web。

网关使用 AWS IoT SDK 通过 MQTT、HTTP 或 WebSockets 协议(我们使用节点 JS SDK 通过 MQTT 连接)与 AWS IoT 连接、验证和交换消息。我们是设备网关本地的 MQTT 代理,并从那里将其桥接到 AWS IoT 端点,我们正在对收到的数据(使用规则引擎、AWS Lambda 函数)运行即时检查,并将它们存储到 DynamoDB 中,归档到 S3、Glacier(存储完成无需编写单行 done 仅使用 AWS 触发器来存储数据)。

它仅用于实验或测试用途,但将来可能会发生变化。

所以我的建议是使用MQTT,更准确地说是它的Mosquitto实现。他们托管一个测试代理,您可以将订阅者和发布者客户端连接到该代理这是有关 Windows 7 上设置过程指南

请注意以下事项:

您可以自由地将它用于任何应用程序,但请不要滥用或依赖它来做任何重要的事情。您还应该构建您的客户端以应对代理重新启动。

但基本上你可以向这个经纪人发布温度数据。

在订阅者客户端,我最近使用了这个Android 应用程序这是一个非常基本的应用程序,仍在开发中,但对于测试目的来说,它非常棒。接收到的消息显示在仪表板上,没有什么特别的只是裸值。

我已经开始使用这两个作为我的 MQTT 学习过程的第一阶段,并且发现这两个都非常适合初学者。

这有两个组成部分:

  1. 您希望如何存储数据?没有真正的方法可以制作真正满足所有需求的“通用”数据服务。您想要的是“时间序列数据库”,其中有数百个,因为您如何存储数据的每个细节都在规模上很重要。(如果你的规模不大,只需将其存储在任何旧数据库中,它会工作一段时间。)

    每个时间序列数据库都是因为其他人没有完全按照他们想要的方式编写的。例如,考虑Graphite如何存储它的数据:每个指标(比如来自一个来源的温度)都存储在一个固定大小的文件中。无论您多久发送一次指标,或发送它们多长时间,文件的大小都是恒定的。

    缺点是旧数据的分辨率较低,并且在您定义的设定间隔(例如 1 年)之后,数据将被丢弃。但好处是,绘制一天和一年一样快,并且指标的大小不会随着时间的推移而增长。

    在其他存储系统中,生成一年的图表可能涉及获取数百万个数据点,并且可能需要大量数据存储。

    Graphite 的一大缺点是每个指标都会创建一个新文件,所以如果你有动态指标(比如云盒来来往往),它可能不适合。

    Prometheus 形成对比,其中指标主要按时间存储。您可以拥有许多动态指标,这很好。但是不要试图长期存储这些指标,返回并阅读它们需要很长时间。

    没有一种尺寸适合所有人。

    PS Graphana是可视化数据的绝佳方式。它具有适用于大多数时间序列数据库的插件。

  2. 谁来存储你的数据?成千上万地方那些你所提到的。在云中启动时间序列数据库非常容易,但通过它赚钱真的很难。这些公司中的大多数会在一段时间后倒闭,或者开始哄抬物价。(即使保持价格稳定也是价格欺诈——因为计算成本在不断下降。)很多时候,他们发现他们无法吸引到尽可能多的新客户,所以他们试图提高价格(伪装成改变他们的定价模型)。事实证明,存储每个人的数据要花很多钱......

    我建议自托管,或使用信誉良好的云提供商,例如 AWS CloudWatch(如果您有很多指标,则价格昂贵,但对于 50 个以下指标免费!)