|
|
@@ -1,8 +1,8 @@
|
|
|
## GAgent of Gizwits in RT-Thread使用手册
|
|
|
-### 1. GAgent Package获取:
|
|
|
+### 1. GAgent package获取:
|
|
|
GAgent of Gizwits in RT-Thread是运行在RT-Thread上的机智云接入package,代码已开源在[https://github.com/RT-Thread-packages/GAgent](https://github.com/RT-Thread-packages/GAgent) 上。
|
|
|
#### 1.1 RT-Thread env工具:
|
|
|
-* 强烈推荐使用RT-Thread env工具下载配置Package。env请在`RT-Thread官网`->`资源`->`下载`处获取。
|
|
|
+* 强烈推荐使用RT-Thread env工具下载配置package。env请在`RT-Thread官网`->`资源`->`下载`处获取。
|
|
|
下载地址:[https://www.rt-thread.org/page/download.html](https://www.rt-thread.org/page/download.html)
|
|
|
|
|
|

|
|
|
@@ -12,31 +12,32 @@ GAgent of Gizwits in RT-Thread是运行在RT-Thread上的机智云接入package
|
|
|
|
|
|

|
|
|
|
|
|
-#### 1.2 Package下载:
|
|
|
-* 运行env工具,进入RT-Thread已支持menuconfig配置的bsp目录,如stm32f429-apollo(也可自行配置Kconfig,方法如上文档),运行`pkgs --upgrade`更新Packages list,成功后运行menuconfig命令。
|
|
|
+#### 1.2 GAgent package下载:
|
|
|
+* 运行env工具,进入RT-Thread已支持menuconfig配置的bsp目录,如stm32f429-apollo(也可自行配置Kconfig,方法参照RT-Thread工具手册),运行`pkgs --upgrade`更新packages list,成功后运行menuconfig命令。
|
|
|
|
|
|

|
|
|
|
|
|
* 进入`RT-Thread online packages`菜单,选择`IoT -internet of things`菜单,进入后选中`GAgent: GAgent of Gizwits in RT-Thread`。
|
|
|
* GAgent有`example`和`debug`选项可配置:
|
|
|
> 选中`example`,package内含GAgent运行demo,可通过finsh或msh启动。
|
|
|
-> 选中`debug`,将打印GAgent运行期间日志。
|
|
|
+> 选中`debug`,将打印GAgent运行期间全部日志。
|
|
|
|
|
|

|
|
|
|
|
|
-* GAgent 不断优化升级中,推荐使用`latest`版本。
|
|
|
+* GAgent版本选择:当前GAgent不断优化升级中,推荐使用`latest`版本。
|
|
|
|
|
|

|
|
|
|
|
|
-* GAgent用到的`IoT package`包括`WebClient`、`Paho MQTT`。这2个Packages已被默认选中。GAgent使用了2个`subscribe topic`,所以需要配置`Paho MQTT`中的`Max pahomqtt subscribe topic handlers`为2。
|
|
|
+* GAgent package依赖`IoT -internet of things`中的`WebClient`、`Paho MQTT`这2个package,当GAgent被选中,这2个package已自动选中。
|
|
|
+由于GAgent使用了2个`subscribe topic`,所以必须配置`Paho MQTT`中的`Max pahomqtt subscribe topic handlers`为2。
|
|
|
|
|
|

|
|
|
|
|
|
-* GAgent同时还用到了`security package`中的`TinyCrypt`中的AES加解密,已默认选中。其他加密算法暂时没有用到,可手工关闭。
|
|
|
+* 同时GAgent还用到了`security packages`中的`TinyCrypt`中的AES加解密,该package也被自动选中。其他加密算法暂时没有用到,可手工关闭。
|
|
|
|
|
|

|
|
|
|
|
|
-* 在env工具下输入`pkgs --update`下载Package,等待下载完成后,当前stm32f429-apollo目录下的packages下已经有GAgent及其他相关packages。
|
|
|
+* 在env工具下输入`pkgs --update`下载package,等待下载完成后,当前stm32f429-apollo目录下的packages下已经有GAgent及其他相关packages。
|
|
|
|
|
|

|
|
|
|
|
|
@@ -65,17 +66,16 @@ GAgent of Gizwits in RT-Thread是运行在RT-Thread上的机智云接入package
|
|
|
|
|
|

|
|
|
2.2.4. 获取产品基本信息:
|
|
|
-`Product_key`及`Product_Secret`是2个创建产品的唯一标示,需要在GAgent初始化时输入。
|
|
|
+`Product_key`及`Product_Secret`是2个创建产品的唯一标识,在GAgent初始化时需要输入,请记录。
|
|
|
|
|
|
#### 2.3 `机智云`APP下载:
|
|
|
在`下载中心`->`开发与调试工具`下载`机智云Wi-Fi/移动产品调试APP`
|
|
|
|
|
|

|
|
|
|
|
|
-
|
|
|
### 3. 运行GAgent:
|
|
|
#### 3.1 GAgent example:
|
|
|
-* 如在menuconfig中选中`Enable GAgent Example`,在编译过程中会加入`GAgent Package`包中`example`目录下的`gagent_cloud_demo.c`。该文件完成GAgent初始化,可通过finsh/msh启动运行
|
|
|
+* 如在menuconfig中选中`Enable GAgent Example`,在编译过程中会加入`GAgent package`包中`example`目录下的`gagent_cloud_demo.c`。该文件完成GAgent初始化、参数读取/写入、命令下发等功能,可通过finsh/msh启动运行。
|
|
|
``` C
|
|
|
int gagent_cloud(void)
|
|
|
{
|
|
|
@@ -103,7 +103,7 @@ FINSH_FUNCTION_EXPORT(gagent_cloud, "gagent cloud test");
|
|
|
#### 3.2 GAgent流程
|
|
|
3.2.1 将新产品注册时候`product_key`和`product_secret`填入`gagent_param.product_key`和`gagent_param.product_secret`。
|
|
|
3.2.2. `gagent_param.mac`填入当前产品的mac地址,每个产品下的mac地址不能重复。
|
|
|
-3.2.3. 分别设置`read_param_callback`、`write_param_callback`回调函数,分别对应`读参数`、`写参数`;这2个回调函数必须实现正确的参数读取与写入。
|
|
|
+3.2.3. 设置`read_param_callback`、`write_param_callback`回调函数,分别对应`读参数`、`写参数`;这2个回调函数必须实现正确的参数读取与写入。
|
|
|
``` C
|
|
|
int gagent_read_param(struct gagent_config *param, rt_uint32_t len)
|
|
|
{
|
|
|
@@ -150,13 +150,14 @@ int gagent_write_param(struct gagent_config *param, rt_uint32_t len)
|
|
|
```
|
|
|
|
|
|
3.2.4. 设置`recv_packet_callback`回调函数,该回调为APP下发数据包处理函数。
|
|
|
-1. 数据包协议请参照`2.2.4通讯协议文档`。
|
|
|
+1. 数据包协议请参照`2.2.3 通讯协议文档`。
|
|
|
2. 设备收到APP下发`ACTION_CONTROL`命令完成处理后,需使用`ACTION_REPORT_STATUS`同步状态。
|
|
|
``` C
|
|
|
int gagent_recv_packet(rt_uint8_t from, rt_uint8_t action, rt_uint8_t *kv, rt_uint16_t kv_len)
|
|
|
{
|
|
|
/* please read product protocol */
|
|
|
- uint8_t power;
|
|
|
+
|
|
|
+ static uint8_t power;
|
|
|
|
|
|
switch(action)
|
|
|
{
|
|
|
@@ -169,7 +170,7 @@ int gagent_recv_packet(rt_uint8_t from, rt_uint8_t action, rt_uint8_t *kv, rt_ui
|
|
|
|
|
|
case ACTION_READ_STATUS:
|
|
|
rt_kprintf("ACTION_READ_STATUS\r\n");
|
|
|
-// gagent_cloud_send_packet(ACTION_READ_STATUS_ACK, buf, buf_len);
|
|
|
+ gagent_cloud_send_packet(ACTION_READ_STATUS_ACK, &power, 1);
|
|
|
break;
|
|
|
|
|
|
case ACTION_TRANS_RECV:
|
|
|
@@ -191,7 +192,7 @@ int gagent_recv_packet(rt_uint8_t from, rt_uint8_t action, rt_uint8_t *kv, rt_ui
|
|
|
`int gagent_cloud_send_packet(rt_uint8_t action, rt_uint8_t *buf, rt_uint16_t buf_len);`
|
|
|
|
|
|
#### 3.5 设备发现与绑定:
|
|
|
-设备运行正常后,需要与APP正常绑定后才能通过APP控制设备,初始状态APP绑定设备需确保APP与设备处于同一在局域网,否则APP将无法发现设备,发现设备后点击即可绑定。
|
|
|
+设备正常运行GAgent后,需要与APP正常绑定后才能通过APP控制设备,初始状态APP绑定设备需确保APP与设备处于同一在局域网,否则APP将无法发现设备,发现设备后点击即可绑定。
|
|
|
|
|
|

|
|
|
|