这是我一直在思考的一个主题,特别是因为“物联网”的概念最近一直在流传。
我将从我说“物联网”时的意思开始。我知道物联网这个词可能有不同的含义,而且有时会被误用。它可能是一个没有明确定义的术语,并可能导致围绕它的确切含义进行大讨论,我自己不知道该术语的正确和广泛接受的定义。所以对我来说,物联网是一个概念,这个概念定义了从另一个嵌入式设备或手机通过互联网远程连接到嵌入式设备的能力。就如此容易。
在这种情况下,连接的目的并不重要,如果您可以将办公室中的一台设备与家中的另一台设备连接,或者您是否可以通过手机连接家中的一台设备,所有这些都通过互联网,那么我们谈论的是 IoT 设备(嵌入式设备,而不是电话)。
因此,在同意我所说的 IoT 之后,我现在将描述我正在努力实现的目标。
我试图实现的正是我在物联网定义中所描述的。
我想让家里的一个或多个嵌入式设备通过以太网或 wifi 连接到我的互联网路由器,并且能够通过远程位置的另一个嵌入式设备远程连接到它们(远程我的意思是不在同一个网络上)也许还可以通过我手机上的监控应用程序连接到他们
例如,我可能有一个简单的嵌入式设备充当开/关开关,连接到我的车库门开启器,另一个嵌入式设备充当我办公桌上的大红色按钮,以便我可以按下办公桌上的红色按钮车库门打开了。
另一个例子是拥有一个具有 ADC 功能的嵌入式设备,它可以监控我家的温度,并在达到阈值时向我发送警报。通知可以通过一个简单的 Android 应用程序接收,也可以通过另一个带有小屏幕的嵌入式设备在我工作的办公桌上接收。
这些示例可能很愚蠢,但只是为了说明我试图实现的可能场景和用例。最后,想法是一样的,通过互联网将一个嵌入式设备与另一个嵌入式设备连接起来。
还有一点需要澄清的是,这些设备之间的数据交换将非常轻量级,每次只有几个字节,而不是设备之间需要数百千字节的数据交换。
此外,我所指的“嵌入式设备”是基于 100MHz 或 200MHz cortex-m4 微控制器的简单但功能强大的设备。澄清这一点很重要,因为这些设备上不会运行任何 Linux 或复杂的库。最后,仅仅为了打开和关闭灯泡而拥有运行 Linux 的强大处理器是一种资源浪费,完全没有必要。无论如何,我打算使用 BeagleBoard、Raspberry Pi 或任何其他类似的板作为我的嵌入式设备。只是微控制器,因为不需要比这更复杂的。
我对物联网平台和那些复杂的解决方案知之甚少。当我开始寻找通过互联网将一个嵌入式设备与另一个嵌入式设备连接的方法时,我偶然发现了几个提供物联网服务的站点。
我知道有一些物联网云服务,例如:
仅举几个。这些的主要问题是成本和复杂性。你必须付费才能获得这些服务,而且你必须学习如何实现他们拥有的所有服务,以防万一你需要它们,还有他们的 API 和一堆其他对我来说似乎没有必要的东西只能在设备之间交换一些字节。我只是想要一些比这更简单的东西,一些我自己可以做的事情。
你可能会说实现我自己的“云”,如果这是我必须做的事情,并不简单,有时为了简单起见最好使用这些类型的服务,但我想知道有两个主要原因实施我自己的物联网服务。
主要原因是我想自己做。我不想依赖第 3 方将我的设备相互连接起来,因为我将为我的设备开发代码和硬件,所以最好也创建我自己的方法将它们连接为 IoT 设备。
第二个原因是学习如何去做。通过了解实现这一目标所需的所有必要事项,我将对物联网世界有更好的了解。
另外,我想提一下,我精通 C 并且我在工作和家里都使用 Linux 作为我的日常操作系统,所以请避免使用 Windows 的东西,因为那对我没用。我不害怕我必须在 C 中为我的嵌入式设备或在 Linux 上实现的任何东西来实现实现我的目标所需的任何东西。
所以我的问题是,为了在它们之间进行数据交换,需要实现什么,以及在哪里能够将两个或多个嵌入式设备相互连接?
这个问题我可以用什么来在我们自己的服务器上创建物联网?有类似的东西但已关闭并且没有任何答案,还假设要使用现有的云基础架构。所以它对我没有帮助。
另一篇文章哪些物联网服务可用于在云中存储/发送/发布通用数据?有一个类似的问题,但 OP 明确要求提供物联网服务,我正试图避免这些。