物联网电饭锅APP的设计

  • 来源:物联网技术
  • 关键字:OneNET,物联网,电饭锅
  • 发布时间: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

  12 A

  15 A?A?

  18 ABAB

  与APP数据接收一样,调用API服务发送命令给电饭锅,数据结构同样为Json格式。

  (2)在APP选择和点击确认后,OneNET云平台下发命令,电饭锅接收到一串数据包,格式为《设备接入终端协议-EDP》下消息类型的5.7命令请求,该消息由服务器发往客户端,以执行指定的命令。

  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发送的数据包为:

  10 30 00 03 45 44 50 01 40 01 00 00 07 34 30 39 31 37 33 36 00 1C 38 45 78 31 43 43 72 52 4E 59 6F 78 42 4C 6A 32 49 6C 59 57 78 31 30 4A 6E 30 77 3D

  在NetAssist上响应20 02 00 00,OneNET显示在线, APP页面显示设备状态,此时表明连接成功。

  5.3数据发送与接收

  (1)发送与接收余米量。在电饭锅启动和电饭锅煮饭完成后,电饭锅都向OneNET平台返回一次余米量。现假设电饭锅硬件的储米箱米量为1 123 g,根据上文设计的电饭锅数据发送协议,发送的数据格式为“,;rice,01123”。其中,rice是余米量对应的数据流;01123是固定发送的5位数据,因此在1123前添加0,变成01123。

  数据包为:80 10 00 05 00 0C 2C 3B 72 69 63 65 2C 30 31 31 32 33

  在OneNET上的rice数据流中能看到数据01123,表明电饭锅发送数据成功。电饭锅发送余米量后,在APP界面显示接收余米量的数据。

  (2)发送与接收做饭状态。在电饭锅做饭的四个过程中,每个过程完成后都发送其状态,告知APP其状态并显示在页面上。其中,“洗米中”发送“AA”;“洗米完成”发送“BB”;

  “煮饭中”发送“CC”;“煮饭完成”发送“DD”,发送的数据格式为“,;status,AA”。

  以上四种情况的数据包分别为:

  洗米中:80 0F 00 05 00 0B 2C 3B 73 74 61 74 75 73 2C 41 41;

  洗米完成:80 0F 00 05 00 0B 2C 3B 73 74 61 74 75 73 2C 42 42;

  煮饭中: 80 0F 00 05 00 0B 2C 3B 73 74 61 74 75 73 2C 43 43;

  煮饭完成:80 0F 00 05 00 0B 2C 3B 73 74 61 74 75 73 2C 44 44。

  (3)APP做饭命令下发与确认:做饭方式+下米量。根据用户需求和电饭锅硬件条件,输入下米量为3两的倍数即可,现假设为12两,以选择的做饭方式为标准,根据本文设计的数据通信协议,APP命令下发采用重复校验法,发送数据“A

  同时,网络调试助手NetAssist接收的命令如下:

  A0 2E 00 24 66 66 39 30 38 64 37 35 2D 39 63 32 66 2D 35 35 34 65 2D 39 61 64 64 2D 65 31 33 33 37 62 31 65 32 35 33 32 00 00 00 04 41 3C 41 3C

  电饭锅通过对数据进行解析,选取有用的数据:41 3C 41 3C。其他做饭方式和下米量的选择操作方法相同,只要在APP和NetAssist出现以上信息,即表明APP成功对电饭锅下发命令。

  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.

  梁启文,龙世瑜,邓嘉慧,杨金华

  (岭南师范学院信息工程学院,广东湛江524048)

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: