作者 | phodal
责编 | 唐门教主
微信公众ID | csdn_iot
随 JavaScript 语言的流行,及物联网领域的崛起,我们能看到它们结合的可能性,同时也发现它特别适合于物联网开发。因此,在这篇文章里,笔者将主要从以下三个方面进行介绍:
典型的物联网架构,及多种语言带来的问题;
只使用 JavaScript 语言的物联网架构;
详解基于 JavaScript 语言的物联网不同层级结构。
那么,先让我们看看典型的物联网架构是怎样的吧。
1
典型的物联网架构
我们甚至还可以认为,物联网只是对互联网的扩展。与传统的 C/S 架构相比,它多了一个“数据采集层”,我们称之为传感器层、硬件层等。数据的产出不再只是用户,还来自于各式各样的联网设备。物联网不再局限于使用 HTTP 协议来传输数据,它还会使用 CoAP(受限制的应用协议)、MQTT(消息队列遥测传输)协议。
2
物联网的四个层级
当前的物联网应用,所要做的就是控制和数据处理。指令,由用户到终端一层一层往下下达,直到硬件端由设备去执行。而数据,便是一层一层往上上报,直至被可视化。
因此,与互联网的架构相比(如图 1、图 2 所示),起点与终点不一样了:指令的终点与数据的起点,变成了硬件层,而非最后的用户层。
图 1 互联网架构
图 2 典型的物联网架构
数据由客户端 A 发送到服务端,客户端 B 再从服务端获取 A 的数据,如此便算是完成了一个回路。而物联网架构则稍微麻烦了一些,多了一个层级,便多了一个步骤。
硬件层上的微控制器通过直连的方式,采集各式各样的数据,比如温度、湿度等。而受限于微控制器的成本、环境条件等因素,它可能无法直接连接到互联网。因此,需要连接到一些额外的联网设备才能实现。
而这些联网设备,会负责处理来自各个硬件设备的数据,并将其上传至服务器。同时,它会提供一个无线(如蓝牙、红外、ZigBee)接口作为数据的入口。因此,这一层级需要有更好的数据处理能力,并且它应该要可以快速开发。因为这些设备主要做的是协调工作,我们习惯于将其称为“协调层”。
3
使用多种语言的物联网
多年以前,笔者曾做过一个并不复杂的物联网系统:
使用 Python 里的 Django 作为 Web 服务框架,Django REST Framework 创建 RESTful API;
为了使用手机作为控制器,还用 Java 写一个 Android 应用;
使用 Raspberry Pi 作为硬件端的协调层,用于连接网络,并传输控制信号给硬件;
在硬件端使用 Arduino 作为控制器