内容来源:2017年7月15日,阿里云技术专家张子发在“2017 JavaScript中国开发者大会”进行《基于Node.js构建物联网系统》演讲分享。IT大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。
html
阅读字数:1719 | 3分钟阅读前端
物联网经过智能感知、识别技术与普适计算等通讯感知技术,普遍应用于网络的融合中,也所以被称为继计算机、互联网以后世界信息产业发展的第三次浪潮。阿里云技术专家张子发为咱们分享阿里云基于Node.js构建物联网系统。mysql
大概在2007-2008年的时候,物联网的概念才开始逐渐普及,但实际上物联网的开发在不少年前就已经在进行了。近几年流行的移动支付,就是由于物联网促进了智能手机的技术发展才出现。与咱们平常生活离得比较远的例如电网、工业制造,也早在不少年前已经有物联网的概念。redis
物联网行业主要是由几个部分组成。数据产生由传感器完成,数据收集是把数据经过网络进行传输,数据分析是用本身搭建的服务器,数据分析完成以后把数据的结果推送给一些可执行的机构。sql
如上图,接入传感器以后,会更多地重视安全、认证、数据传输加密等问题,在之前的概念里基本不会考虑这些。数据库
如今在设备端有一种是独立的设备,能够直接连到网上。好比网络摄像头或者是一些用复杂芯片作的东西,能够直接链接云服务。express
还有一些低功耗的设备,例如家用的无线传感器,会链接智能网关,再经过各类协议。如今的标准就是用MQTT直接传到云上。和之前相比MQTT最方便的是提供QS机制,保证消息必定可达。像传感器的周期性数据只须要传输一次,中间丢了也不要紧;像报警信息那种不能丢的数据能保证它可;或者有些计费的消息则保证只需传输一次并要可达。还提供了消息发布和订阅机制。后端
Node.js的生态很好。如今Node.js官方给出的数据是用户有四百万人,每一年的增加率为100%。安全
Node.js天生就是高并发场景。物联网应用不一样于普通互联网应用之处就在于,它的数据是周期性的,要保持一个长链接。若是下面接的设备或用户不少,就须要是一个高并发的场景。服务器
要是生意作得好,Node.js扩展起来也很是方便,只须要多开几台机器和进程。
如今大部分作物联网开发的工程师,和设备相关的仍是主要以使用C语言为主。要是CPU的内存和能力够的话,用Node.js来写会比较方便。
借助于生态,基本须要用到的芯片底层的库,以及芯片的外部设备均可以直接引用,因此开发效率是很高的。
先后端的沟通也会畅通不少。物联网应用若是要被大众所接受,最重要的是前端的用户体验。
Demo演示视频地址:v.qq.com/x/page/o055…
树莓派上是经过串口接收pm2.5传感器数据,经过IO来控制蜂鸣器和电机,经过MQTT与云服务器交互依赖。依赖wiring-pi、serialpor和MQTT这几个库。
这个代码很是简单,只要把串口的库拿进来和串口绑定,波特率两边匹配一致就行。而后port会有一个事件,有数据进来的时候进行数据处理。而且要考虑数据丢失的问题,现实中这个问题时有发生,可能作硬件的人深有体会。
上图中的代码一般是硬件开发者写代码的方式。先设置工做模式,而后进行数字的写入和读取。用js来写设备端的代码仍是须要懂一些硬件,不然效率不会高。
MQTT的部分只要把包引进来,把MQTT的代理地址和ip port以后,要知道小车的控制指令,只需注册一下全部和小车相关的事件,若是有人发了指令给代理,代理就会自动转发给你。
云服务器用的是ECS,多了一个公网IP更加方便。数据传输有MQTT。数据存储能够根据数据的类型选择不一样的数据库,好比mysql、mongoDB和redis。前端展示是express。主要依赖mosca、mysql、mongo、redis和express,根据不一样类型选择不一样的数据库进行存储。
Mosca配置的时候除了port要本身指定以外,其它的能够用默认参数。
要作一个硬件产品,若是这是一个合格的产品,须要的周期很长。首先要去市场上选型,以后的采购周期要根据定货量大小决定。传感器的供应商并很少,要作比较的话须要采购过来并花费不少时间进行验证测试,这个过程会很长。产品完成后还要评测认证检测,反反复复又须要好久。整个过程就致使硬件的开发周期很长。
MagicLight是一个在亚马逊上销量很好的,用wifi控制的灯。可是我以为这个灯有一个缺点,就是只能经过手机控制,没法使用墙面开关控制,这是用户体验的一个很大问题。若是要作到开关和手机都能控制,就要作一个联动。
因而有人作了一个开关,能够用手机控制同时也能保持物理结构。但还要保持wifi部分工做的话,就须要有电流经过,要有一个回路。就是在灯即便关闭的时候仍然有电流可经过,wifi的控制电路才能经过,这就是单火线开关的问题,目前还没法解决。
作物联网应用还有很重要的一点就是要知足用户的需求,不管是解决体验问题仍是带来一些收益,解决行业内的痛点才是有意义的。若是是纯粹是技术看起来很好或是颇有噱头,我以为很难存活下去。
今天的分享到此结束,谢谢你们!
编者:IT大咖说,转载请标明版权和出处