阿里云:如何基于Node.js构建物联网系统

Posted IT大咖说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云:如何基于Node.js构建物联网系统相关的知识,希望对你有一定的参考价值。

阿里云:如何基于Node.js构建物联网系统

内容来源:2017年7月15阿里云技术专家张子发在“2017 javascript中国开发者大会”进行《基于Node.js构建物联网系统》演讲分享。IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1719 | 3分钟阅读


摘要

物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。阿里云技术专家张子发为我们分享阿里云基于Node.js构建物联网系统。


物联网

大概在2007-2008年的时候,物联网的概念才开始逐渐普及,但实际上物联网的开发在很多年前就已经在进行了。近几年流行的移动支付,就是因为物联网促进了智能手机的技术发展才出现。与我们日常生活离得比较远的例如电网、工业制造,也早在很多年前已经有物联网的概念。


物联网行业主要是由几个部分组成。数据产生由传感器完成,数据收集是把数据通过网络进行传输,数据分析是用自己搭建的服务器,数据分析完成之后把数据的结果推送给一些可执行的机构。


物联网开发

阿里云:如何基于Node.js构建物联网系统

如上图,接入传感器之后,会更多地重视安全、认证、数据传输加密等问题,在以前的概念里基本不会考虑这些。

阿里云:如何基于Node.js构建物联网系统

现在在设备端有一种是独立的设备,可以直接连到网上。比如网络摄像头或者是一些用复杂芯片做的东西,可以直接连接云服务。


还有一些低功耗的设备,例如家用的无线传感器,会连接智能网关,再通过各种协议。现在的标准就是用MQTT直接传到云上。和以前相比MQTT最方便的是提供QS机制,保证消息一定可达。像传感器的周期性数据只需要传输一次,中间丢了也没关系;像报警信息那种不能丢的数据能保证它可;或者有些计费的消息则保证只需传输一次并要可达。还提供了消息发布和订阅机制。


为什么是Node.js

Node.js的生态很好。现在Node.js官方给出的数据是用户有四百万人,每年的增长率为100%。


Node.js天生就是高并发场景。物联网应用不同于普通互联网应用之处就在于,它的数据是周期性的,要保持一个长连接。如果下面接的设备或用户很多,就需要是一个高并发的场景。


要是生意做得好,Node.js扩展起来也非常方便,只需要多开几台机器和进程。


现在大部分做物联网开发的工程师,和设备相关的还是主要以使用C语言为主。要是CPU的内存和能力够的话,用Node.js来写会比较方便。


借助于生态,基本需要用到的芯片底层的库,以及芯片的外部设备都可以直接引用,所以开发效率是很高的。


前后端的沟通也会畅通很多。物联网应用如果要被大众所接受,最重要的是前端的用户体验。


DEMO




树莓派上是通过串口接收pm2.5传感器数据,通过IO来控制蜂鸣器和电机,通过MQTT与云服务器交互依赖。依赖wiring-pi、serialpor和MQTT这几个库。

阿里云:如何基于Node.js构建物联网系统

这个代码非常简单,只要把串口的库拿进来和串口绑定,波特率两边匹配一致就行。然后port会有一个事件,有数据进来的时候进行数据处理。并且要考虑数据丢失的问题,现实中这个问题时有发生,可能做硬件的人深有体会。

阿里云:如何基于Node.js构建物联网系统

上图中的代码通常是硬件开发者写代码的方式。先设置工作模式,然后进行数字的写入和读取。用js来写设备端的代码还是需要懂一些硬件,否则效率不会高。

阿里云:如何基于Node.js构建物联网系统


云服务器用的是ECS,多了一个公网IP更加方便。数据传输有MQTT。数据存储可以根据数据的类型选择不同的数据库,比如mysql、mongoDB和redis。前端展现是express。主要依赖mosca、mysql、mongo、redis和express,根据不同类型选择不同的数据库进行存储。

阿里云:如何基于Node.js构建物联网系统

Mosca配置的时候除了port要自己指定之外,其它的可以用默认参数。

Tip

要做一个硬件产品,如果这是一个合格的产品,需要的周期很长。首先要去市场上选型,之后的采购周期要根据订货量大小决定。传感器的供应商并不多,要做比较的话需要采购过来并花费很多时间进行验证测试,这个过程会很长。产品完成后还要评测认证检测,反反复复又需要很久。整个过程就导致硬件的开发周期很长。


MagicLight是一个在亚马逊上销量很好的,用wifi控制的灯。但是我觉得这个灯有一个缺点,就是只能通过手机控制,无法使用墙面开关控制,这是用户体验的一个很大问题。如果要做到开关和手机都能控制,就要做一个联动。


于是有人做了一个开关,可以用手机控制同时也能保持物理结构。但还要保持wifi部分工作的话,就需要有电流通过,要有一个回路。就是在灯即使关闭的时候仍然有电流可通过,wifi的控制电路才能通过,这就是单火线开关的问题,目前还无法解决。


做物联网应用还有很重要的一点就是要满足用户的需求,无论是解决体验问题还是带来一些收益,解决行业内的痛点才是有意义的。如果是纯粹是技术看起来很好或是很有噱头,我觉得很难存活下去。


今天的分享到此结束,谢谢大家!


相关推荐

推荐文章



近期活动




点击【阅读原文】进入干货密道

以上是关于阿里云:如何基于Node.js构建物联网系统的主要内容,如果未能解决你的问题,请参考以下文章

基于阿里云构建物联网Serverless架构

10.1 阿里云物联网平台介绍

阿里云IoT云产品交流会:物联网痛点多,阿里能做啥?

将Android Things与阿里云集成,轻松实现物联网项目

基于阿里云物联网平台设计的实时图传系统_采用MQTT协议传输图像

基于 Arduino 和 IoT 云平台搭建物联网系统