1、创建阿里生活物联网云平台
要接入平台首先要在里创建好项目,目前说是免费的,然后就是创建新产品,首先就从灯开始。创建过程可以参考另一篇博客
在创建中有四个部分
1.1功能定义
这个部分的预设功能特别多,由于我现在只想用普通的发光二极管来当灯泡所以删除了其他所有功能,并且增加了一个自定义功能,整了三种颜色,所以对灯的操作就只要调开关以及调颜色两种。
1.2设备调试
这个部分主要就是先创建好一个调试设备,得到这个设备的三元组,再加上产品本身的Product Key构成四元组,稍后将会用于配网。创建好调试设备后,可以在调试设备内获取相关的调试信息,我主要用到的有服务调用和在线调试
当然,设备还没接入前是没用到的
1.3人机交互
到这里先要选择好你想要的app样式(反正都长一样),由于没有那些花里胡哨的功能,即使选了默认的花里胡哨操控界面也显示不出来,所以我自己自定义了个界面,把调颜色功能加上去。
接下来先下载公版app,注册登录然后把下面的几大项都设置好,默认的就行,旁边还有个配网二维码下一步配网需要用到。
第四部分省略
2、接入linkkit
要想使嵌入式设备接入阿里云平台,需要在设备上配置好link kit,参考了一些博客,核心是这两篇:
https://blog.csdn.net/weixin_45227503/article/details/91491737
https://blog.csdn.net/toopoo/article/details/88758872
首先linkkit接入需要linkkit sdk,不过在alios things中已经预设好了,所以直接在alios things中的示例代码中捣鼓就好了。而无需去额外下载linkkit sdk。
首先是在alios studio里左下角的
设置好,然后此时编译器就会将app/example中的linkkitapp作为编译目录,这里面是linkkit的示例代码,包含了连接wifi相关代码,我们需要做的就是定制部分代码让其为我们所用。
首先是设置好配网的四元组,用来验证确认板子身份,将其填入linkkit_exmaple_solo.c开头的宏定义中,然后就是在app_enrty.c的主函数代码最后加入配网的函数do_awss_active()即可,其他博客在这里加了个定时两秒,此时如果直接编译烧录就可以直接配网成功了,不过在此之前先设置好设置命令的处理为好。
处理云端下发指令的函数是user_property_set_event_handler,在这个函数中,我们需要解析云端下发的Json数据,得到其中的set指令,并且向串口和云端发送一些response,我的代码如下
static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{
int res = 0;
cJSON *root = NULL, *item_LightSwitch = NULL, *item_color = NULL;
char property_payload[30] = {0};
EXAMPLE_TRACE("Property Set Received, Request: %s", request);
/* Parse Root */
root = cJSON_Parse(request);
if (root == NULL || !cJSON_IsObject(root)) {
EXAMPLE_TRACE("JSON Parse Error");
return -1;
}
do {
/* Parse LightSwitch */
item_LightSwitch = cJSON_GetObjectItem(root, "LightSwitch");
if (item_LightSwitch != NULL && cJSON_IsNumber(item_LightSwitch)) {
EXAMPLE_TRACE("LightSwitch = %d", item_LightSwitch->valueint);
printf("********************************************");
HAL_Snprintf(property_payload, sizeof(property_payload), "{\"LightSwitch\": %d}", item_LightSwitch->valueint);
}
/* Parse color */
item_color = cJSON_GetObjectItem(root, "color");
if (item_color != NULL && cJSON_IsNumber(item_color)) {
EXAMPLE_TRACE("color = %d", item_color->valueint);
HAL_Snprintf(property_payload, sizeof(property_payload), "{\"color\": %d}", item_color->valueint);
}
}while(0);
res = IOT_Linkkit_Report(devid, ITM_MSG_POST_PROPERTY, (unsigned char *)property_payload, strlen(property_payload));
EXAMPLE_TRACE("Post Property Message ID: %d", res);
return 0;
}
3、配网
接下来就一气呵成了,先打开之前下载的公版app云智能的扫一扫,然后扫人机交互右边说明的配网二维码,再给板子上电开机,然后可以在串口调试助手中看到一堆的信息,其中有Json表一样的数据基本上就是配网成功了
,然后就可以在云平台上看到调试设备已连接,可以在里面进行调试,也可以在app中进行灯控制了。
4、接入天猫精灵
在云智能app中的我的/更多服务中选择天猫精灵,绑定淘宝账号,即可在天猫精灵app中找到刚刚配好网的灯设备了。