GoKit3(V)学习笔记02_自定义产品数据点
跟着Gokit3使用说明书的教程顺利地让设备跑了起来,家里一下子热闹了起来,玛丽玛丽的声音此起披伏,多多儿还不会讲话,也跟着maaa地叫着。这是GoKit3给生活带来的快乐。
言归正传,这篇开始讲述GoKit开发的第二件事--自定义产品数据点。
## 1 创建产品
在机智云平台创建自己的产品,如下图中我的仓鼠管家:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_1.png
## 2 编辑产品数据点
创建完产品后立即就要编辑数据点了,如下图:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_2.png
我选择基于宠物屋模版去做修改:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_3.png
由于我的项目初期只用到了灯和电机,所以去掉了几个无关的数据点,数据点规划如下图:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_4.png
因此根据规划的数据点,需要对原有的数据做部分调整,如下图是删除不需要的数据点:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_5.png
调整完毕后,点击下一步变生成了对应的串口协议,可以据此来编写GoKit3端的程序了,如下图:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_6.png
## 3 GoKit3代码修改
### 3.1 ProductKey修改
需要将目前创建的产品的PRODUCT_KEY添加到代码中。
#define PRODUCT_KEY "b18743d658f0456499efdc20463b6a13" // "your_product_key"
### 3.2 控制设备的数据点调整
参考《机智云接入串口通信协议文档》中**4.10 WiFi模组控制设备**。
eventProcess中逐个处理issuedData->attrVals,在这里头处理各种外设控制。由于仓鼠管家定义的产品数据点中控制设备的部分与宠物屋一致,因此这部分源码就没有改动:
__packed typedef struct {
uint8_tLED_OnOff:1;
uint8_tLED_Color:1;
uint8_tLED_R:1;
uint8_tLED_G:1;
uint8_tLED_B:1;
uint8_tMotor_Speed:1;
}attrFlags_t;
__packed typedef struct {
uint8_tLED_OnOff:1;
uint8_tLED_Color:2;
uint8_treserve:5;
uint8_tLED_R;
uint8_tLED_G;
uint8_tLED_B;
uint16_t Motor_Speed;
}attrVals_t;
//custom
__packed typedef struct {
attrFlags_t attrFlags;
attrVals_tattrVals;
}gizwitsIssued_t;
### 3.3 设备上报的数据点调整
参考《机智云接入串口通信协议文档》中**4.9 设备MCU向WiFi模组主动上报当前状态**。
由于我们的数据点做了修改,因此需要做部分调整,如下图,对红外、温湿度都进行了注释。
__packed typedef struct {
uint8_tLED_OnOff:1;
uint8_tLED_Color:2;
uint8_treserve_0:5;
uint8_tLED_R;
uint8_tLED_G;
uint8_tLED_B;
uint16_t Motor_Speed;
//uint8_tInfrared:1;
//uint8_treserve_1:7;
//uint8_tTemperature;
//uint8_tHumidity;
uint8_tAlert_1:1;
uint8_tAlert_2:1;
uint8_treserve_2:6;
uint8_tFault_LED:1;
uint8_tFault_Motor:1;
//uint8_tFault_TemHum:1;
//uint8_tFault_IR:1;
uint8_treserve_3:6;//uint8_treserve_3:4;
}devStatus_t;
__packed typedef struct {
devStatus_t devStatus;
}gizwitsReport_t;
## 4 总结
这样就基本上调整好了代码,接着就可以按照http://club.gizwits.com/thread-3378-1-1.html]的编译烧写流程进行程序烧录测试了。
更详细的代码,可以直接到https://github.com/twowinter/OpenHamtaro查看commit记录。
好了,上电之:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_7.png
APP连接显示如图:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_8.png
数据点展示如图:
http://7xkqvo.com1.z0.glb.clouddn.com/open_gokit_an2_9.png
页:
[1]