之前的例子中,我们理解了如何通过App Inventor 2(简称AI2)创建安卓App运用,以及如何通过Easy Iot、SIoT等物联网平台实现手机App与掌控板传送大略指令和数据的方法。
还理解了TinyWebDB数据库的用场,以及数据库与物联网平台的差异等知识点。

本次实验将对以上知识进行整合运用,同时新增查询利用“景象API”知识点。
通过AI2创建安卓App运用,访问“景象API”获取城市景象数据并同步上传到TinyWebDB数据库,然后通过Easy Iot物联网平台下发指令到掌控板,实现一键推送景象信息到掌控板。
通过实验,初步理解“API”的观点和用法。
理解API、物联网平台和数据库是物联网系统中的关键要素,它们共同协作,实现设备之间的互联互通、数据的网络和存储、运用程序的开拓和支配等功能,从而推动物联网的发展和运用。

实验目标理解“API”的观点理解“景象API”的用法理解AI2编程访问“景象API”的方法理解掌控板编程访问“景象API”的方法理解整合利用“景象API”、Easy Iot物联网平台、TinyWebDB数据库等技能进行物联网运用开拓的方法实验所需资源

硬件:

天气推送php源码气象API手机一键推送气象信息到掌控板 Webpack

电脑手机掌控板数据线

本文实验所用的台式电脑为Windows7操作系统,手机为安卓系统,掌控板为V2.0版本,数据线为Type-C接口。

软件:

电脑安装Mind+软件

本文实验所用的Mind+软件版本为V1.8.0 RC1.0。

App Inventor 2可视化编程平台

