专栏首页安全领域搭建你自己的Arduino IOT云服务器

搭建你自己的Arduino IOT云服务器

想让你的IoT项目运行在云上吗?没有问题,这篇教程会带着你创建并启动属于你自己的虚拟服务器来支持你的IoT项目。

如果你曾使用过一些新的支持Arduino的硬件平台进行开发,那么可能你已经在你的项目中使用了在线的IoT服务。在这篇文章中,我会演示如何通过搭建一个虚拟专用服务器(VPS)并配置一些软件来为你的Arduino IoT项目提供服务。

除了设置你的VPS之外,我还会告诉你如何安装一些简单的实例来通过浏览器来实现对LED、灯管的控制。下面的图示展示了如何通过浏览器定向至你自己的VPS并实现对不同设备的实时控制。在这里在线的VPS充当了代理的功能,这使得不同的用户可以通过浏览器来控制相应的设备。

使用在线服务器作为代理来实现用户和设备之间的通信有以下好处:

  • 用户可以跨网络控制设备。比方说,你可以通过手机的移动网络来控制连接到家庭网络上的设备。
  • 设备以(TCP/IP)网络客户端的身份运行,可以通过浏览器直接实现对设备的控制,而不需要使用像端口转发之类的其他技巧。
  • 设备以网络客户端的身份隐性运行显著地提升了设备的安全性。关于安全性,我们后面会进一步讨论。
  • 小型的设备通常并没有足够的资源来直接提供web接口。而在线的服务器可以承担为设备提供web接口的责任,这可以显著减少设备上的代码复杂度。

虚拟专用服务器

自己配置一个VPS听起来既复杂,成本又高,但事实上配置一个VPS是很简单的,成本也可以很低,找到一年只需要 $8 的VPS服务也是可能的。我喜欢通过lowendbox.com来为我使用的VPS成本进行预算,securedragon是我最喜欢的VPS提供商之一,三个月的租用费用不到 $6 ,一年的费用不到 $12。

内存限制

在VPS的预算中很重要的一个限制条件就是可用的内存容量。在本文中我使用的VPS只有64Mbyte的内存,这很大程度上限制了我们服务器可用的IoT解决方案。在本文中我们采用的IoT解决方案是一个包含了IoT协议、web服务器、服务器端脚本语言以及数据库的应用服务器框架。软件包可以轻松地运行在预算中的VPS上,在我的测试环境中,在线的服务器最多可以连接10000个设备。我使用了一些额外的VPS来模拟大量的设备来完成了这一测试。

Linux

我预算中的VPS运行的是Linux系统。如果你从未使用过Linux,你可能会认为本文并不适合你,但是不试试又怎么知道自己不适合呢?对于Linux命令行的初学者来说,在线的VPS是最好的起点,因为无论你在VPS上做了什么错误的操作,你都可以通过VPS提供商为你提供的web控制界面上的一个按钮将你的VPS还原至初始配置。因此,线上的VPS是练习Linux命令行的最佳场所。如果你的VPS进入到了无法恢复的状态,你可以登录到VPS的web控制面板重装系统。一到两分钟之后一个全新的Linux VPS就会重新生成,你可以在上面重新开始。

通过SSH实现远程登录

你可以通过SSH(Secure Shell)来远程登录在线的VPS。如果你的电脑运行的是Windows系统,你可以下载Putty,安装之后运行即可。Mac和Linux通常都内置了SSH的命令行工具,你可以通过ssh命令进行连接。

当你注册一个VPS之后,通常你会收到一封关于你的VPS的说明邮件,其中包含了如何使用SSH登录到服务器的说明以及你的新的VPS的管理员密码(也可能是访问所需的私钥)。下面这张图展示了如何在Putty中输入IP地址以及如何以root用户的身份在命令行中完成登录。

现在,你可以随意尝试一些Linux命令了。不用担心损坏VPS,因为即使损坏了,你也可以通过web上的控制面板重装Linux系统。

安装IoT服务器

在安装服务器软件之前,如果你对VPS上的Linux系统做了改动,我建议你通过控制面板重装一下系统。

安装服务器所需的软件和实例程序只需要将下面的命令拷贝并粘贴至SSH的命令行窗口即可。

