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物联开发步骤的更多相关文章

  1. 国内物联网平台(3):QQ物联智能硬件开放平台

    国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...

  2. 国内物联网平台初探(三) ——QQ物联·智能硬件开放平台

    平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用户与设备.设备与设备.设备与服务之间的联动. 实现用户与设 ...

  3. 4、qq物联SDK介绍及实例讲解

    1.到QQ物联官网http://iot.open.qq.com中下载软件SDK S3C2440_20161122_1.6.205_r4288.tar.gz注意:在后续大家实际开发过程中,可能你会下载到 ...

  4. 2、qq物联环境搭建

    1.使用easyopenjtag.openjtag来烧写uboot 2.体验uboot 插讲<网络设置_ping问题解决_远程登录ssh_文件互传ftp> 192.168.1.183 wi ...

  5. 腾讯物联TencentOS tiny上云初探

    2017年中旬曾写过一篇关于物联网平台的文章<微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比>.现在已经过去两年了,物联网的格局又发生了不少的变化.不过针对腾讯来说,其物联 ...

  6. [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。

    ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...

  7. 物联仓储系统ZigBee组网原理

    在嵌入式项目物联仓储系统中,使用cortexM0模拟仓库,cortex-A9模拟服务器,两块开发板之间使用ZigBee技术实现数据接收和发送,本文就介绍一下ZigBee组网的原理和相关步骤. 1.组网 ...

  8. 关于蜂窝物联技术 NBIoT 的一些观点

    背景 SigFox 开始于2009,这项技术对长期作为标准移动电话交互标准的3GPP造成了有力冲击.SigFox 解决了终端设备互联场景下的多个痛点: 1 过于复杂: 2 昂贵的设备: 3 耗电不持久 ...

  9. Arduino上传数据至贝壳物联并与FPGA进行交互

    本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现 ...

随机推荐

  1. android 获取蓝牙已连接设备

    蓝牙如果手动配对并已连接,获取连接的设备: 1.检测连接状态: int a2dp = bluetoothAdapter.getProfileConnectionState(BluetoothProfi ...

  2. 小白算法之路-非确定性多项式(non-deterministic polynomial,缩写NP)

    前端小白的算法之路   时隔多日终于解决了埋在心头的一道难题,霎时云开雾散,今天把一路而来碰到的疑惑和心得都记录下来,也算是开启了自己探索算法的大门. 问题背景 曾经有一个年少轻狂的职场小白,在前端圈 ...

  3. Linux下VsFTP和ProFTP用户管理高级技巧 之一

    Linux下VsFTP和ProFTP用户管理高级技巧       FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问 ...

  4. 获取session中存储的所有值的方法

    记录一个获取系统中session存储的对象都有哪些的方法 HttpSession session = request.getSession(); for ( Enumeration e = sessi ...

  5. GridView-属性大全

    这是个网格控件 他的实现也是通过adapter来实现的,感觉跟listview在使用上并没有多大的区别 常见属性如下 1.android:numColumns=”auto_fit” //GridVie ...

  6. javascript进阶课程--第二章--对象

    javascript进阶课程--第二章--对象 学习要点 理解面向对象的概念 掌握对象的创建方法 掌握继承的概念和实现方法 基本概念 对象究竟是什么?什么叫面向对象编程? 对象是从我们现实生活中抽象出 ...

  7. JSP中使用EL表达式

    EL表达式 :EL 全名为Expression Language,就是为了替代<%= %>脚本表达式. EL主要作用: 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,以从各种 ...

  8. Linux 服务器初始配置步骤

    1.IP配置 vim /etc/sysconfig/network-scripts/ifcfg- BOOTPROTO=dhcp 改成 static ONBOOT=no 改成 yes 添加 IPADDR ...

  9. CISP/CISA 每日一题 20

    CISSP 每日一题(答) What methods can be used to protectmobile devices such as a smartphone? Encryption,GPS ...

  10. Spring.net的Demo项目,了解什么是控制反转

    Spring这个思想,已经推出很多年了. 刚开始的时候,首先是在Java里面提出,后来也推出了.net的版本. Spring里面最主要的就是控制反转(IOC)和依赖注入(DI)这两个概念. 网上很多教 ...