天天看点

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

合宙4G Cat.1系列低功耗小尺寸模组上市以来,依托Luat便捷的开发特性,已助力不少行业客户实现量产使用,极致性价比广受好评。

也有刚接触物联网的朋友购买网红Cat.1 Air724UG开发板后,还没有明确的开发应用方向。开发板只能等吃灰吗?当然不是。

今天我们将分享树莓派小王子HashJeremy的新作,希望对你有新的启发~

1

相关准备工作

1.1 硬件准备:

  • 一块合宙商城购买的Air724UG开发板
  • 一块LCD屏幕,驱动为gc9106l或st7735或其他
  • 一个speaker(扬声器)
心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

1.2 软件环境:

  • Core版本:Luat_V0014_RDA8910_TTS
  • Lib版本:script_LuaTask_V2.3.2
心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

1.3 功能设计:

  • 从墨迹天气API获取实况天气
  • 将实况天气通过屏幕显示
  • 将实况天气通过语音的方式进行播报

分析可知应该分别使用http、disp、audio这三个模块来实现这三个功能。

1)首先创建一个空文件夹作为工程目录,放入屏幕驱动文件:

color_lcd_spi_gc9106l.lua/color_lcd_spi_st7735.lua

2)创建两个文件:

一个名字为main.lua用来放置一些基本代码,内容如下:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

还有一个文件名字可以自定义,我这里命名为:

getWeatherAndDisplay.lua

在这个文件的开头写下面这一行代码,用来使得文件中的函数在何处都可调用。

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

2

获取天气信息

本文使用阿里云市场免费的墨迹天气API获取天气信息,可通过以下地址0元购买:

https://market.aliyun.com/products/57096001/cmapi023656.html?spm=5176.2020520132.101.7.43247218rReOAl#sku=yuncode1765600000

购买之后,在阿里云控制台的云市场即可找到我们所需的天气API:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

通常获取天气可以通过lbs基站定位得到经纬度,再使用墨迹天气经纬度版本进行天气查询。但为了简化操作,这里使用对应cityID(城市ID)的方式来获取天气情况。

本文进行的是实况天气的获取,通过阅读API的使用说明,可得知以下API信息:

请求方式:Post

请求地址:

http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition

返回类型:JSON

请求参数:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

返回示例:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

掌握了这些信息之后,我们开始写Lua代码中的http部分,通过模块查询天气状况。

不了解http.request接口使用方法的同学,可点击下图学习:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

现在,通过上面了解到的内容来拼接http请求。

由于我们提交参数的方式为表单提交(x-www-form-urlencoded),此种格式的body参数,需要对http.request的head和body参数进行填充。

head参数需要添加[“Content-Type”]=”application/x-www-form-urlencoded”,body参数可使用如下接口httpRequestFormData接口来生成:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

通过上面的接口对请求body的封装,拼接出的http请求代码为:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

设计http回调函数来处理http请求返回的结果。这里需要用json模块来将json字符串解析为lua中的table数据结构。

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

因为天气信息是实时变化的,所以我们将http请求天气的函数放入循环计时器,每五分钟执行一次。

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

3

在屏幕上显示天气信息

本文使用的是驱动为gc9106l的屏幕,所以在main.lua中require了相关的屏幕驱动代码,如果使用其他屏幕可以require相应的驱动文件,文末的代码中提供了相应的下载。

查阅wiki.openluat.com得知需要使用disp相关的API来进行屏幕内容的显示。

相关API为disp.puttext(str,x,y)

创建一个任务用来每分钟更新屏幕显示内容,屏幕显示的天气状况为全局变量WeatherInfo中储存的天气信息。

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP
心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP
心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

4

通过TTS播放天气信息

首先要连接一个扬声器到相关引脚上,在开发板上speaker的两个引脚名字为PAOUTP和PAOUTN。

播放TTS需要使用audio模块,查询wiki得知API相关的用法为:

audio.play(priority, type, path, vol, cbFnc, dup, dupInterval)

根据我们的需求编写TTS代码,播放内容传入到函数中,音量为最大7,不需要回调函数。

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

由于我们需要在http获取到天气信息的时候(每五分钟),通过TTS播放获取到的数据,所以在http回调函数中添加播放内容的代码,正好可以调用上面写好的playTts函数:

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP
心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

- 天气信息语音播报演示 -

5

经验总结、参考资料及源码下载

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

5.1 经验总结:

  • 通过对公众号历史优质文章的学习,可轻松实现各种http的请求方式,接口设计简单,功能强大。
  • 本文只是最基本的disp使用方法,通过界面设计可实现更加多样化的显示效果。
  • 该weather APP功能比较简单,只用到了LuaTask众多模块中的几个。LuaTask还有非常丰富的模块功能以及众多的玩法,有待大家研究。
  • 依靠合宙较为丰富的资料文档可以顺利的找到相关需求的实现方法。

5.2 参考资料:

  • 合宙Wiki教程

    https://wiki.openluat.com/

  • Luat公众号文章

    《必看|如何正确使用http.request接口?》

5.3 源码下载:

http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/attachment/20200612144159052_LuatWeatherApp.7z

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

本文内容将在Luat社区持续更新

【 敬请关注以下链接 】

http://doc.openluat.com/article/791/0

感谢阅览本期内容,欢迎文末留言互动

本期文末最先留言的五位同学

— 将获得合宙商城五折券一张 —

五折券有效期至6月30日

点击公众号菜单“合宙商城”即可使用

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

— 合宙商城超值团购活动进行中 —

心知天气api调用_合宙Luat | 防吃灰秘籍:Cat.1+墨迹天气轻松自制Weather APP

点亮在看,和更多人一起了解物联网

↓↓↓