本次实验采取的是App Inventor 2平台的汉化增强版软件WxBit(网址为:https://www.wxbit.com/),本文下面所提到的AI2平台皆指WxBit。

景象API

网址:https://www.tianqiapi.com/

TinyWebDB网络微数据库

本文利用的TinyWebDB网络微数据库网址为:http://tinywebdb.appinventor.space/。

Easy Iot物联网平台

网址:https://iot.dfrobot.com.cn/index.html

API的观点

API,全称运用程序接口,是不同运用程序之间交互的规则和约定的接口。
API的紧张事情是将特定运用程序的功能和数据凑集封装在一起,以使其他运用程序能够轻松地利用它们。
它为开拓职员创建具有不同功能和架构的运用程序之间实现相互通信和数据共享,而又无需访问原码或理解内部事情机制的细节。

API可以使开拓者可以利用现有的功能来构建新的运用程序,而不必从头开始编写所有的代码
常日情形下,API会供应一组定义了如何要求特定功能、数据格式和协议的规范。
开拓者可以根据这些规范来构建自己的运用程序,并通过API向其他系统要求数据或实行特定的操作。

API的类型多种多样,包括网络API、操作系统API、库API等。
网络API用于不同系统之间通过网络通信,操作系统API供应了操作系统功能的接口,库API则是对特定功能的封装和抽象,供开拓者调用。

总之,API是互联网时期中不同软件系统之间进行交互的纽带,它促进了软件开拓的协作和集成,也极大地促进了创新和运用的发展。

景象API的利用方法

景象API是一种许可开拓者获取景象信息的接口。
通过利用景象API,开拓者可以获取特定地点的实时景象情形、未来景象预报、温度、湿度、风速等干系数据,并将这些数据集成到自己的运用程序中,例如景象运用、网站、智能设备等。
也便是说,开拓职员不须要自己去购置气候设备或者开拓气候软件,通过供应景象API做事的网站,按网站定义的数据格式及方法就可以获取想要的景象信息。

供应景象API的网站很多,有免费的,也有收费的,本次实验我们以https://www.tianqiapi.com/网站供应的免费城市实况景象API接口进行详细运用。

浏览器打开“景象API”网站,注册账号并登录

注册成功后,查看自己的appid和appsecret,这是API访的密钥,每条API命令都会用到。

返回网站首页点击“API文档”选择“免费根本实况景象”,查看该接口的“API接口文档”

在利用API之前,开拓职员须要先查看API接口文档,理解API的要求办法和参数,还有相应数据格式等信息。
API常日利用HTTP协议进行数据要求,要求办法紧张有GET和POST两种办法,两者的差异是要求参数是否包含在URL中。
相应数据格式常日为JSON,也有文本、XML等类型。

通过查看API文档,此处“免费根本实况景象”API接口的要求办法为“GET”,相应返回数据类型为“JSON”。
也便是参数信息包含在要求URL中,可以直策应用“要求示例”或“要求示例”加上“&”加特定参数进行数据要求。

利用浏览器测试API效果

此处我们以获取“昆明”景象为例进行测试。
在浏览器输入http://v1.yiketianqi.com/free/day?appid=你的appid &appsecret=你的appsecret &unescape=1&city=昆明。

返回上图数据,解释API运行正常。
JSON 数据格式采取键值对(key-value pairs)的形式组织数据,对照API文档中的“相应参数解释”就很随意马虎解读返回数据的内容了。

在AI2平台编程访问景象API

利用谷歌、QQ、Firefox、Safari等非IE浏览器访问WxBit网站,按提示进行注册和登录,推举利用QQ账号登录。

1.登录AI2P平台(WxBit),新建一个名为“实况景象”的项目,在“组件设计”界面添加以下组件

组件属性设置参考:

Screen1标题设置为“实况景象”;

水平布局1放置“查询城市名称”文本输入框;

水平布局2放置“查询城市景象实况”按钮;

表格布局为7行2列,第一列放置城市、日期、韶光、景象、当前温度、最低温、最高温等7个标题标签,第二列放置对应的数据标签;

水平布局3放置“推送景象信息到掌控板”按钮;

所有可见组件,包括标签、按钮等名称设置为图中组件列表中的名称,字号统一设置为“22”。
标签宽度设置为“A”自动,按钮宽度设置为“F”充满。

下面对3个不可见组件用场及设置做详细解释:

HTTP客户端组件用于访问景象API获取实况景象数据,此处保持默认设置。

MQTT客户端组件用于连接Easy Iot物联网平台,发送指令到掌控板实行获取数据的操作。
做事器URL设置为“iot.dfrobot.com.cn:1883”,用户名称和密码设置为你的Easy Iot物联网平台对应的参数。

网络微数据库组件用于连接和操作网络微数据库。
此处对应的数据库是TinyWebDB,在组件属性设置的做事地址当中填入你的TinyWebDB做事器地址。
经测试,HTTP和HTTPS都能正常利用。

2.切换到“逻辑设计”界面对组件功能和事宜进行编程

在“逻辑设计”界面左侧的“模块”栏中,选中相应的模块就会弹出该模块干系的编程积木,把积木按逻辑组合在一起,就形成了一系列功能和事宜程序。
下面的示例不再详细先容模块来源,除内置模块外,大家可以从积木的名称和颜色上找到它来源于哪个模块。
下面我们按事宜进行编程:

查询指定城市景象程序:此处根据“景象API”文档指定的要求办法及URL参数格式来设定程序。
当“查询城市景象实况”按钮被点击,将“HTTP客户端”网址设置为“http://v1.yiketianqi.com/free/day?appid=你的appid &appsecret=你的appsecret &unescape=1&city=”加“查询城市名称”文本输入框的文本,组成“景象API”文档中指定的URL要求格式。
然后调用“HTTP客户端”实行GET要求。

显示查询到的景象信息并同步到TinyWebDB数据库的程序:上一步GET要求成功后,HTTP客户端组件会得到“景象API”返回的“相应内容”,格式为JSON,内容与API文档中的“相应参数解释”同等,包括城市、景象、温度、风力、空气质量等非常丰富的信息。
但我们这次试验并不须要这么多的数据,以是须要对“相应内容”进行处理。
首先将JSON格式的“相应内容”转换为“字典”格式的变量,便于通过“键”查找对应的“值”。
然后再把对应的“值”赋值到详细景象信息变量,通过标签进行显示,再将景象信息变量上传到TinyWebDB数据库供掌控板访问。
此段程序环绕“HTTP客户端得到文本”事宜展开,包括3个子程序:

上面3个子程序依次运行,实现了景象数据从“景象API”得手机,再到TinyWebDB数据库的流转过程。

推送景象信息到掌控板的程序:此处的推送程序逻辑是通过向“EasyIot”物联网平台发送一个指令,让掌控板吸收到指令后访问TinyWebDB数据库获取景象信息。
在编程前须要在EasyIot平台新建一个“指令”topic。
然后编程在“Screen1初始化”中启用MQTT连接,在“推送景象信息到掌控板”按钮点击事宜中向EsayIot“指令”topic发送“tq”指令。

至此,涉及到该实验的AI2编程已经完成。
本实验中用到的AI2、EasyIot、TinyWebDB等技能在前面的文章中有详细先容,碰着问题可以进行翻阅参考。
下面我们进行程序调试。

3.手机预览运行AI2程序

AI2支持手机预览并运行程序,我们连续利用之前先容过的 “WxBit调试助手”来进行程序调试,运行你手机上安装的“WxBit调试助手”,通过WxBit“预览”菜单下的“连接调试助手”扫码连接刚才编辑的程序。

在“查询城市名称”输入框输入城市名称,点击“查询城市景象实况”按钮,查看手机界面的数据标签信息有没有实时显示城市景象信息。
如果程序运行顺利,下一步通过电脑浏览器登录你的TinyWebDB数据库,点击“数据浏览”查看数据是否同步上传。

点击“推送景象信息到掌控板”按钮,通过电脑浏览器登录你的EasyIot物联网平台,查看“指令”topic是否收到“tg”指令。

至此,手机获取“景象API”数据的App制作完成,你还可以为这个App设置图标,然后把它打包安装到你的手机独立运行。
下面我们将通过Mind+进行掌控板吸收景象数据的编程。

Mind+掌控板编程获取景象数据

现在TinyWebDB数据库已经有了手机上传的景象数据,下面通过Mind+编程让掌控板根据手机指令获取TinyWebDB数据库中的数据,实现一键推送景象信息到掌控板。

1.在Mind+上传模式新建项目并连接掌控板,在主控板扩展库添加“掌控板”,在网络做事扩展库添加“WIFI”、“MQTT”和“TinyWenDB”3项扩展。

2.编程连接WIFI、TinyWebDB数据库和MQTT做事器,通过TinyWebDB积木获取数据库对应标签的值显示在掌控板屏幕上。

TinyWebDB做事器参数对应设置如下:

MQTT做事器参数对应设置如下:

3.根据MQTT指令重新获取TinyWebDB数据信息。

4.将程序上传至掌控板,合营前面制作的App联网测试。

只假如手机上查询到的景象信息,都可以一键推送到掌控板显示,从而让掌控板变成了一个可以远程遥控更新的显示器。
根据本次实验的技能事理,利用性能更加精良的软硬件,可以制作更繁芜,更实用的物联网运用,比如远程广告、宣扬屏等项目。

其实在Mind+的网络做事扩展库中也有获取景象信息的扩展,但功能比较大略,获取的数据也有限,只适宜单机编程显示固定信息。

本实验完全程序和下载地址

掌控板Mind+程序

手机端AI2程序

下载地址:https://gitee.com/inventara/arduino