区块链技术丛书
点击查看第二章
基于区块链的物联网项目开发
Hands-On IoT Solutions with Blockchain
[巴西]马克西米利亚诺·桑托斯(Maximiliano Santos)
埃尼奥·莫拉(Enio Moura)著
董宁 王冰 朱轩彤 译
第1章
了解物联网并在IBM Watson物联网平台上开发
当今世界,计算机能够处理难以想象的数据量,任何人都可以生产和销售自己的设备。正因为如此,物联网(Internet of Things,IoT)已经成为当前商业环境中的一个热门话题,人们之间的联系也比以往任何时候都更加紧密。
在本章中,你会看到物联网是如何改变游戏规则的,物联网产业可以做些什么。我们将研究如何在物联网世界中起步,了解IBM物联网平台特点,并学习如何利用该平台创建自己的物联网解决方案。
本章将讨论如下主题:
- 物联网技术。
- 物联网通用案例。
- 物联网技术要素。
- IBM Watson物联网平台特性和功能。
- 在IBM Watson物联网平台上创建物联网解决方案。
1.1 什么是物联网
有很多关于物联网的定义,网络上常见的文章通常都认为它是一组通过互联网连接的各种事物,包括人、物体、计算机、电话、建筑物、动物等。
物联网这一术语是自嵌入式系统能够连接到互联网以后才开始使用的。物联网的范围也在不断扩大,从电脑、移动电话,到智能手表、恒温器和冰箱,甚至包括整条生产线。
DIY群体进一步深化了这一变革,在世界范围内,你会发现多种通过物联网搭建的原型系统,如Arduino、Raspberry Pi以及其他芯片系统,它们价格更低廉,编程语言对用户更为友好,甚至支持图形编程。
例如,冰箱互联有哪些优点?物联网技术使得制造商能够了解用户行为,判断用户从上午9点到下午6点不在家,因为在这个时间段,冰箱门连续一个月都没有打开过。如果可据此对冰箱程序进行重新编程以减少在此期间的能耗,会怎样?如果同一家制造商查看所有此类用户数据,会怎样?结论是,通过深入了解不同群体每天如何与冰箱互动,并据此创建新的模型,这种解决方案在环保、定制化和经济性方面更具优势,而且还可以据此更新冰箱软件,使其更智能,而不必重新购买新软件。
在这种大的背景下,苹果公司也发布了HomeKit和HealthKit等物联网方案实施框架,这些框架的设计都是针对不同的应用目标,但其原理大同小异,都是通过事物互联来实现各种应用。
例如,人们可以将门窗感应器、照相机、恒温器、灯泡和锁等物体连接到互联网,然后使用iPhone上的HomeKit等APP在世界任何角落控制它们。这样就可以在回家的路上自动启动恒温器,或者当你在外面的时候能收到诸如开门之类的通知,它甚至可以通过与体重秤相连,告知你每天的体重。Google、亚马逊和其他公司也推出了类似实施框架。
IBM Watson 物联网平台区别于以上实施框架的是,它并不提供具体的应用,而是侧重于提供一个安全的、可扩展的、可靠的平台,作为设备和应用之间的桥梁。
1.2 物联网通用案例
冰箱是物联网在家用电器领域应用的典型案例,在本章中,我们还将讨论其他几个比较成功的物联网应用案例。
1.2.1 车互联
从自动驾驶汽车来看,汽车制造商可通过车互联了解司机驾车习惯,据此提升自动驾驶系统的人性化及安全性。
从厂商角度来看,车互联还可以提前检测出问题组件,从而提前召回,提升顾客满意度,同时降低问题组件生产成本;从车主角度来看,车互联可以监测汽车零部件磨损情况,并降低维修费。
1.2.2 人互联
人们在运动时,可通过智能手表来监测自身健康状况。存储和分析这些数据,可为医学研究提供依据,据此预测疾病,改善生活质量。
此外,健康设备互联(如体重秤、心脏监测仪和血压计)并使用区块链技术共享数据,可为每人建立统一的医疗报告。医生利用这些数据,可提升诊断准确性,也使疾病分析预测成为可能。
物联网还在2016年里约热内卢奥运会上发挥了重要作用。比赛中使用了许多互联设备来采集运动员运动过程的身体信息,利用这些信息可随时跟踪运动员比赛过程中的身体异常状况。也可据此研制或改进体育装备,例如自行车等,并研发新的体育项目。
以上实例说明,物联网将彻底改变我们的生活方式,我们应该对此更加关注。
1.3 物联网技术要素
物联网解决方案的实现需要一组要素,而不是仅仅依赖某些设备和应用就能实现。这些要素可为公司和员工提供更多价值。在本节中,我们将讨论这些要素中的一部分,如设备、硬件和软件,这些对于设计和实现有效的物联网解决方案至关重要。
1.3.1 设备
设备处于物联网解决方案的边缘,事实上,这些设备就是我们物联网中提到的事物,这些事物通常可以发送和接收数据信息。
举个例子,嵌入式土壤水分探测仪可监测土壤湿度,当湿度降至43%时,该设备会向其连接的平台发送报告,该平台存储数据的同时进行判断,并向该设备发送打开水阀的指令,以恢复土壤湿度。当然,这种交互还涉及设备相关的其他方面,这将在接下来的部分中讨论。现在,我们先看一下设备部分。
这里的设备是具有模拟或数字(或两者兼备)处理能力的计算单元,通过探测仪和执行器读取和写入模拟和数字信号来实现交互功能。
模拟信号是一种可以在一定范围内变化的信号。以Arduino Uno板为例,它有一个10位分辨率的模数转换器(ADC),这意味着它可以读取0~5V之间的电压,并将它们映射到0~1 023之间的整数值(210 = 1 024)。模拟信号通常用于读取模拟传感器的据。
数字信号是二进制信号,只有两个可能的值:0或1,高或低。这种信号主要用于识别或改变开关状态,例如,打开或关闭LED灯泡。
1.3.2 边缘计算
设备还可以自行处理一些简单任务,例如,在土壤湿度低于50%时,打开水阀1分钟,5分钟之后再检查一次土壤湿度。
也可处理一些复杂任务,例如,确定一辆无人驾驶汽车的摄像头拍摄到的某个物体是等待过马路的行人还是一棵树。
必须获取和分析这类信息的设备不能总是依赖于网络或应用程序,如果其中一个出现问题,整个系统就会失灵。
为此,人们为这类设备提供了一种不同的能力,叫作边缘计算功能,即在解决方案的边缘(也就是设备自身)分析处理的能力。边缘计算允许设备在“脱机”状态下执行一些操作和计算,而不需要与网络连接。
设备是物联网解决方案的重要组成部分,在选择使用哪类设备时,最好的办法就是确保设备本身具备所有功能。
但由于一个物联网解决方案涉及的设备数量非常多,如果设备设计过于冗余,又会引发项目成本、耗电、连接协议、用户体验甚至解决方案复杂性等问题。
1.3.3 网络
将这些设备连接到互联网是物联网解决方案的另一重要因素,如何连接就变得至关重要。现在普遍使用的网络标准是无线(Wi-Fi)或有线网络、蜂窝/移动网络、LPWAN和LoRa。这些网络标准各有利弊,具体如下。
1. Wi-Fi或有线网络
Wi-Fi(无线)是互联网上最常见的标准通信模式,它假设互联物体能够连接到IEEE 802.x网络,因此能够处理基于IP的网络。
市场上有许多具有Wi-Fi功能的设备,如ExpressIf ESP-8266和ESP-32模块、Texas Instruments CC3200、Microchip ATSAMW25、Intel Edison和Galileo等。当然还有许多其他组合,它们整合了Wi-Fi控制器和微控制器(MCU)功能。
Wi-Fi模块相对便宜,特点是能够支持较高有效载荷传输,其可靠性较高,连接速度高达6.7 Gbps。
下图为基于Wi-Fi的物联网解决方案示例:
多个设备可以连接到一个节点,例如路由器上,路由器再连接到互联网,并允许连接到路由器上的设备访问互联网。
2. 蜂窝/移动网络
移动电话使用的网络连接即是蜂窝网络。这种网络的基本思想是将一个大的区域划分为多个小的区域,每个小区域都有一个由基站和多个收发器组成的无线网络连接,可提供语音、文本和数据传输等服务。
如果某解决方案中的设备处于Wi-Fi网络覆盖范围之外,例如汽车中,这种情况下可以使用移动网络。如果解决方案不能依靠用户的网络,例如,你使用的设备需要付费订阅且设备的使用依赖网络链接,那么这种情况下也需要使用移动网络。当使用付费订阅网络时,即使用户禁用网络连接,设备也可继续工作。
下图描述了标准移动网络工作情况:
从上图可见,移动天线向一定区域提供信号,范围内的设备可通过无线网络连接到移动天线,并使用移动服务提供商提供的互联网连接等服务。
3. LPWAN
LPWAN(低功耗广域网)属于无线网络的一种,适用于远程、低比特率、数据传输量较小的网络环境。
LPWAN主要使用低功耗、低比特率和低频设备,但在连接到事物时网络会变得非常强大。这是因为它使用的是长效电池和低功率设备。但也有许多限制,例如每天对有效载荷或传输的消息有一定限制。
较低的频率使得LPWAN非常可靠并且对干扰不敏感,甚至在大范围传播信息时也是如此。LPWAN提供商通常限制网络中的信息数量。有很多LPWAN提供商,其中最有名的大概是Sigfox。
LPWAN没有从设备或网关到互联网的直接连接。相反,它们通常有预先准备好的网络,网络的一端是设备,另一端则拥有许多Web hook和功能,你可以在这一端连接到你的应用或平台:
与移动网络不同的是,LPWAN网络不提供到设备的互联网连接,而是提供方法创建从设备向网络发送的事件的触发器。举个例子,你可以在LPWAN 供应商网络的“边缘”创建一个应用和一个链接到互联网的触发器,这样无论何时从一个设备收到数据触发事件,它就利用从设备发布的事件中得到的数据调用一个互联网上的可用服务。
4. LoRa或LoRaWAN
LoRa网络图类似LPWAN网络,除了不使用服务提供商基础设施之外,LoRa网络可以有一个允许设备连接到互联网的网关。负责LoRa网络基础设施的人是网络的所有者,这意味着不依赖网络服务提供商就可以创建自己的网络:
有几种技术与LoRa的模型相同,具有不同的协议,例如ZigBee。Phillips Hue使用同样的方法将灯泡、LED条纹和其他Hue设备连接到ZigBee网关,然后再将ZigBee网关连接到Hue云。
5. 网络小结
总之,当选择网络连接时,下表可作为参考:
1.3.4 应用程序协议
物联网解决方案确定了最合适的设备后,下一步就是确定用于与设备通信的协议。物联网解决方案倾向于使用轻量级协议,如MQTT等。这不是唯一可以在物联网中使用的协议,但是由于IBM Watson物联网平台依赖于MQTT和REST,而且REST非常流行,下面看一下MQTT。
MQTT
MQTT代表消息队列遥测传输。它是一种基于发布和订阅模式的极其轻量级的消息传递协议。与任何消息队列模型一样,它是一个异步协议。
如下图所示,发布和订阅(pub/sub)模型依赖于三个要素:
这三个要素情况如下:
- 发布者是生成任何内容并将其发布到指定主题的参与者。
- 订阅者是事件使用者。订阅者订阅其感兴趣的主题,并在发行者每次为其订阅创建发布时获取发布的事件。
- 代理负责接收发布物并将感兴趣的主题通知订阅者。
现在让我们继续讨论下一个重要的技术元素。
1.3.5 分析与人工智能
在物联网解决方案中分析软件或人工智能软件组件并非不可缺少,但如果使用它们处理从设备收集的数据,则可提前预警设备故障,也可更好地理解用户行为等。
例如,通过一组节能洗衣机捕获的数据可能会发现,该设备能耗比想象中要多。根本原因是由于缺乏润滑剂,因为现有润滑剂量对于非热带国家的发动机是不够的。
据此,再将这些信息与销售数据一并分析,发现大约8个月前欧洲售出了100万台此类洗衣机。对于洗衣机制造商,可从洗衣机必须更换备件的早期运费中获益;还可以为其供应商提供润滑剂需求预测数据;也可根据此数据分析进行新产品设计。
1.4 IBM Watson物联网平台特性
IBM Watson物联网平台是连接各类应用、设备、网关、事件处理和管理任务等物联网解决方案的纽带,它支持REST和MQTT协议,可以在IBM Cloud平台(以前的IBM Bluemix)上使用。IBM Cloud平台是一个基于Cloud Foundry和Kubernetes的云平台。
本节我们将讨论IBM Watson物联网平台的以下主要特性:
- 仪表盘。
- 设备、网关和应用。
- 安全性。
开始啦!
1.4.1 仪表盘
当访问IBM Watson物联网平台时,将首先看到商业智能仪表盘。这个仪表盘可以由许多仪表盘和卡片组成,为物联网解决方案提供了一些可视化形式:
研究一下这个屏幕上的仪表盘和卡片,以熟悉界面。
1.4.2 设备、网关和应用
该平台中的另一个功能是设备管理控制。这一功能可以创建和删除设备、网关、应用和设备类型,还可以对设备进行检查和启动操作,例如固件升级请求或重置:
你还可以创建API密钥,以便其他应用可以连接到物联网,并与解决方案的其他组件进行交互。
1.4.3 安全性
还可利用IBM Watson物联网平台保障解决方案的安全性。包括创建设备连接策略、设备IP地址白名单和黑名单,或者查看一些国家的相关规定。你还可以对物联网解决方案管理员进行授权。
1.5 创建你的第一个物联网解决方案
本章前几节没有对设备和应用进行深入剖析,要理解它们在物联网解决方案中的作用,还需要举些例子。
这里的场景是,有一台设备连接到IBM Watson物联网平台,设备发送时间戳作为数据,还用到一个应用,该应用使用Node.js将数据打印到stdout:
改进一下,在解决方案中增加一个网关,如下图所示:
总而言之,网关连接与设备连接的不同之处在于,你可以使连接到物联网平台的设备更加抽象化或专业化,是否增加网关还要取决于这样做是否能够使解决方案更简单、成本更低或者带来其他便利。
1.5.1 创建网关
创建网关的首要任务就是创建一个物联网机构。如果你没有IBM ID和IBM Cloud账户,注册过程也非常直观,只需几分钟。如果你已经拥有IBM ID和IBM Cloud账户,请访问http://bluemix.net的IBM Cloud平台。首先,登录并为本书中的练习创建一个新空间。
登录到IBM云平台并访问指定空间后,选择Creat resource选项以访问服务目录:
在菜单中选择Internet of Things,并创建一个名为Internet of Things Platform的服务,然后选择Create选项:
创建完成之后,选择Launch 选项,访问这个物联网平台:
此物联网平台网址是:https://xxxxxx.internetofthings.ibmcloud.com/。
这里,xxxxxx是你的机构ID,整个过程中都要使用它。
1.5.2 创建应用
创建应用就是允许实际的应用或服务连接到指定的Wastson物联网平台机构。
- 为了做到这一点,可以通过IBM Cloud仪表盘访问物联网平台,从旁边的菜单选择App,然后选择Generate API key,在Description字段填写:Hands-On IOT Solutions with Blockchain-Chapter 1 App。最后,单击Next:
- 在下拉列表中选择Standard Application,并单击Generate Key。你将获得一个API密钥和身份验证令牌。以表格形式记录这些内容,如下所示,因为你需要使用这些信息才能连接到应用程序:
- 接下来,打开首选项的IDE,创建一个新的Node.js项目,并安装ibmiotf程序包:
- package.json文件大致如下所示:
5.现在,创建一个名为应用application.json的文件,内容如下:
6.创建一个名为index.js的文件,并添加以下内容:
7.通过运行npm start命令来测试应用:
祝贺你,你刚创建了连接到IBM Watson物联网平台的应用。
8.现在,更新index.js,使其具有以下内容:
现在,每当设备发布事件时,都会将事件打印到stdout。在下一节中,我们将创建一个设备来发布事件。
1.5.3 创建设备
在本节中,你将执行类似的步骤,创建一个连接到IBM Watson物联网平台并发布事件的假设备(fake device)。
- 按照安装步骤创建物联网平台服务,在菜单中选择Devices,然后选择Add Device。创建名为DeviceSimulator的设备,并在Device ID字段中填写DeviceSimulator01。
- 因为它只是一个模拟器,所以只需单击Next,直到你到达向导的末尾:
3.注意生成的设备凭据格式如下:
- 回到你喜欢的IDE,并创建与以前的应用基本相同的项目:
- package.json文件如下所示:
- 创建一个名为device.json的文件,内容如下:
- 创建一个名为index.js的文件,并添加以下内容:
- 可以通过运行npm start命令来测试设备模拟器:
- 现在,更新代码,将具有当前时间的事件发送到物联网平台服务:
- 再次运行npm start,每2秒设备将发送一个事件到Watson联网平台。你可以检查应用的日志,看看它是否收到了事件,如下所示:
再次祝贺你,你的设备模拟器现在正在发布事件,你的应用正在接收它们!
1.6 小结
在本章中,我们概述了物联网环境,学习了物联网解决方案技术要素,还研究了不同类型的网络特点、选择设备时需要注意的重要事项,以及如何创建连接到IBM Watson物联网平台的设备和应用。在下一章中,我们将通过创建一个简单花园浇水系统来提高开发技能。
1.7 补充阅读
可以在IBM Watson物联网平台文档中查阅使用其他语言,如Python、Java、C++和C#的案例,链接为:https://console.bluemix.net/docs/services/IoT/getting-started.html#getting-started-with-iotp。