5、qq物联开发步骤
1.QQ物联开发步骤
1)测试环境无需申请上线,即可任意调试。
意思是什么呢,它是告诉大家,在调试的时候不要点击上面的提交上线,
因为目还在调试此设备,一旦上线,QQ物联官方就会来审核你的设备,
导致延长研发周期,在有十足的把握时,在去提交上线。如果产品已经提交上线,
通过QQ物联官方审核,后续产品的配置页面的修改都需要腾讯审核。
2)测试环境最多有100个设备可以调试,上线之后接入设备的个数就不受限制。
第二小节 配置设备后台
功能配置---》特殊功能
用来定义手机QQ与QQ物联设备两者之间的特殊消息的数据格式
显示类型:只能是QQ物联设备向手机QQ发送用于显示的的数据
控制类型:QQ物联设备与手机QQ可以互传控制消息的数据
控制类型的功能描述{"on":"1","off":"0"}
第三节
每个设备类型在申请的时候就已经固定设备的公私钥对了,每个设备唯一不同的就是SN已经根据SN用设备私钥前面的license,设备公钥在申请的时候已经上传了
第4课第5节 使用datapoint接口来收发手机QQ的数据
1)led驱动和应用程序的测试
make
arm-linux-gcc -o jz2440_led_app jz2440_led_app.c
ifconfig eth0 192.168.1.185
mount -t nfs -o nolock 192.168.1.184:/work/nfs_root/qq_iot /mnt
insmod jz2440_led_drv.ko
./jz2440_led_app
2)lcd界面的绘制
framebuffer\fb.c
FBDeviceInit()---framebuffer的初始化
gui\gui_base.c
GUI_Clear清屏
GUI_SetPixel描点
GUI_DrawHLine画横线
GUI_DrawVLine画竖线
GUI_DrawLine画任意线
GUI_FillRectangle填充矩形
GUI_SetFont设置字体
GUI_PutChar显示字符
GUI_PutString显示字符串
GUI_DrawCircle画圆
GUI_DispNum显示数字
Makefile的二个问题
(1)编译后输出的目标文件是什么?
(2)当前目录要编译那么文件、要编译哪些子目录?
注意:
(1)当前目录要编译的文件、要编译的子目录都由
当前目录下Makefile来决定。
通用makefile的使用
i) 修改顶层Makefile中TARGET
TARGET := 目标文件名
ii)修改各级Makefile中obj-y,添加你所需要编译的文件或者目录
obj-y += xxx.o
obj-y += yyy/
3)使用datapoint接口来收发手机QQ的数据
参考:
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Common_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Custom_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Sync_Status.md
结构体
tx_data_point
// 初始化datapoint
SDK_API int tx_init_data_point(const tx_data_point_notify *notify);
// 上报datapoint数据
// [in] id: 上报的datapoint ID
// [in] value: 上报的datapoint value
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_report_data_point(unsigned int id, char * value, unsigned int * cookie, on_report_data_point_ret ret_callback);
// 应答收到的datapoint
// [in] from_client: datapoint信令来自某个绑定者, 必须和已收到的datapoint时的from_client一致,否则会被过滤
// [in] id: 应答的datapoint对应的ID, 必须和已收到的datapoint的ID一致,否则会被过滤
// [in] value: 应答的datapoint的自定义数据
// [in] seq: 应答的datapoint对应的seq, 必须和已收到的datapoint的seq一致,否则会被过滤
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_ack_data_point(unsigned long long from_client, unsigned int id, char * value, unsigned int seq, unsigned int ret_code, unsigned int * cookie, on_ack_data_point_ret ret_callback);
第4课第7节 使用datapoint接口来收发手机QQ的数据
1)视频演示
ubuntu下:
make clean
make
cp net_bind_detector /work/nfs_root/qq_iot/
sudo cp -rfd res/ /work/nfs_root/qq_iot/
开发板linux下:
ifconfig eth0 192.168.1.185
挂载网络文件系统、复制文件
mount -t nfs -o nolock 192.168.1.184:/work/nfs_root/qq_iot /mnt
cd /mnt
cp -rfd res/ /qq_iot/
cp net_bind_detector /qq_iot/
加载led驱动
cd /lib/modules/3.4.2/
insmod jz2440_led_drv.ko
查看链接库文件
cd /qq_iot/
ls (net_bind_detector依赖于库文件)
ls /lib/libtxdevicesdk*
查看密钥
cd /etc/qq_iot/demo_bind
ls
cat config
网络设置
cd /qq_iot/
route add default gw 192.168.1.1
cat /etc/resolv.conf
ping news.qq.com
cd /qq_iot/
./net_bind_detector
先后输入
sendtextmsg 测试文本的发送
sendpic 测试图片文件的发送
sendaudio 测试音频文件的发送
sendvideo 测试视频文件的发送
注意一下,上面这几个(sendpic、sendaudio、sendvideo)都是
通过tx_send_structuring_msg来发送的。
第4课第8节 使用datapoint接口来收发手机QQ的数据
实际看一下第一个项目net_bind_detector的代码
1)看一下目录
led ---------led的应用程序(很简单)
framebuffer ---------framebuffer底层实现,来自前面的自制gui(已讲解)
gui ---------自制gui(已讲解)
lib ---------腾讯QQ物联SDK的库文件存放位置
include ---------头文件
qq_dev_sdk ---------腾讯QQ物联SDK的头文件存放位置
initDevice ---------设备初始化(已讲解)
DataPoint ---------tx_init_data_point、
tx_ack_data_point、
tx_report_data_point接口的实现
fileTransfer ---------tx_init_file_transfer接口的实现
msg ---------tx_send_text_msg、
tx_send_structuring_msg接口的实现
res ---------存放图片文件、音频文件、视频文件
2)公有功能和特殊功能
公有功能:(腾讯QQ物联团队规定的)
该类产品具有的公有功能。
可以由开发者选择打开或者关闭。
特殊功能:某个厂家自己的产品有一些额外的功能,
可以用“特殊功能”来实现。
特殊功能由datapoint接口来实现:
datapoint的使用方法:
参考:
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Common_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Custom_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Sync_Status.md
TXDataPoint.h中:
结构体
tx_data_point
// 初始化datapoint
SDK_API int tx_init_data_point(const tx_data_point_notify *notify);
// 上报datapoint数据
// [in] id: 上报的datapoint ID
// [in] value: 上报的datapoint value
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_report_data_point(unsigned int id, char * value, unsigned int * cookie, on_report_data_point_ret ret_callback);
// 应答收到的datapoint
// [in] from_client: datapoint信令来自某个绑定者, 必须和已收到的datapoint时的from_client一致,否则会被过滤
// [in] id: 应答的datapoint对应的ID, 必须和已收到的datapoint的ID一致,否则会被过滤
// [in] value: 应答的datapoint的自定义数据
// [in] seq: 应答的datapoint对应的seq, 必须和已收到的datapoint的seq一致,否则会被过滤
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_ack_data_point(unsigned long long from_client, unsigned int id, char * value, unsigned int seq, unsigned int ret_code, unsigned int * cookie, on_ack_data_point_ret ret_callback);
a.LED1_ID ,根据datapoint.value来打开/关闭,tx_ack_data_point
b.LED2_ID ,根据datapoint.value来打开/关闭,tx_report_data_point
c.BRIGHTNESS_ID,根据datapoint.value得到亮度值,tx_report_data_point
d.TEMPER_SWITCH_ID,根据datapoint.value来启动/关闭定时器
其中,启动定时器后,不断的上报数值,tx_report_data_point
为什么需要tx_ack_data_point和tx_report_data_point呢?
答:更新手机QQ的状态
tx_ack_data_point 参数多,复杂一些
tx_report_data_point 参数少,简单
第4课第9节 使用tx_send_text_msg接口向手机QQ发送文本
使用tx_send_structuring_msg接口向手机QQ发送图片文件、音频文件、视频文件
实际看一下第一个项目net_bind_detector的代码
1)看一下目录
led ---------led的应用程序(很简单)
framebuffer ---------framebuffer底层实现,来自前面的自制gui(已讲解)
gui ---------自制gui(已讲解)
lib ---------腾讯QQ物联SDK的库文件存放位置
include ---------头文件
qq_dev_sdk ---------腾讯QQ物联SDK的头文件存放位置
initDevice ---------设备初始化(已讲解)
DataPoint ---------tx_init_data_point、
tx_ack_data_point、
tx_report_data_point接口的实现
fileTransfer ---------tx_init_file_transfer接口的实现
msg ---------tx_send_text_msg、
tx_send_structuring_msg接口的实现
res ---------存放图片文件、音频文件、视频文件
参考:
http://iot.open.qq.com/wiki/index.html#!CASE/Android_TV.md
注意:
msg\text_utf8.c 和
msg\alarm_utf8.c
的编码格式为utf-8.
原因:QQ物联sdk中中文字符的发送,必须使用utf-8格式。
参考:
http://iot.open.qq.com/wiki/index.html#!QA/QA_FileCoding.md
TXMsg.h
//callback: 用于确认消息是否送达了QQ物联后台服务器
typedef void (*on_send_text_msg_ret)(unsigned int cookie, int err_code);
/**
* 接口说明:向手机QQ发送文本消息
* 参数说明:
* msg_id 动态消息ID,请到配置平台进行注册,没有注册过的ID无法送达手机QQ
* text 要发送的文本
* ret_callback 发送结果回调
* cookie 由sdk内部分配唯一值,并会在发送结果回调时回传,用于唯一标识当前调用
* to_targetids 指定发给某些target
* to_targetids_count 指定发给某些target的count,填0表示发送给所有的绑定者
*/
SDK_API void tx_send_text_msg(int msg_id, char *text, on_send_text_msg_ret ret_callback, unsigned int *cookie, unsigned long long* to_targetids, unsigned int to_targetids_count);
/**
* 接口说明:向手机QQ发送结构化消息,每条消息都会有唯一的 cookie, tx_send_msg_notify 用于了解发送状态
* msg:结构化消息
* notify:进度,结果回调
* cookie:返回任务cookie
*/
SDK_API void tx_send_structuring_msg(const structuring_msg *msg, tx_send_msg_notify *notify, unsigned int *cookie);
TXFileTransfer.h
/**
* 初始化传文件
* notify : 回调
* path_recv_file : 接收文件的目录
*/
SDK_API int tx_init_file_transfer(tx_file_transfer_notify notify, char * path_recv_file);
tx_init_file_transfer的目的:
1)手机QQ向QQ设备发送的普通文件、音频文件
5、qq物联开发步骤的更多相关文章
- 国内物联网平台(3):QQ物联智能硬件开放平台
国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...
- 国内物联网平台初探(三) ——QQ物联·智能硬件开放平台
平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用户与设备.设备与设备.设备与服务之间的联动. 实现用户与设 ...
- 4、qq物联SDK介绍及实例讲解
1.到QQ物联官网http://iot.open.qq.com中下载软件SDK S3C2440_20161122_1.6.205_r4288.tar.gz注意:在后续大家实际开发过程中,可能你会下载到 ...
- 2、qq物联环境搭建
1.使用easyopenjtag.openjtag来烧写uboot 2.体验uboot 插讲<网络设置_ping问题解决_远程登录ssh_文件互传ftp> 192.168.1.183 wi ...
- 腾讯物联TencentOS tiny上云初探
2017年中旬曾写过一篇关于物联网平台的文章<微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比>.现在已经过去两年了,物联网的格局又发生了不少的变化.不过针对腾讯来说,其物联 ...
- [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。
ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...
- 物联仓储系统ZigBee组网原理
在嵌入式项目物联仓储系统中,使用cortexM0模拟仓库,cortex-A9模拟服务器,两块开发板之间使用ZigBee技术实现数据接收和发送,本文就介绍一下ZigBee组网的原理和相关步骤. 1.组网 ...
- 关于蜂窝物联技术 NBIoT 的一些观点
背景 SigFox 开始于2009,这项技术对长期作为标准移动电话交互标准的3GPP造成了有力冲击.SigFox 解决了终端设备互联场景下的多个痛点: 1 过于复杂: 2 昂贵的设备: 3 耗电不持久 ...
- Arduino上传数据至贝壳物联并与FPGA进行交互
本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现 ...
随机推荐
- 如何覆盖GCE的DHCP MTU选项
如何覆盖GCE的DHCP MTU选项 在GCE上托管的Linux IPSec隧道不能打开谷歌,这与MTU有关.谷歌管理员认为"改变这个值是一件困难的事情"https://cl ...
- amaze ui各个模块简单说明
amaze ui各个模块简单说明 导航添加依据 http://amazeui.org/css/ 下面内容属学习笔记,如有理解偏差和错误请留言相告,感谢!* =(官网这块写的很详细) 一.基本样式 1 ...
- Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别
首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...
- Android Gson解析json工具类封装
package com.springSecurity.gson; import java.util.ArrayList; import java.util.List; import java.util ...
- Android 如何获取Android RecyclerView滑动的距离
如何获取 RecyclerView 的滑动距离? RecyclerView 虽然有getScrollX() 和 getScrollY(), 但是测试发现这两个函数总是返回0,太无语了.因此想到了下面几 ...
- IFC数据模式架构的四个概念层
IFC模型体系结构由四个层次构成, 从下到上依次是 资源层(Resource Layer).核心层(Core Layer).交互层(Interoperability Layer).领域层(Domain ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper
FileSortHelper的核心功能就是,对文件集合FileInfo排序.FileInfo有若干字段,根据字段定义了4种比较器Comparator.调用示例:Collections.sort(Lis ...
- 洛谷——P1137 旅行计划
https://www.luogu.org/problem/show?pid=1137 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出 ...
- LAMP+YII框架配置中遇到的问题
以下列出了不同问题及答案: 1. 在yii框架中,改动数据库信息,主要有main.php和database.php两个文件. 2. 问题: watermark/2/text/aHR0cDovL2Jsb ...
- TextView -无法调节字体、边框的距离
今天调节一个字体边框距离,结果一直都实现不了,布局如下 <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...