创建自己的Arduino物联网云服务器

是否想让您的物联网项目在云中运行?跟着本篇教程一起来学习。

物联网设备上云
物联网设备上云

如果您有机会试用一些新的启用Arduino的硬件平台(例如ESP8266 Wi-Fi SoC),那么您可能已经在项目中使用了在线IoT服务。 在本文中,我们将向您展示如何通过为Arduino IoT项目设置虚拟专用服务器(VPS)和服务器软件来设置自己的在线服务。

除了设置自己的VPS,我们还将向您展示如何安装一个简单的示例,该示例使您可以使用浏览器控制LED,灯等。 下图显示了如何通过使用浏览器导航到您自己的VPS来实时控制任何数量的设备。 在线VPS充当代理,使任何数量的用户都可以通过在线服务器控制设备。

vps
vps

使用在线服务器并将其用作代理在用户和设备之间路由消息的一些好处包括:

  • 使一个网络上的用户可以控制另一网络上的设备。 例如,可以通过连接到蜂窝网络的智能手机来控制连接到家庭网络的设备。
  • 设备作为网络(TCP / IP)客户端运行,因此不需要路由器端口转发或其他技巧即可通过在线服务器访问设备。
  • 充当网络客户端的设备在隐身模式下运行,从而大大提高了设备的安全性。 稍后我们将进一步介绍安全性。
  • 小型设备通常不具备提供直接Web界面的资源。 在线服务器管理着为设备提供Web界面的所有繁重工作,从而极大地降低了设备中的代码复杂性。

虚拟专用服务器(Virtual Private Server)

设置自己的VPS听起来可能很复杂且昂贵,但是现实是,设置VPS非常容易,而且成本也可以降至最低。 可能会发现VPS服务每年的费用低至8美元。 我最喜欢的预算VPS购物网站是lowendbox.com,我最喜欢的VPS提供商之一是secureragon,在这里您可以获得不到6美元的三个月租约和12美元的年租。

内存限制(Memory Limitation)

预算VPS的限制是可用内存量。 我们在本文中使用的预算VPS仅具有64 MB的内存,因此限制了可以使用的IoT服务器解决方案的选择。

我们将在本文中使用的IoT解决方案是一个应用程序服务器框架,该框架在一个单元中包含IoT协议,Web服务器,服务器端脚本语言和数据库。

该软件包可以轻松地在预算VPS上运行,并且在我的测试环境中,我能够将10,000台设备连接到在线服务器。 我通过使用许多其他虚拟专用服务器(在其中运行了许多模拟设备)执行了测试。

Linux

预算VPS将运行Linux。 如果您从未使用过Linux,那么您可能会认为这不适合您; 对于学习命令行Linux的任何新手来说,在线VPS都是最佳起点,因为无论您使用VPS做什么,基于Web的易于使用的VPS控制界面都可以使您通过以下方式将VPS还原为其原始配置: 单击按钮。

因此,在线学习VPS是学习命令行Linux的好方法。 如果使Linux VPS进入无法恢复的状态,请登录VPS Web控制面板,然后单击“重新安装”按钮。 新的Linux VPS将在一到两分钟内提供,您可以重新开始。

通过SSH远程登录

联机VPS使您可以使用SSH(安全外壳)进行远程登录。 如果您自己的计算机运行Windows,请下载SSH客户端Putty并从任何目录启动可执行文件。 Mac和Windows计算机通常包括命令行SSH客户端,因此您可以在Linux和Mac上的命令行中简单地键入ssh。

当您注册VPS服务(例如预算secureragon VPS(O64))时,您将收到一封电子邮件,其中包含有关如何使用SSH远程登录VPS的说明。 这些说明包括新VPS的IP地址和root(管理员)密码。 下图显示了如何在Putty中输入IP地址以及如何以root用户身份在命令行窗口中登录。

SSH工具PuTTY
SSH工具PuTTY

此时,请随意尝试一些Linux命令。 不用担心损坏VPS,因为在VPS控制面板中单击一个简单的按钮即可重新安装Linux操作系统。

安装物联网服务器(IoT Server)

要安装服务器软件和示例程序,请复制以下所有内容并将命令粘贴到SSH控制台窗口中。

wget http://makoserver.net/install/brokerX86/install.sh;
chmod +x install.sh;
./install.sh

除此之外,你还要设置域名,登录VPS,安装软件,到使用浏览器验证其是否正常运行。

下载并编译Arduino Sketch

Arduino示例已在兼容Arduino的ESP8266 Wi-Fi上进行了测试。 但是,您应该仅需对启动代码进行少量更改即可使用Arduino。

在任何目录下下载并解压缩Arduino Sketch:
https ://realtimelogic. com/downloads/SMQ/SMQ-Arduino.zip

在您的Arduino IDE中打开草图文件SMQ.ino并向下滚动,直到看到:

