Standard SDK: [RTL8195] QQ物联 – 手机QQ与Ameba相互通讯
QQ物联提供的云端服务可将QQ帐号体系、好友关系链、QQ消息通道及音视频服务等核心能力与设备相连接,不再需要单独的APP, 可通过手机QQ来与设备进行通讯。
Ameba目前已经提供支持QQ物联平台的解决方案,可在http://iot.open.qq.com/wiki/#!SDK/RTOS_SDK_Download.md中看到相关的 Realtek 8711 的库文件。
为方便用户使用,我们同时提供了范例在 v3.4b_patch_qqlink 中。(申请公测账号需要1-3个工作日)
材料准备
- Ameba x 1
- Patch file for QQ-Link: v3.4b_patch_qqlink
QQ 物联准备
可结合http://iot.open.qq.com/wiki/#!CASE/Air_Purifier.md的步骤来完成准备。- 申请公测 进入链接 http://iot.open.qq.com/?from=management,选择“申请公测”,为您的QQ号取得QQ物联的公测资格。公测申请提交到白名单开通,大约需要1-3个工作日时间。
- 配置平台
在白名单开启后,可进入“开发配置平台” http://iot.open.qq.com/ 对设备进行注册及配置。
进入 配置平台 – 设备 之后,点击 添加设备 按钮,填写“设备名称“及选择“设备类型”后即可开始快速注册一个新设备:
完成后,我们已经获得了该产品获得重要信息:pid 和 server key。
点击编辑设置设备的信息
即可开始对设备的相关信息进行设置
1.设备信息
- 设备型号: 您可以自由填写。
- 操作系统: RTOS
- 联网方式: WiFi
- 配网方式QQLink(配合example使用)
- QQLink: 可通过手机QQ将设备配置WiFi网络
- WiFi Router: 设备自行连接WiFi,手机QQ要连接同一WiFi在局域网内搜索设备
- 公钥上传 点击 网页上的”公钥&证书工具下载(Win 7 Only)”链接,然后运行”密钥生成工具”(CreateKeySnLicenceTool),点击下图中的”生成公私钥对”按钮,会在您指定的目录下生成一对非对称密钥文件: ec_key.pem (需妥善保管)和 public.pem。之后点击上传按钮上传public.pem 就可以了。
- 初始化信息
要完成手机QQ与Ameba的对接,需要几个关键信息。PID, SN, LICENSE以及二维码。具体的名词解释可参考http://iot.open.qq.com/wiki/#!FUNC/ExplanationOfTerms.md。
- pid(product id:产品ID) 成功添加设备后即可获得,可在设备配置页面的上方找到。 进入http://iot.open.qq.com,选择相应的设备,点击“编辑”,即可在页面上方获取“设备PID”。
- sn(serial number:序列号) 依然使用生成公私密钥时使用的工具(CreateKeySnLicenceTool),若没有,可到http://iot.open.qq.com/wiki/#!SDK/RTOS_SDK_Download.md的“工具下载”中下载“key_tools” 可选择“使用自有序列号”,序列号格式要求:长度必须是16个字符的字母、数字或者连词符的组合; 也可以选择随机生成。 然后点击下方的“生成SN”,所有生成的SN将会保存至所填的“选择路径”下。
- license(sn对应的认证签名) 生成license时需要使用到“设备信息”中和公钥一起产生的私钥ec_key.pem。 添加私钥,然后点击“生成Licence”,在每个SN对应的文件夹中,就会存有对应license的txt 文档。点击“验证文件签名是否正确”对SN和license进行验证。
- 二维码 每一个SN会对应一个二维码,内容为http://iot.qq.com/add?pid=<PID>&sn=<SN> 您可以到http://liantu.com/或使用其他二维码生成工具来获取二维码。 以“联图网”为例,点击左侧的“网址”图标,输入URL内容,将PID和SN改为对应的值,点击“保存图片”即可获得二维码。
- 下载手机QQ 可以在http://im.qq.com/下载最新的手机QQ版本,支持智能硬件接入的手机QQ的版本为: Android QQ : 要求5.7版本以上 iPhone QQ : 要求5.7 版本以上
范例说明
- 将QQLink patch加入 Ameba project
- 将QQLink patch中的文件添加到SDK对应的位置
- qqlink 文件夹复制到SDK下“\component\common\application”中
- atcmd_qqlink_example.c 复制到SDK下“\component\common\api\at_cmd\”中
- lib_rtlstd.a文件替换SDK中的“\component\soc\realtek\8195a\misc\bsp\lib\common\IAR\lib_rtlstd.a”
- 在IAR中添加相关文件
- 在IAR project中,在“console”文件夹中添加“atcmd_qqlink_example.c” 右键单击“console”文件夹,选择“Add”下的“Add Files”,加入刚刚复制到“component\common\api\at_cmd”中的“atcmd_qqlink_example.c”。
- 在IAR project中,添加“qqlink”文件夹 单击右键,选择“Add”下的“Add Group”, “Group name”为“qqlink”。
- 添加“…\qqlink\ v1.1.101\src”中的C文件以及lib文件到“qqlink”文件夹 右键单击“qqlink”,选择“Add”下的“Add Group”,添加“…\qqlink\ v1.1.101\src”中的所有C文件, 若为芯片为RTL8711AF, 添加“Lib_txdevice_1.1.101_sram.a”; 若为RTL8711AM或RTL8195AM, 添加“Lib_txdevice_1.1.101_sdram.a”
- 将QQLink patch中的文件添加到SDK对应的位置
- 修改相关设定并编译
有四个文档需要修改:
- platform_opts.h ($sdk\project\realtek_ameba1_va0_example\inc)
添加:
#define CONFIG_QQ_LINK 1
关闭“fast reconnect”:#define CONFIG_EXAMPLE_WLAN_FAST_CONNECT 0
关闭“simple config”:#define CONFIG_INCLUDE_SIMPLE_CONFIG 0
- example_entry.c ($sdk\component\common\example\)
在
example_entry()
中添加:void example_entry(void) { ... ... #if CONFIG_QQ_LINK example_qq_link(); #endif ... ... }
- update.c ($sdk\component\common\utilities)
打开WRITE_OTA_ADDR:
#define WRITE_OTA_ADDR 1
- qq_device.c ($sdk \component\common\application\qqlink)
- 将void device_run()中info.product_id = XXXXXXXXX;的 info.product_id的数值改为在QQ物联中您的设备的PID值。
- uint8_t CLIENT_PUB_KEY[] 和uint8_t AUTH_KEY[]的值
需要用到密钥生成工具以及服务器公钥,点击设备编辑页面中的“服务器公钥下载”
下载后打开密钥生成工具,点击“生成共享密钥和客户端公钥”,用记事本打开刚刚下载的服务器公钥,将其复制到“请输入服务器公钥:”中,点击“生成”,即可获得”client_pub_key”和”ecdh_key”.
uint8_t CLIENT_PUB_KEY[] = “client_pub_key”后面的内容, uint8_t AUTH_KEY[] = “ecdh_key”后面的内容
完成如上修改后,点击make,然后将其download到Ameba中。
- platform_opts.h ($sdk\project\realtek_ameba1_va0_example\inc)
添加:
- 使用步骤 1. 如果是第一次使用,Ameba会提示没有“SN/LICENSE”,因此需要用AT commad “ATCQ”将您生成好的一组SN 和LICENSE存入flash。 2. AT commad “ATCQ” 使用方法: 因为license较长,因此将其分为part1和part2两部分存入。您可输入ATCQ来查看其用法。 • ATCQ=sn,xxxxxxxxxx • ATCQ=licensepart1,xxxxxxxxxxxxx • ATCQ=licensepart2,xxxxxxxxxxxxx 3. Reset Ameba, “**********RTOS SDK 1.1.101**********”的字样将会显示,并且Ameba 开始scan channel 4. 将手机连上可连接网络的WiFi,并打开手机QQ(需版本5.7以上)。 5. 在QQ联系人列表中,打开“我的设备”,点击“发现新设备”,准备好Ameba中储存的SN和PID所对应的二维码,用“扫一扫”来锁定设备(二维码的内容为http://iot.qq.com/add?pid=<PID>&sn=<SN>) 6. 扫描二维码后,在添加新设备页面点击“我已确认”,然后输入WiFi的相关信息点击“下一步”进行配置。 7. Ameba在搜索到网络配置信息后,会锁定channel,然后连接WiFi。 8. 配置好后,手机将会搜索到该设备,并提示进行绑定,点击“确认绑定”,即可将设备添加到手机QQ的通讯录中。Ameba的log也会显示“[device_on_bind_status] : Bind status[bound].” 9. 点击“进入设备”可看到显示电量的界面,也可点击右上方的信息按钮,进入聊天模式,example中,ameba会回复用户它刚收到的信息
- OTA 在设备编辑页面选择OTA固件管理,点击”上传OTA包”, 将IAR 编译后的固件上传。固件为ota.bin ($ sdk\ project\realtek_ameba1_va0_example\EWARM-RELEASE\Debug\Exe),并设置版本号为100。 若有更新,将最新的ota.bin上传,并更改版本号为大于100的数值。在手机QQ中,点击设备的“设置”,选择“检查设备更新”,若检测到不是最新版本,可选择“下载更新文件”来升级固件。 在下载没有完成时,可随时点击红色x来停止下载。 下载完成后,手机QQ会显示“重启设备安装更新”,Ameba的log会显示 “Ota download succeed”。 下载完成后,点击“重启设备安装更新” ,再点击“确认”后,Ameba会reset进入新的固件。
Realtek IoT/Wi-Fi MCU Solutions . All Rights Reserved. 使用条款