收藏官网首页
查看: 22736|回复: 0

[资料] GoKit3(V)学习笔记02_自定义产品数据点

5

主题

17

帖子

108

积分

注册会员

Rank: 2

积分
108
跳转到指定楼层
楼主
发表于 2016-8-28 17:37:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利


跟着gokit3使用说明书的教程顺利地让设备跑了起来,家里一下子热闹了起来,玛丽玛丽的声音此起披伏,多多儿还不会讲话,也跟着maaa地叫着。这是GoKit3给生活带来的快乐。

言归正传,这篇开始讲述GoKit开发的第二件事--自定义产品数据点。

## 1 创建产品  
机智云平台创建自己的产品,如下图中我的仓鼠管家:  



## 2 编辑产品数据点  
创建完产品后立即就要编辑数据点了,如下图:  



我选择基于宠物屋模版去做修改:  



由于我的项目初期只用到了灯和电机,所以去掉了几个无关的数据点,数据点规划如下图:  



因此根据规划的数据点,需要对原有的数据做部分调整,如下图是删除不需要的数据点:  



调整完毕后,点击下一步变生成了对应的串口协议,可以据此来编写GoKit3端的程序了,如下图:  



## 3 GoKit3代码修改

### 3.1 ProductKey修改
需要将目前创建的产品的PRODUCT_KEY添加到代码中。

  1. #define PRODUCT_KEY "b18743d658f0456499efdc20463b6a13" // "your_product_key"
复制代码


### 3.2 控制设备的数据点调整
参考《机智云接入串口通信协议文档》中**4.10 WiFi模组控制设备**。  
eventProcess中逐个处理issuedData->attrVals,在这里头处理各种外设控制。由于仓鼠管家定义的产品数据点中控制设备的部分与宠物屋一致,因此这部分源码就没有改动:

  1. __packed typedef struct {
  2.                 uint8_t  LED_OnOff:1;
  3.                 uint8_t  LED_Color:1;
  4.                 uint8_t  LED_R:1;
  5.                 uint8_t  LED_G:1;
  6.                 uint8_t  LED_B:1;
  7.                 uint8_t  Motor_Speed:1;
  8.         }attrFlags_t;
  9.                
  10.         __packed typedef struct {
  11.                 uint8_t  LED_OnOff:1;
  12.                 uint8_t  LED_Color:2;
  13.                 uint8_t  reserve:5;
  14.                 uint8_t  LED_R;
  15.                 uint8_t  LED_G;
  16.                 uint8_t  LED_B;
  17.                 uint16_t Motor_Speed;
  18.         }attrVals_t;

  19.         //custom
  20.         __packed typedef struct {
  21.                 attrFlags_t attrFlags;
  22.                 attrVals_t  attrVals;
  23.         }gizwitsIssued_t;
复制代码


### 3.3 设备上报的数据点调整
参考《机智云接入串口通信协议文档》中**4.9 设备MCU向WiFi模组主动上报当前状态**。  
由于我们的数据点做了修改,因此需要做部分调整,如下图,对红外、温湿度都进行了注释。

  1. __packed typedef struct {
  2.                 uint8_t  LED_OnOff:1;
  3.                 uint8_t  LED_Color:2;
  4.                 uint8_t  reserve_0:5;
  5.                 uint8_t  LED_R;
  6.                 uint8_t  LED_G;  
  7.                 uint8_t  LED_B;
  8.                 uint16_t Motor_Speed;
  9.                 //uint8_t  Infrared:1;
  10.                 //uint8_t  reserve_1:7;
  11.                 //uint8_t  Temperature;
  12.                 //uint8_t  Humidity;
  13.                 uint8_t  Alert_1:1;
  14.                 uint8_t  Alert_2:1;
  15.                 uint8_t  reserve_2:6;
  16.                 uint8_t  Fault_LED:1;
  17.                 uint8_t  Fault_Motor:1;
  18.                 //uint8_t  Fault_TemHum:1;
  19.                 //uint8_t  Fault_IR:1;
  20.                 uint8_t  reserve_3:6;//uint8_t  reserve_3:4;
  21.         }devStatus_t;

  22.         __packed typedef struct {
  23.                 devStatus_t devStatus;
  24.         }gizwitsReport_t;
复制代码


## 4 总结
这样就基本上调整好了代码,接着就可以按照[GoKit3(V)学习笔记01_搭建开发环境:http://club.gizwits.com/thread-3378-1-1.html]的编译烧写流程进行程序烧录测试了。  
更详细的代码,可以直接到https://github.com/twowinter/OpenHamtaro查看commit记录。

好了,上电之:


APP连接显示如图:


数据点展示如图:





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表