#error REMOVE THIS LINE AND SET THE TWO VARIABLES BELOW
static const char* ssid = "";
static const char* password = "";

删除上面的第一行,并将变量'ssid'设置为您的无线网络ID,并将'password'设置为您的无线密码。

打开文件led-example.cpp并向下滚动,直到看到:

#define SIMPLEMQ_DOMAIN "http://simplemq.com"

将域名“ simplemq.com”更改为您的VPS的IP地址。

编译并将草图文件上传到您的Arduino开发板。如果一切正常,则Arduino设备应显示在Web界面中。通过使用浏览器并导航到VPS IP地址,可以进入Web界面。

以上是设置在线服务器所需的一切,您可以使用该浏览器通过浏览器实时控制Arduino设备。完整的应用程序可以按原样使用,以控制任何提供开/关状态的东西,例如LED,灯,电动机等。

完整的应用程序包括两部分:

  • (1)在您的计算机上运行的JavaScript驱动的Web应用程序浏览器,并且已连接到在线服务器。
  • (2)在Arduino板上运行的Arduino代码,该代码也已连接到在线服务器。在线服务器充当通用代理,并在设备和浏览器之间路由消息。

此应用程序中使用的IoT协议称为SMQ,除了发布/订阅模式外,它还提供一对一通信(通过在线代理)。 SMQ中的发布/订阅(pub / sub)功能类似于其他发布/子协议,例如MQTT和AMQP。

使用发布/子协议时,联机代理服务器通常称为代理。代理负责在发布者和订阅者之间路由消息。

使用FreeRTOS

Arduino环境非常适合初学者,但是Arduino的功能非常有限。除了使用Arduino外,您还可以使用现成的FreeRTOS环境,称为esp-open-rtos,但是不用担心,您不需要进行复杂的esp-open-rtos设置。取而代之的是,您可以使用易于配置的基于Web的IDE使用预先配置且完全可以使用的环境。基于Web的IDE非常适合习惯于易于使用的Arduino IDE的Arduino用户。

导航到RTL并下载免费的ESP8266 IDE。

该IDE是为教育目的而设计的,它包括一个预先配置的esp-open-rtos,它与易于使用的基于Web的C源代码IDE捆绑在一起。 IDE需要VMWare或VirtualBox。我更喜欢VMWare,而不是VirtualBox,因为我发现它更易于使用。请注意,VMWare是免费的,用于非商业用途。

下面的屏幕快照显示了虚拟机和连接到虚拟机的基于Web的IDE。请注意,虚拟机如何获得ESP8266 USB连接的所有权。基于Web的IDE会检测到此错误,并显示ESP8266已连接并准备用新固件进行刷新。

esp8266网页版IDE
esp8266网页版IDE

请注意,VM的IP地址很可能与上图中的IP地址不同。 确保在虚拟机窗口中单击IP地址。 如果该窗口为空白,请单击该窗口,然后按Enter键。 您必须在浏览器中输入此IP地址才能打开Web IDE。

附加平台

边缘节点C代码也可用于许多其他平台。 有关详细信息,请参见GitHub上的SMQ页面。

安装IoT服务器

在您的计算机上而不是在线服务器上安装IoT Server是开始使用IoT Server进行学习的好方法。

如果您使用的是Linux x86或Windows 10,则可以在自己的计算机上使用上述VPS安装脚本。

安装脚本是为Linux设计的,但是如果您安装Linux子系统,则安装脚本也可以在Windows 10上使用。 如果使用Windows,请打开Microsoft Store并搜索“ debian”。 安装用于Linux的Debian Windows子系统并打开bash shell。

物联网安全

我已经更新了本文,并添加了一些有关安全性的信息。那么,该解决方案的安全性如何?上一教程中使用的SMQ协议具有出色的安全功能,但是所有这些都归结为您必须采取的安全措施。

验证(Authentication)

本教程设计的示例代码未对SMQ协议使用密码身份验证。 您可以轻松地将密码身份验证添加到示例代码中。 我不会详细介绍,但是SMQ协议支持强身份验证。 通过使用所谓的基于种子的基于哈希的身份验证,即使在非TLS连接上,也可以确保身份验证的安全性。

SMQ协议提供种子值。 您只需要确定要使用的哈希算法即可。 C函数SMQ_init()提供一个种子值作为out参数,并且该种子值可用于创建例如HMAC哈希。 然后,在调用SMQ_connect时,将HMAC哈希用作凭证。 有关详细信息,请参见SMQ C代码参考文档。 服务器端身份验证回调函数使用作为参数之一提供的种子执行相同的计算。 有关详细信息,请参见SMQ代理的身份验证回调。

授权(Authorization)

您可以参考本站另外一篇文章物联网安全方案-从古代堡垒的建设解读,其中详细介绍了为什么使用授权是个好方案。

SO资源郑重声明:
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3187589@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!

SO资源 » 创建自己的Arduino物联网云服务器