梁启文 龙世瑜 邓嘉慧 杨金华
摘 要:在OneNET云平台的基础上,运用Delphi设计物联网电饭锅APP,并用网络调试助手NetAssist模拟电饭锅,使APP具有远程监控电饭锅状态和余米量的功能,同时可实现远程操控电饭锅自动下米、自动加水、自动洗米、自动煮饭等。该产品具有响应速度快、高效,运行平稳,准确性高等特点。
关键词:物联网;OneNET;Delphi;电饭锅
中图分类号:TP39文献标识码:A文章编号:2095-1302(2019)01-00-04
0 引 言
据调查,市面上最新、最智能的电饭锅的功能与传统电饭锅相比,除常用的预约功能外,还提供了互联网+的煮饭监控。电饭锅定时预约煮饭时,需要事先把大米洗干净并配好水,但大米长时间在水中浸泡影响了米饭的口感[1]。而利用手机APP控制物联网智能电饭锅,可以自动下米、洗米,且此类电饭锅尚未上市。因此,物联网智能电饭锅具有巨大的市场潜能。
1 系统总体结构
系统主要分为APP终端模块、云平台、电饭锅模拟模块三部分,利用TCP/IP网络传输协议实现APP、硬件模拟模块与云平台之间的数据传送与命令下发,其网络拓扑结构如图1所示。在APP确认电饭锅设备在线后,开始工作,远程获得储米箱的余米量,用户可在APP选择下米量和做饭模式,侦测电饭锅做饭的各种状态,直到煮饭完成,其工作流程如图2所示。若离线,则APP无法使用。
与传统电饭锅相比,本文系统多了手机和云平台数据的控制与检测。使用者只需用手机点击APP发送命令,就能实时监控电饭锅的状态。其主要实现步骤如下:
(1)把适量的大米存在储米箱,当普通米缸使用。
(2)家里或工地上的电饭锅通过WiFi模块连接云平台。
(3)在手机APP的主菜单页面查询余米量,选择下米量,点击相应的煮食模式,APP将该功能发送至云平台,电饭锅接收指令。
(4)电饭锅接收到指令后开始动作,且把每个操作步骤和做饭状态反馈至APP,实现电饭锅状态的远程智能化监控[2]。
2 OneNET云平台的搭建
OneNET是中国移动自主研发的物联网开放云平台,全面支持NB-IoT设备接入,提供智能家电行业套件解决方案、视频能力服务和图形化应用开发工具,进一步整合产业链上下游资源,助力物联网生态圈构建[3]。搭建方法如下:
(1)注册并登录OneNET,进入开发者中心界面,点击创建产品选项。产品创建名称为EDP电饭锅,产品行业为智能家居,选择设备接入方式为公开协议,联网方式为WiFi。设备接入协议EDP[4](Enhanced Device Protocol,EDP),使创建的“EDP电饭锅”产品具有上报传感器数据点和接收实时命令的功能。
(2)打开公开协议产品界面,点击EDP电饭锅产品进入产品概况详细页,创建一个新设备EDP1,创建设备成功后,可在此页面获取设备信息:产品ID、用户ID、APIKey、设备接入协议、产品概要分析、设备趋势分析和数据点上传分析。其中,APIKey在设备创建时自动生成,可默认关联任何设备。
(3)利用平台提供的EDPSDK,开展和接入服务器的TCP連接,实现EDP协议,用于上报业务数据点。官方网站的协议说明为《设备终端接入协议-EDP》。若要实时接收业务层下发的控制命令,则需保持EDP长连接,而且利用开放的API接口可自定义实现业务平台。可通过EDP 协议的RESTFUL API操作OneNET提供的资源,如设备增删改查、数据流创建、数据点上传、命令下发等,实现简单调用、快速生成应用[4]。EDP服务器地址域名为jjfaedp.hedevice.com,端口号为876。
3 物联网APP的开发工具
3.1 可视化的集成开发环境
Delphi是Pascal项目的一个分支,基本语言还是Pascal语言[5],核心是Object Pascal的集成开发环境(IDE)[6],其最大优点是作为一个面向对象设计为中心的开发工具,采用图形用户界面作为开发环境,使用类库和IDE,VCL工具编译器,大大提高了开发效率。
3.2 控件与过程
(1)常用控件。Delphi使用VCL可视组件库,在窗体设计器右下方找到组件面板,按组件的不同特点和用户需求分门别类,可选择的控件有TButton,TGroupBox,TExit,TLable,TImage……分别称之为按钮、分组框、文本编辑、标签编辑和插入图片等。StyleBook样式是一种皮肤,也称做“样式”或“风格”,包含很多具有动画效果的动作,增强了用户界面体验[7]。
(2)procedure过程:一类为标准过程;另一类为自定义过程。在本文设计中,中间部分的语句以begin开始、end结束,与C语言编程类似,但procedure过程没有返回值。本文使用的标准过程、自定义过程有表单创建过程、表单结束过程、按钮过程、扫描接收过程、定时器定时使用过程等[8]。
3.3 APP的主要功能
进入物联网电饭锅APP主界面后,可看到有6种做饭模式,其界面显示如图3所示。
(1)检测电饭锅设备状态
当电饭锅断电或未成功连网时,设备状态显示离线;反之,则显示在线。只有电饭锅设备状态显示在线时,APP的整体功能才被启动。侦查设备状态的功能运用了TjsonObject类,获取从OneNET返回的Json数据,提取需要的设备状态Status。
(2)获取余米量,发送下米量
从OneNET云平台获取余米量的数值后,在Delphi的程序中通过Json单元提取需要的字符串(单位:g);为了获得更好的用户体验,把获得的字符串转换成浮点型,再除以500得到以斤为单位的数值。另外,在电饭锅完成煮饭后,OneNET会再次返回储米箱的余米量显示给用户。
硬件模块的生产需求规定:下米量为150 g(3两)的倍数,因此设计下米量的单位为两,用户能直观地输入下米量。若未填写下米量,则米量组的 “发送”按钮会变成灰色不可用,并弹出对话框“is not a valid interger value”提醒用户输入需要煮饭的米量。
(3)选择模式,查看做饭状态
供选择的模式为保温/取消、标准、超快、蒸煮、煲汤、煮粥/稀饭。这些模式综合了市场上各种电饭锅的功能,在硬件水平设施能够实现的基础上设定。
电饭锅的做饭状态为洗米中、洗米完成、煮饭中、煮饭完成。当用户选好做饭模式,填好下米量后,点击“发送”按钮,电饭锅动作、下正确的米量、喷水洗米,进入“洗米中”状态;洗米完成后为“洗米完成”状态;之后电饭锅自动进入“煮饭中”状态,数据上传至OneNET,手机APP定时扫描云平台,监控电饭锅状态,直到进入“煮饭完成”状态。
4 通信协议数据格式
为了实现电饭锅和手机APP通信的数据准确性和设备的精准控制,本文设计了一套完整的电饭锅通信协议,实现无线传感网数据的封装[9]。
4.1 连接请求和连接响应
(1)连接请求是指电饭锅在通电以后,通过一段数据包连接OneNET云设备。
连接请求包含消息头、选项和消息体三部分。选项包括协议名称、协议版本、连接标志、保持连接时间。消息体包含设备ID、鉴权信息,内容均为长度+内容的字符串格式,设备ID必须传递。数据格式如下:
消息类型+剩余字节长度+选项1:协议描述+选项2:协议版本+选项3:连接标志+选项4:保持时间+设备ID字节长度+设备ID+ API字节长度+ API
(2)连接响应是电饭锅连接请求返回的数据,也是OneNET云平台的自带协议。
连接响应报文包含消息头与2个必选项。其中,选项包括1 B响应标志和1 B返回码选项。数据格式如下:
消息类型+剩余字节长度+选项1:标志+选项2:返回码
4.2 电饭锅数据发送和APP数据接收
(1)电饭锅转发数据的实质是向OneNET云平台存储数据。该消息是从设备到云平台发送的数据,由消息头、1个选项和消息体组成,其中选项标志位必填,其他根据标志位选填。消息体选择type=5的数据结构,为自定义间隔字符串格式,消息编号是一个零值。服务器收到此消息后,不会响应一个SAVE_ACK消息。数据格式如下:
消息类型+剩余字节长度+数据结构类型+剩余字节长度+内容(数据固定五位数)
(2)当电饭锅把数据存储在OneNET后,APP在定时器定时扫描的作用下获取变化的数值。APP接收的数据通过调用设备API服务读取,数据结构为Json格式[10]。
4.3 APP命令下发和电饭锅数据接收
(1)APP命令下发的实质是移动终端通过OneNET云平台对电饭锅进行数据透传。本文设计命令下发内容为:煮食方式+下米量。其中,每种煮食选择方式对应的模式见表1所列。
4.4 心跳请求和心跳响应
心跳请求:确保电饭锅和OneNET进行长连接,时间约为2 min,只有消息头,由电饭锅发送至OneNET服务器,数据格式为C0 00。
心跳响应:在心跳请求后,若成功,则OneNET会有响应。该消息从OneNET服务器返回电饭锅,数据格式为D0 00。
在APP电饭锅的程序里,每隔3 min发送一次心跳请求,确保电饭锅与OneNET保持长连接。
5 功能调试与实现
5.1 网络调试助手NetAssist设置
NetAssist模拟电饭锅硬件连接OneNET,根据官网上提供的《设备接入协议-EDP》,设置NetAssist 的协议类型为TCP Client。本地主机地址设置为电脑本地IP地址,远程主机地址设置为EDP服务器IP地址180.230.40.39,端口号为876。若点击连接后对话框变为红亮,则NetAssist連接成功。
5.2 设备状态检测
根据上文设计的通信协议数据格式,电饭锅连接OneNET上的设备号为4091736,APIKey为8Ex1CCrRNYoxBLj2IlYWx10Jn0w=的设备, 因此网络调试助手NetAssist发送的数据包为:
5.3 数据发送与接收
5.4 心跳包
由于电饭锅使用网络调试助手NetAssist模拟,因此无法使用程序控制定时发送心跳请求。在本文设计中,需手动大约2 min发送一次心跳请求,数据包为C0 00,维持电饭锅与OneNET平台的长连接。若确保心跳响应为D0 00,则表明电饭锅长连接能保持,EDP电饭锅设备一直显示在线。
6 结 语
本文借助OneNET平台的EDP协议,设计了基于Delphi的可视化电饭锅APP,完成了传送数据包、分析Json数据、获取Json有用元素的系统设计。通过测试表明,该系统运行稳定,数据传输准确,发生重传的几率低,可应用于对物联网电饭锅的控制。
参 考 文 献
[1]刘意期,彭一航,龙世瑜,等.基于物联网+电饭锅的设计[J].福建电脑,2017,33(9):8-9,14.
[2]朱璟,李世国.物联网环境下的新型智能家电之设计思考[J].包装工程,2010,31(16):70-73.
[3]中移物联网开放平台NB IoT设备接入[OL].[2017-08-03].https://open.iot.10086.cn/bbs/forum.php.
[4]彭小红,邢旭峰,曾宏俊.基于OneNet物联网云平台的智能养殖系统[J].现代计算机(专业版). 2017(31):67-72.
[5]黄毅.基于Delphi的发动机测试系统开发[D]. 合肥:合肥工业大学,2016.
[6] LINSTONE H A, TUROFF M.The Delphi method:techniques and applications [J].Addison-wesley reading, MA, 1975(12):56-58.
[7] VERHAGEN A P, DE VET H C, DE BIE R A, et al. The Delphi list: a criteria list for quality assessment of randomized clinical trials for conducting systematic reviews developed by Delphi consensus[J].Journal of clinical epidemiology, 1998, 51(12):41-92.
[8] POWELL C. The Delphi technique:myths and realities[J].Journal of advanced nursing, 2003,41(4):82-86.
[9]廖勇.统一信息网空间数据通信传输协议研究[D]. 重庆:重庆大学,2014.
[10]于京,詹晓东.一种基于Json格式的生产线数据采集系统模型[J].制造业自动化,2012,34(3):154-155.