物联网电饭锅APP的设计
- 来源:物联网技术 smarty:if $article.tag?>
- 关键字:OneNET,物联网,电饭锅 smarty:/if?>
- 发布时间:2019-02-25 16:54
摘要:在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]。
2OneNET云平台的搭建
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.3APP的主要功能
进入物联网电饭锅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.3APP命令下发和电饭锅数据接收
(1)APP命令下发的实质是移动终端通过OneNET云平台对电饭锅进行数据透传。本文设计命令下发内容为:煮食方式+下米量。其中,每种煮食选择方式对应的模式见表1所列。
表1煮食方式及对应的模式
选择方式 模式
标准 A
超快 B
蒸煮 C
煲汤 D
保温/取消 E
煮粥/稀饭 F
在标准模式下发送下米量,使用重复校验法把做饭方式和下米量重复发送两次,保证数据的准确性,其具体发送方式见表2所列。在超快、蒸煮、煲汤、保温/取消、煮粥/稀饭等模式下,下米量的发送亦如此。
表2标准模式下米量的发送
APP下米量发送/两(十进制) 电饭锅接收(十六进制)
3 A3A3
6 A6A6
9 A9A9