source <(wget -q -O- http://makoserver.net/install/brokerX86/install.sh)

下载并编译Arduino Sketch

Arduino示例可以在兼容ESP8266 WiFi的Arduino板上进行测试。只要对初始代码稍作修改就可以运行在任何型号的Arduino上。

下载并解压下面链接提供的Arduino Sketch:

https://realtimelogic.com/downloads/SMQ/SMQ-Arduino.zip

在Arduino IDE中打开sketch文件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地址即可。

然后将你的sketch文件编译上传至你的Arduino板子上。如果一切顺利,Arduino设备会显示在web界面上。你可以通过浏览器键入VPS的IP地址来访问web界面。

以上就是你配置在线服务器来实现通过浏览器实时访问你的Arduino设备所需的全部操作。其中完整的应用程序可以实现对于开/关元件(如LED、灯光、电机)的控制。完整的应用程序由两部分组成:(1)在你的浏览器中驱动应用程序的JavaScript脚本,它会与在线服务器建立连接。(2)运行在Arduino开发板上的Arduino代码,它也会与在线服务器建立连接。在线服务器充当了通用代理的功能并负责设备和浏览器客户端之间消息的路由。

该应用程序中使用的IoT协议称为SMQ,除了publish/subscribe模式之外,它还提供了一对一的通信功能。SMQ中的pub/sub协议类似于其他的pub/sub协议(如MQTT和AMQP)。在使用pub/sub协议时,在线服务器通常被称为代理。代理负责发布者和订阅者之间消息的路由。关于该应用中JavaScript代码和Arduino代码的详细说明可以在这里查看。

IoT的安全性

我最近写了一篇关于IoT中协议(如SMQ)安全的文章。我推荐你读一下这篇文章,因为你应当知道一些pub/sub协议的默认设置是有安全风险的。尽管本文中使用的LED/灯光控制应用程序没有使用密码加密功能,但是它仍然相当安全,因为SMQ代理不容易被检测到并且SMQ协议不允许通配符订阅方式。有关详细内容可以参考上面提到的文章。作为练习,你也可以向本文中的应用程序添加验证功能。

本文的版权归 ArrayZoneYour 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用技术拯救自然:物联网版

    几个世纪以来,人类把大自然视为可被驯服和征服的东西。而最近有所改变。近几十年来,社会意识已经改变,注意力已经转向保护环境,而不是试图控制环境,让它...

    未来守护者
  • 思科宣称物联网项目正走向失败。但为什么?

    原文地址:https://dzone.com/articles/cisco-says-iot-projects-are-failing-but-why

    未来守护者
  • 最佳安全实战:在 Java 和 Android 里用 AES 进行对称加密

    原文地址:https://proandroiddev.com/security-best-practices-symmetric-encryption-with...

    未来守护者
  • consul node-id冲突故障记录 原

    consul的node-id默认是从机器的bios硬件id转化来的,里面是通过读取/sys/class/dmi/id/product_uuid得到一个id, 目...

    domain0
  • 『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)

    PS:完成自动化部署,终于完成了 ,在自己的虚拟机环境下搞了3天,感觉好有成就感,首选shell脚本部署学习,pipeline并不是那么麻烦。里面多半是用she...

    IT故事会
  • 通过一个生活中的案例场景,揭开并发包底层AQS的神秘面纱

    当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段时间,如果你没有任何总结,或者是不经常回顾,遗忘的速度是非常之快的。

    用户1516716
  • OpenAI/Universe-万物

    用户1107453
  • JUC同步器框架AbstractQueuedSynchronizer源码图文分析

    Doug Lea大神在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.Abstract...

    Throwable
  • 全球十大无人机产业大事件

    导读:从2013年开始,无人机产业的快速发展已经诱使更多地跨国公司加入,例如Google、Facebook和Amazon,他们都已经开始测试这一新技术的可用性。...

    机器人网
  • Steve Boswell:智能口罩让PM2.5滚蛋

    image.png 演讲摘要 Steve Boswell:智能口罩让PM2.5滚蛋 首先我为大家介绍一下技术发展到了什么样的地步?现在我们在绿色...

    腾讯研究院

扫码关注云+社区

领取腾讯云代金券