物联网开发技术要素-网络
在把设备连接到物联网服务时,网络是不可或缺的。不仅要把设备连接到物联网服务,还要把设备连接到其他设备。物联网开发使用的网络答题上分为两种:一种是把设备连接到其他设备的网络,另外一种是把设备连接到物联网服务的网络。
用于物联网开发的两种网络
1、把设备连接到其他设备的网络
无法直接连接到互联网的设备也是存在的。我们通过把设备连接到其他设备,就能通过其他设备把这些不能连接到互联网的设备连接到互联网。前面我们介绍的传感器节点和网络正是两个典型的例子。此外,还有通过智能手机把可穿戴设备采集到的数据发给物联网服务这一办法。
蓝牙和ZigBee是两种具有代表性的网络标准。它们是用无线连接的,利用的通信协议也是固定的。这些协议的特征有采用擅长近距离通信的无线连接、低功耗、易于嵌入嵌入式设备等。
要把设备连接到其他设备,除了1对1之外,还可以采用1对N、N对N的方式连接。特别是N对N连接的情况,我们称这种情况为网状网络。
设备之间的网络连接
有一种与网状网络对应的通信标准,名为ZigBee。通过采用N对N的通信方式,设备可以一边接管其他的设备,一边进行远程通信。除此之外它还有一个优点,那就是即使有一台设备发生故障无法通信,其他设备也会代替它来执行通信。
2、把设备连接到服务器的网络
把设备连接到物联网的网络时,会用到互联网线路。3G和LTE等移动线路最为常用。
除了现在Web服务种广泛使用的HTTP和WebSocket协议以外,还有一些专为机器对机器通信和物联网而产生的轻量级协议,如MQTT等。
物联网开发技术要素-物联网服务
物联网服务有两个作用:一是从设备接受数据以及发送数据给设备;二是处理和保存数据。
Web系统的作用
我们来具体看一下这两个作用。
1、数据交换
通常的Web服务会根据Web浏览器发送的HTTP请求发送HTML,然后用Web浏览器显示。物联网开发服务则不采用Web浏览器,而是接受从设备直接发来的数据。设备发来的数据内容包括设备搭载的传感器所采集到的信息,以及用户对设备进行的操作。设备和物联网开发服务的通信方法大致分为两种:同步传输和异步传输。
Web系统和设备的通信
在同步传输的情况下,设备发送数据时会把数据发送给物联网服务。接下来直到物联网服务接收完数据之前,不管设备向物联网服务发送多少次数据,都算作一次传输。反过来,物联网服务在执行对设备的反馈时,则是先由设备向物联网服务发送请求消息,然后物联网服务会响应请求并将信息发送给设备。就这种方法而言,直到设备发送请求之前,物联网服务都不能把消息发送给设备。但是这种方法只适用于不知道设备IP地址的情况,因为就算不知道设备的IP地址,只要设备发送了请求,物联网服务就能把消息发送给设备。
在异步传输中,设备会把数据发送给物联网服务,每发送一次,就算作一次传输。此外,从物联网服务向设备进行传输时,无需等待设备发来的请求,可以在任意时间点执行发送。采用这个方法能在物联网服务规定的任意一个时刻发送消息。但是,物联网服务需要预先知道发送消息的设备的IP地址。
2、处理和保存数据
处理和保存数据的操作包括把从设备接受到的数据保存到数据库,以及从接收到的数据来判断如何控制设备。
从设备接收到的数据不只能用计算机简单处理的数值型数据,根据要实现的内容,还包含图像、语音、自然语言这些很难直接用计算机处理、没有被结构化的数据。我们把这种数据叫作非结构化数据。处理时,有时也会把那些易于用计算机处理的数据从非结构化数据中提取出来,例如把表示图像和语音特征的值提取出来。这些信息会被保存到数据库中。
设备按照所提取数据的判断逻辑来决定反馈的内容,例如基于某个房间的度数据来决定空调的开关状态和目标温度。这些处理和保存的方法大体上分为两种:一种是对保存的数据定期进行采集和处理的批处理,另一种是将收到的数据逐次进行处理的流处理。
保存和处理数据的时机
根据房间的温度变化来调整空调的运转时,从向空调发出指示到温度发生变化,这中间会需要一段时间。这种情况下就适合采用批处理来持续记录每隔一定时间的温度值,并定期执行处理。此外,如果希望回到房间之后再打开空调,那么就适合采用能立即执行操作的流处理。
物联网开发技术要素-数据分析
前一节我们以“温度传感器和空调运转的关系”为例进行了说明。那么我们能像这个例子那样,轻松实现根据房间温度控制空调这一目的吗?
要实现这一目的,需要决定控制空调开/关的房间温度值,也就是决定温度的阈值。这种情况下,阈值会根据使用者目的而有所不同。举个例子,把空调的功耗降到最小所需要的阈值和保持令人体感舒适的温度所需要的阈值就是两个不同的值。此外,为了能准确判断房间里有没有人,需要从多个传感器的值所包含的关联性来判断人再或不在房间里。人类很难光凭经验去摸索和决定这种值。这就凸显出了数据分析的重要性。
数据分析的代表性方法有两种,分别是统计分析和机器学习。
数据分析的两种方法
1、统计分析
统计分析是用数学手法通过搜集到的大量数据来明确事物的联系性的方法。比如为了实现给空调节能的目的,我们调查了空调在某个固定的温度下运转时,房间的温度和空调的耗电量,并将这些数据制成了表格。
空调的电力和室温的关系示例
从这个关系中可以推导出在室温下把空调温度设定在多少才能嘴省电,由此就能决定阀值了。
2、机器学习
统计分析基于大量数据之间的联系,明确当前数据间形成的关联。机器学习则不仅仅能进行分析,还能预测今后的发展状况。
机器学习就如它的字面意思一样,计算机会按照程序决定的算法,机械性地学习所给数据之间的联系性。当给出未知数据时,也会输出与其对应的值。
机器学习分为两个阶段:学习阶段和识别阶段。在学习阶段,一个名为学习器的程序会基于一些训练数据,机械性地掌握这些数据之间的联系。作为学习阶段的结果,计算机会根据机器学习的算法输出参数,然后以这个参数为基础创建叫作鉴别器(discriminator)的程序。只要把未知的数据给这个鉴别器,就能输出最合适这个值的结果。
机器学习示例
举个例子,假设我们想使用若干种传感器来识别房间里有没有人。这种情况下需要准备两种数据,即房间里有人时的传感器数据(正面例子)和房间里没人时的传感器数据(反面例子)。计算机通过把这两种数据分别交给学习器,可以获取制作鉴别器用的参数。对于以参数为基准制作的鉴别器而言,只要输入从各个感测设备接收到的数据,鉴别器就能输出结果,告诉我们现在房间里是否有人。
上述内容属于机器学习的示例之一,被称作分为问题。在用于执行数据分类的机器学习算法中有很多途径,如用于垃圾邮件过滤器的贝叶斯过滤器和用于分类文档及图像的支持向量机(Support Vector Machine,SVM)等。此外,除了分类问题以外,机器学习还能解决很多领域的问题。