本帖最后由 阿里云AIoT 于 2019-10-16 14:07 编辑
欢迎前往GitHub下载源码
https://bbs.elecfans.com/forum.php?mod=attachment&aid=ODQ4MzMyfDVjMjZiOWY3NDJjNmEwYTcyMzkwYjQzMGFlZmNhN2YxfDE3MzQ5NTgyNzM%3D&request=yes&_f=.pdf
目录- 运行流程
- 效果展示
- 操作流程
- 源码讲解
- QR扫码部分
- GUI部分
- https client部分
运行流程本示例有如下3个功能:
效果展示
https://ucc-vod.alicdn.com/sv/22fb9c92-16db8e2d3a6/22fb9c92-16db8e2d3a6.mp4
操作流程环境配置使用vscode打开developerkit_app 源码。 源码目录结构
- .
- ├── Config.in
- ├── README.md
- ├── aos.mk
- ├── gui # gui显示,包括进度条、天气界面等
- ├── http # https client应用,包括上报消息到钉钉群,获取天气数据等
- ├── k_app_config.h
- ├── main.c # 主入口函数
- └── qr_decode # 摄像头扫码识别
复制代码
配置更改AOS_SDK_PATH路径
- AOS_SDK_PATH=/Users/xxw/workspace/github/AliOS-Things
- DEPENDENCIES=
- MD5SUM_HEADER=a1a4b53ab917fb4a6cb08289b6007fe0
复制代码
更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。
- ......
- config AOS_SDK_PATH
- string
- default "/Users/xxw/workspace/github/AliOS-Things"
- ......
复制代码
更改 /Users/xxw/workspace/github/AliOS-Things 为你的AliOS-Things源码路径。
更改钉钉群机器人的token更改http/http_request.c中的DINGTALK_TOKEN为你的钉钉群token, 点击这里了解详细说明:
- /* dingtalk token */
- #define DINGTALK_TOKEN ""
复制代码
更改天气api的appcode更改http/http_request.c中的WEATHER_APPCODE为你的appcode, 点击这里了解详细说明:
- /* weather api appcode */
- #define WEATHER_APPCODE ""
复制代码
烧录运行下载烧录并运行,按照配网演示流程即可显示天气界面。其中配网二维码如下:
源码讲解QR扫码部分本demo使用developerkit开发板的摄像头,通过摄像头扫二维码获取到wifi信息,然后连接到二维码。配网二维码中的wifi信息格式为:yunqiwifi&&,比如wifi名称为aiot,密码为12345678,那配网二维码中的wifi信息为:yunqiwifi&aiot&12345678。当
然也可以用网上的二维码生成网站自己生成二维码:https://cli.im/ 。
GUI部分本demo基于littlevGL绘制了简单的UI交互界面,使用了littlevGL如下组件:
其中字体图标和中文字体在Iconfont中生成,也可以到FontEditor里面编辑字体,得到的ttf文件通过littlevGL提供的Font Converter在线工具转化为C文件。
https client部分本示例使用到了AliOS Things 3.0提供的httpc组件,httpc组件支持多种RESTful的API调用,包括GET、POST、PUT、HEAD等,也支持https安全协议。
1. 钉钉群机器人:本示例使用到了钉钉群自定义机器人的webhook功能,当设备上线后,会主动发送消息到钉钉群中,原理就是通过https client发送POST数据到机器人webhook中,就能够在钉钉群中显示相应POST的数据,该数据也支持markdown格式。
了解钉钉群自定义机器人如何运作的可以参考:自定义机器人。
2. 天气API:本示例使用到了阿里云API云市场的天气API:全国天气预报查询、实时天气、24小时天气、景区天气、预报7天/15天【支持高并发】【低延迟】,可以免费调用。请购买该应用(0元免费购买),然后获取到相应的访问appcode:
如何获取CA根证书本示例里面使用的https接口都是安全加密的接口,需要配置CA root证书才能够正常访问这些接口,如何获取https网站的ca证书请参考:导出https网站证书。
|