物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。华云数据“智汇华云”专栏将为您奉上“前端战略规划”系列文章,本期将为您讲解前端战略规划之物联网IOT。
基础:物联网的三个层级
开始之前, 先让我们简单地介绍点物联网的基础知识。如果你有点Web开发经验的话,都知道下图是CS架构:
相比于一个物联网系统,无非就是多了一层硬件层以及可选的协调层。
这个硬件层决定了物联网应用比Web应用更加复杂。对于大部分的Web应用来说 ,客户端都是手机、电脑、平板这些设备,都有着强大的处理能力,不需要考虑一些额外的因素。
对于物联网应用来说,我们需要考虑设备上的MCU的处理能力,根据其处理能力和使用环境使用不同的通信协议,如我们在一些设备上需要使用CoAP协议。在一些设备上不具备网络功能,需要考虑借助于可以联网的协助层,并且还需要使用一些短距离的无线传输协议,如低功耗蓝牙、红外、Zigbee等等。
JavaScript在物联网领域的发展
两年前,NodeJS已经有了实现物联网应用的可能性。当时,已经有了物联网协议MQTT和CoAP协议的库,由于当时缺乏一些大型应用的开发经典,所以做得并不是很好,但是已经可以看到JavaScript在这方面的远景。
一年多以前,Ionic还没推出正式版的时候,但是这个框架真的很棒——它自带了一系列的UI,还用NgCordova集成了Cordova的一系列插件。使用这个框架进行物联网应用开发,还需要一些原生的插件,如BLE、MQTT。
后来我们不再需要编译Node.js,就可以在ARM处理器上运行Node.js。并且我们已经有Tessel、Espruino、Kinoma Create、Ruff这些可以直接运行JavaScript的开发板。三星还推出iot.js,可以让更多的嵌入式设备可以使用JavaScript语言作为开发语言。
人们开始在硬件上使用JavaScript的原因有很多,如Web的开发人员是最多的、JavaScript很容易上手。
现在,这次我们在这三个层级上都可以使用JavaScript,只需要一种语言。
使用一种语言开发物联网应用:JavaScript
使用Node.js Node-CoAP MQTT.js MongoDB Express搭建了一个支持多协议的物联网:
不过,上图是完善版的物联网,代码自然是在GitHub上啦:Lan。作为服务端来说,Node.js的能力已经是经过验证的。而在混合应用上,仍然也可以经受住考验,混合应用在手机上做个图表是轻轻松松的事(只需要获取数据,然后显示)。
Demo
树莓派上是通过串口接收pm2.5传感器数据,通过IO来控制蜂鸣器和电机,通过MQTT与交互依赖。依赖wiring-pi、serialpor和MQTT这几个库。
const COM = require(‘serialport’);
const port = new COM(‘/dev/ttyAMAO’, { baudRate: 9600 });
port.on(‘data’, function(data) {
dataHandler(data);
}
这个代码非常简单,只要把串口的库拿进来和串口绑定,波特率两边匹配一致就行。然后port会有一个事件,有数据进来的时候进行数据处理。并且要考虑数据丢失的问题,现实中这个问题时有发生,可能做硬件的人深有体会。
const wpi = require(‘wiring-pi’)
const BUZZER = 7;
wpi.setup(‘wpi’)
wpi.pinMode(BUZZER, wpi.OUTPUT);
wpi.digitalWrite(BUZZER, wpi.HIGH);
wpi.digitalWrite(BUZZER, wpi.LOW);
wpi.digitalRead(BUZZER);
上面的代码通常是硬件开发者写代码的方式。先设置工作模式,然后进行数字的写入和读取。用js来写设备端的代码还是需要懂一些硬件,否则效率不会高。
const mqtt = require(‘mqtt’)
const client = mqtt.connect(‘mqtt://’);
client.subscibe(‘/car’);
client.on(‘message’, function(topic, message){
if(topic === ’/car’) {
MessageHandler(message.toString());
}
});
MQTT的部分只要把包引进来,把MQTT的代理地址和ip port之后,要知道小车的控制指令,只需注册一下所有和小车相关的事件,如果有人发了指令给代理,代理就会自动转发给你。
云主机用的是ECS,多了一个公网IP更加方便。数据传输有MQTT。数据存储可以根据数据的类型选择不同的数据库,比如mysql、mongoDB和redis。前端展现是express。主要依赖mosca、mysql、mongo、redis和express,根据不同类型选择不同的数据库进行存储。
Tip
要做一个硬件产品,如果这是一个合格的产品,需要的周期很长。首先要去市场上选型,之后的采购周期要根据订货量大小决定。传感器的供应商并不多,要做比较的话需要采购过来并花费很多时间进行验证测试,这个过程会很长。产品完成后还要评测认证检测,反反复复又需要很久。整个过程就导致硬件的开发周期很长。
MagicLight是一个在亚马逊上销量很好的,用wifi控制的灯。但是我觉得这个灯有一个缺点,就是只能通过手机控制,无法使用墙面开关控制,这是用户体验的一个很大问题。如果要做到开关和手机都能控制,就要做一个联动。
于是有人做了一个开关,可以用手机控制同时也能保持物理结构。但还要保持wifi部分工作的话,就需要有电流通过,要有一个回路。就是在灯即使关闭的时候仍然有电流可通过,wifi的控制电路才能通过,这就是单火线开关的问题,目前还无法解决。
做物联网应用还有很重要的一点就是要满足用户的需求,无论是解决体验问题还是带来一些收益,解决行业内的痛点才是有意义的。
关于华云数据:
华云数据集团专注于为客户提供 “自主、安全、可控”的云计算服务,以帮助用户采用云计算提升IT能力,实现业务变革。华云数据主要面向公司级用户提供定制化私有云、混合云解决方案,同时还可以提供大数据服务、超融合产品、公有云、IDC转云等服务。自2010年成立以来,华云数据不断深入了解公司用户需求和行业特性,是一家追求卓越的云计算服务提供商。
成立八年来,华云数据坚持自主研发,获得了512项知识产权,在私有云、混合云、公有云和超融合领域均通过了相关可信云认证,获得了软件能力成熟度模型集成CMMI5证书,是**课题承接单位、中国十大云计算解决方案提供商。2016年起,华云数据集团连续三年被评为中国独角兽公司; 年5月,进入 “中国大数据独角兽公司TOP20榜”, 年7月,荣膺“中国互联网百强公司”称号,年8月,入围“中国大数据公司50强”。年11月,权威咨询机构发布《年私有云市场各品牌竞争力分析》,华云数据跃入领导者象限,成为中国私有云厂商前三甲。年3月,华云数据宣布对国际领先超融合软件厂商Maxta, Inc.全部资产完成了合法合规收购。
是经工信部审批,持有ISP、云牌照、IDC、CDN全业务资质的正规老牌,自成立至今20余年专注于、、云主机、、公司建站等互联网基础服务!
公司自研的云计算平台,以便捷高效、超高性价比、超预期售后等优势占领市场,稳居中国接入服务商排名前三,为中国超过50万网站提供了高速、稳定的托管服务!先后获评中国高新技术公司、中国优秀、全国十佳IDC公司、中国最受欢迎的云服务商等称号!
目前,高性能云主机正在进行特价促销,最低仅需48元!
注意:现在腾讯云新人点击注册然后实名认证后,可以点此一键领取2860元代金券大礼包,然后点此进入腾讯云活动页面参加腾讯云3年和5年时长主机优惠活动,一次性买多年,免得续费贵,这样就可以获得最大的优惠折扣,省钱。
提示:现在腾讯云新人点击注册然后实名认证后,可以点此一键领取2860元代金券,然后点此进入腾讯云活动页面参加优惠力度非常大的腾讯云3年和5年时长主机活动,一次性买多年,免得续费贵,这样就可以获得最大的优惠折扣,省钱。