之前的例子中,我们了解了如何通过App Inventor 2(简称AI2)创建安卓App应用,以及如何通过Easy Iot、SIoT等物联网平台实现手机App与掌控板传送简单指令和数据的方法。但如果单条数据过大或者需要保存、查询特定数据的时候,上述方法就满足不了需求了。本文将围绕TinyWebDB网络微数据库,制作一个上传手机定位信息到数据库,然后通过掌控板连接数据库,查询显示手机定位信息的应用,实现掌控板对手机位置的监控。通过实验,了解数据库在编程中的作用,数据库与物联网平台的区别,以及AI2和Mind+编程连接TinyWebDB网络微数据库的方法。
1. 实验目标
(1) 简单了解数据库的概念、用途和分类
(2) 了解TinyWebDB网络微数据库的特点
(3) 了解物联网平台和数据库的区别
(4) 了解AI2编程连接TinyWebDB数据库的方法
(5) 了解掌控板编程连接TinyWebDB数据库的方法
2. 实验所需资源
硬件:
(1) 电脑
(2) 手机
(3) 掌控板
(4) 数据线
本文实验所用的台式电脑为Windows7操作系统,手机为安卓系统,掌控板为V2.0版本,数据线为Type-C接口。
软件:
(1) 电脑安装Mind+软件
本文实验所用的Mind+软件版本为V1.8.0 RC1.0。
(2) App Inventor 2可视化编程平台
本次实验采用的是App Inventor 2平台的汉化增强版软件WxBit(网址为:https://www.wxbit.com/),本文下面所提到的AI2平台皆指WxBit。学习参考:《App Inventor 2—零代码开发自己的物联网APP》 。
(3) TinyWebDB网络微数据库
本文使用的TinyWebDB网络微数据库网址为:http://tinywebdb.appinventor.space/。
3. 数据库的概念、用途和分类
数据库是一种将大量数据持久化存储在磁盘上,以便随时访问和查询的仓库。数据库的主要用途包括数据存储、数据管理和数据共享。具体来说,它提供对数据的增加、删除、修改和查询等操作,实现对数据的有效管理。它允许多个用户同时访问和操作同一份数据,实现多用户共享数据,提高数据的使用效率。
数据库根据不同标准可划分为多个种类,下面简单介绍数据库的常用分类及代表产品:
根据数据模型分类
关系型数据库:基于关系模型,使用表格形式存储和组织数据。关系型数据库是最常见的一种数据库类型,如MySQL、Oracle、SQL Server、PostgreSQL等。非关系型数据库:不遵循关系模型,使用其他数据模型来存储和组织数据。非关系型数据库近年来得到了广泛应用,如MongoDB、Redis、Cassandra、Couchbase等。
根据部署方式分类
桌面数据库:运行在本地计算机上的数据库管理系统,如Microsoft Access、SQLite等。网络数据库:运行在网络服务器上的数据库管理系统,可以被多个客户端同时访问,如MySQL、Oracle、SQL Server等。云数据库:部署在云服务提供商提供的虚拟机或容器中的数据库管理系统,如Amazon RDS、Microsoft Azure SQL Database等。
根据数据量分类
小型数据库:数据量较小,通常在几百MB到几GB之间,可以使用简单的数据库管理系统进行管理,如SQLite、Microsoft Access等。中型数据库:数据量中等,通常在几十GB到几百GB之间,需要使用专业的数据库管理系统进行管理,如MySQL、Oracle、SQL Server等。大型数据库:数据量非常大,通常在TB级别以上,需要使用高性能的数据库管理系统和硬件设备进行管理,如MongoDB、Cassandra、Hadoop等。
4. TinyWebDB网络微数据库
根据前面的分类标准,TinyWebDB属于小型、非关系型的网络数据库。TinyWebDB网络微数据库是一个轻量级的键值存储数据库,是App Inventor 2平台为开发者提供的一种数据存储和共享解决方案。MIT版的TinyWebDB数据库功能简单,且不容易访问,所以国内爱好者提供了一些替代方案,本文实验用到的就是其中之一。TinyWebDB以键值对作为基本存储对象,开发者可以使用字符串作为键,使用字符串、数字、布尔值、数组等数据类型作为值。TinyWebDB还提供了处理这些键值对的添加、删除、更新和查找等基本功能。使用TinyWebDB,开发者可以简单、轻松的在网络上存储和管理AI2应用程序生成的数据,实现与其他支持TinyWebDB数据库的软件共享数据。
虽然TinyWebDB数据库与Easy Iot物联网平台都具备数据传输功能,但两者的功能和用途有很大区别。TinyWebDB使用HTTP协议,采用了请求-响应模型,客户端发起请求到服务器,并等待服务器的响应。通信使用的是短暂的、无状态的连接,每个请求需要建立和关闭连接。所以TinyWebDB只是单纯的用于网络存储,只有数据写入、存储和查询等基本功能。Easy IoT则是使用MQTT协议,采用发布-订阅模型,设备可以发布(发布者)消息到主题(topic),其他设备可以订阅(订阅者)这些主题以接收消息。通信使用持久的、异步的连接,可实现设备之间的实时通信。所以Easy IoT用于远程管理和控制设备和传感器,实时传收集数据和下发指令,实现设备端和用户端的交互。二者在传输效率和负载,安全性等方面都有较大区别。在构建物联网应用的过程中,可以根据需求单独或共同使用物联网平台和网络数据库。
下面我们从注册TinyWebDB网络微数据库开始本次的编程实验。
打开浏览器访问http://tinywebdb.appinventor.space/,按提示注册单独账号,注册成功后登陆服务器。登陆成功后会显示服务器地址、API参数等信息,后面的编程会用到。
5. 在AI2平台编程连接TinyWebDB数据库
使用谷歌、QQ、Firefox、Safari等非IE浏览器访问WxBit网站,按提示进行注册和登录,推荐使用QQ账号登录。
(1) 登录AI2P平台(WxBit),新建一个名为“手机位置”的项目,在“组件设计”界面添加以下组件
组件属性设置参考:
Screen1标题设置为“手机位置”;
表格布局为4行*2列,第一列放置时间、地址、经度、纬度的标题标签,第二列放置对应的数据标签;
所有可见组件,包括标签、按钮等名称设置为图中组件列表中的名称,字号统一设置为“22”。标签宽度设置为“A”自动,按钮宽度设置为“F”充满。
下面对3个不可见组件用途及设置做详细说明:
位置传感器组件用于获取手机位置信息。组件属性中的时间间隔设置为“10秒”。
网络微数据库组件用于连接和操作网络微数据库。此处对应的数据库是TinyWebDB,在组件属性设置的服务地址当中填入你的TinyWebDB服务器地址。经测试,HTTP和HTTPS都能正常使用。
计时器组件用于获取当前时间,保持组件默认设置。
(2) 切换到“逻辑设计”界面对组件功能和事件进行编程
在“逻辑设计”界面左侧的“模块”栏中,选中相应的模块就会弹出该模块相关的编程积木,把积木按逻辑组合在一起,就形成了一系列功能和事件程序。下面的示例不再详细介绍模块来源,除内置模块外,大家可以从积木的名称和颜色上找到它来源于哪个模块。下面我们按事件进行编程:
获取手机位置事件:
创建时间、地址、经度、纬度4个全局变量,通过位置传感器的“位置被更改”事件,将获取的数据赋值于4个变量。
显示手机位置事件:
在上一步骤自动获取手机位置信息后,通过点击“获取当前位置”按钮,将获取到的位置信息显示在对应的标签上。为简单展示软件功能,此处没有设置数据获取失败的提示信息,当在实验中遇到获取数据不正常,可重启调试助手或App重试。
上传位置信息事件:
用于将获取到的时间、地址、经度、纬度等数据依次上传到TinyWebDB数据库,上传成功后逐项提示“已上传”。本事件之所以使用回调函数逐项上传,主要是因为TinyWebDB数据库的并发能力有限,同时上传不一定能成功。
至此,涉及到该实验的AI2编程已经完成。本实验仅使用了TinyWebDB数据库的数据保存及修改功能,大家可以动手尝试数据库的增加、查询、删除等功能,完整掌握数据库的操作技巧。下面我们进行程序调试。
(3) 手机预览运行AI2程序
AI2支持手机预览并运行程序,我们继续使用之前介绍过的 “WxBit调试助手”来进行程序调试。由于本实验需要使用手机位置信息,在调试前须先打开你的手机定位功能并允许“WxBit调试助手”获取手机位置权限。不同品牌手机界面可能会有区别,但都具备同样的设置和功能。
运行你手机上安装的“WxBit调试助手”,通过WxBit“预览”菜单下的“连接调试助手”扫码连接刚才编辑的程序。先点击“获取当前位置”按钮,查看是否正确显示位置信息。再点击“上传位置信息”按钮,查看是否提示“已上传”。
如果程序运行顺利,下一步通过电脑浏览器登录你的TinyWebDB数据库,点击“数据浏览”查看数据是否上传成功。
至此,一个获取并上传手机位置数据的App制作完成,你还可以为这个App设置图标,然后把它打包安装到你的手机独立运行。详细步骤可参考《App Inventor 2—零代码开发自己的物联网APP》。目前在程序中获取位置和上报位置都是手动点击按钮触发,你也可以尝试用定时器定时触发上述功能,实现自动获取并上传位置数据。
6. Mind+掌控板编程连接TinyWebDB数据库
现在TinyWebDB数据库已经有了手机位置的数据,下面通过Mind+编程让掌控板定时获取TinyWebDB数据库中的数据,实现掌控板自定获取你的手机位置信息。
(1) 在Mind+上传模式新建项目并连接掌控板,在主控板扩展库添加“掌控板”,在网络服务扩展库添加“WIFI”和“TinyWenDB”2项扩展。
(2) 编程连接WIFI和TinyWebDB数据库,通过TinyWebDB积木获取数据库对应标签的值显示在掌控板屏幕上。
TinyWebDB服务器参数对应设置如下:
(3) 将程序上传至掌控板,查看掌控板屏幕信息。
不管是在手机上主动上传位置,还是用定时程序自动上传位置,掌控板都可以每10秒更新显示最新的手机位置,从而让掌控板变成了一个简单的手机定位监控器。
本实验的数据是由手机到数据库再到掌控板,其实掌控板也可以主动向数据库上传数据,比如光线、噪音、按键等信息。手机也可以从数据库获取到掌控板上传的数据,甚至是修改、删除数据库中的数据,这就是数据库的数据管理和共享功能。
7. 本实验完整程序和下载地址
掌控板Mind+程序
手机端AI2程序