1,天猫精灵设备消息解析
回调接口:实现对产品的定义

  • 产品属性上报 user_post_property
  • 产品事件上报 user_post_event
  • 产品属性设置 user_property_set_event_handler
  • 产品服务调用 user_service_request_event_handler
    这些函数在linkkit_example_solo.c下。
    2,解析JSON字符串
  1. 什么是JSON
    JavaScript Object Notation
    JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质就是一个字符串
  2. 如何解析JSON
    cjSON库
    cjSON结构体
    cjSON_Parse函数
    cjSON_GetObjectltem函数
    cjSON_isNumber函数
    对这几个函数的解释:https://blog.csdn.net/qq_36612961/article/details/90768404


/** recv event post response message from cloud **/
static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{int res = 0;cJSON *root,*pwStObj;EXAMPLE_TRACE("Property Set Received, Request: %s", request);root = cJSON_Parse(request);if(root){pwStObj=cJSON_GetObjectItem(root,"powerstate");if(pwStObj){if(pwStObj->valueint == 0){EXAMPLE_TRACE(" Power off the light ");}else if(pwStObj->valueint == 1){EXAMPLE_TRACE(" Power on the light ");}}else{}}else{}res = IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_PROPERTY,(unsigned char *)request, request_len);EXAMPLE_TRACE("Post Property Message ID: %d", res);return 0;}

修改完代码后,进行aos make 编译,烧录到开发板中,复位后没有配网信息了,重新进行配网(手机的天猫精灵扫描二维码),查看putty端的打印信息,看开发板是否连接到天猫精灵平台,然后对设备进行调试。查看putty下的打印信息是否为自己添加的对设备属性进行cJSON解析后的内容。调试界面如下:

3,将控制开发板LED灯的代码移植到linkkit_demo中,实现天猫精灵控制GPIO。

在自己创建的工程下的
app_entry.h中添加定义,添加内容如下:

gpio_dev_t led_red;
gpio_dev_t led_green;
gpio_dev_t led_blue;#define GPIO_RED_LED 0
#define GPIO_BLUE_LED 6
#define GPIO_GREEN_LED 1

app_entry.c进行gpio的初始化,添加如下内容:

#include "aos/gpio.h"
//在application_start()函数前面添加init_gpio_led()函数
void init_gpio_led()
{led_red.port = GPIO_RED_LED;led_green.port = GPIO_GREEN_LED;led_blue.port = GPIO_BLUE_LED;led_red.config = OUTPUT_PUSH_PULL;led_green.config = OUTPUT_PUSH_PULL;led_blue.config = OUTPUT_PUSH_PULL;hal_gpio_init(&led_red);hal_gpio_init(&led_blue);hal_gpio_init(&led_green);sys_itag_off();
}
//最后在application_start内部的aos_loop_run()函数前进行gpio初始化的调用init_gpio_led();

linkkit_example_solo.c中添加开发板led灯亮灭的控制代码,如下:

static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{int res = 0;cJSON *root,*pwStObj;EXAMPLE_TRACE("Property Set Received, Request: %s", request);root = cJSON_Parse(request);if(root){pwStObj=cJSON_GetObjectItem(root,"powerstate");if(pwStObj){if(pwStObj->valueint == 0){EXAMPLE_TRACE(" Power off the light ");//关灯命令时,将led设置为低电平hal_gpio_output_low(&led_red);hal_gpio_output_low(&led_green);hal_gpio_output_low(&led_blue);}else if(pwStObj->valueint == 1){EXAMPLE_TRACE(" Power on the light ");hal_gpio_output_high(&led_red);hal_gpio_output_high(&led_green);hal_gpio_output_high(&led_blue);}}else{}}else{}res = IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_PROPERTY,(unsigned char *)request, request_len);EXAMPLE_TRACE("Post Property Message ID: %d", res);return 0;
}

代码改写完成后,aos make 进行编译,烧录到开发板中,然后进行手机配网,配网成功后回到调试页面,发送指令(1),查看putty端的打印信息和开发板的LED灯的亮灭情况。
没有对天猫精灵做任何的设置为什么可以用天猫精灵语音控制开发板LED灯的亮灭,原理:
使用天猫精灵app扫码的时候,如果天猫精灵和app是绑在一起的,那阿里云后台认为你这个账号下的天猫精灵就是你绑定的这个天猫精灵,同样开发板也在app账号下面,同一个账号下的天猫精灵和开发板隶属于同一个工作组,所以在这个账号下的所有设备都可以被天猫精灵所控制,如果这个账号下绑定了多个天猫精灵,那这几个天猫精灵都可以控制我的开发板。

五,信息解析和天猫精灵控制LED相关推荐

  1. 基于Arduino IDE平台开发ESP8266天猫精灵控制LED灯

    Arduino教程传送门

  2. 天猫精灵控制Zigbee设备

    天猫精灵控制Zigbee设备 1. 介绍 我们在天猫精灵控制ESP32设备的文章中已经知道如何利用阿里巴巴的Link Kit SDK跑在ESP32平台,连接到阿里云的智能生活开放平台,从而使得天猫精灵 ...

  3. ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居

    ESP8266开发.ESP8266连接阿里云物联网.天猫精灵控制esp8266.esp8266一键配网.智能家居 项目介绍 最近会 将arduino IDE开发ESP8266中一些值得记录得部分写下来 ...

  4. 使用ESP8266通过Blinker平台接入天猫精灵控制电视/空调

    目录 `演示视频` 1.准备工作 1.1 `原理` 1.2 `使用的硬件以及硬件连接图` 1.3 `开发环境准备` 2.解码空调红外键值 2.1 `把ESP8266红外接收的实例,上传到NodeMCU ...

  5. Esp8266对接天猫精灵控制RGB彩灯

    一.代码获取编译 下载本工程 git clone https://github.com/espressif/esp-aliyun.git cd esp-aliyun 烧录三元组信息 文档烧录三元组 N ...

  6. 天猫精灵 python_利用天猫精灵控制ESP8266(NodeMCU开发板)arduino ide开发

    第一 下载demo例程 下载地址: 点击下载 本demo 是利用arduino IDE开发,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转 第二 修改demo例程 需 ...

  7. php与硬件通过wifi对接,基于ESP8266的WiFi排插接入贝壳互联实现天猫精灵控制

    认识众多玩家高手/拆客/DIYer,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 hzy3774 于 2020-1-8 00:45 编辑 * 实验 ...

  8. 毕业设计--20200228--内网搭建domoticz系统 frp内网穿透实现天猫精灵控制内网设备

    记录一下三天的成果. 花费了3天的时间 我在树莓派上面搭建了一个domoticz 的智能家居系统 然后利用frp 去实现将本地的内网地址 穿透到 公网上面的 阿里云的个人服务器的8080 端口, 最终 ...

  9. 开源项目搭建私有物联网智能家居接入天猫精灵控制

    开源项目搭建私有物联网智能家居接入天猫精灵控制 最近几年随着物联网的高速发展,众多智能硬件厂商都开发出自己的智能家居产品,都想在物联网智能家居市场上占有自己的一席之地,而随着众多智能音箱的问世,智能家 ...

最新文章

  1. centos安装ffmpeg php,lnmp下安装ffmpeg和ffmpeg-php教程
  2. python 3d绘图-python - 轻松学会Matplotlib 3D绘图
  3. 使用Nginx、Nginx Plus抵御DDOS攻击的方法
  4. 计算机主机安装系统安装系统,系统重装
  5. 贴花纸怎么贴_木纹纸怎么贴? 贴木纹纸的方法与详细步骤
  6. 十步让你成为一名优秀的 Web开发人员
  7. BigPipe 大的页面分割成一个一个管道
  8. Linux内核调试原理和工具介绍--理解静态插装/动态插装、tracepoint、ftrace、kprobe、SystemTap、Perf、eBPF
  9. html 居中 center,html – 如何居中的元素 – 使用什么而不是align:center属性?
  10. paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
  11. sql服务器数据库主文件,数据库文件和文件组
  12. 如何解决Maven导入Oracle驱动出现Missing artifact com.oracle:ojdbc14:jar:10.2.0.2.0,Mvaen:com.oracle:ojdbc14:10.
  13. Python解运筹学问题
  14. python分数约分_Python基础知识
  15. 计算机无法进入bios模式,win7进入bios设置界面_win7无法进入bios设置解决办法
  16. 基于JAVA计算机类专业考研交流学习平台计算机毕业设计源码+数据库+lw文档+系统+部署
  17. matlab复杂函数多元函数拟合
  18. 互联网行业,回暖了?
  19. 【编码译码】基于matlab LDPC编码和解码【含Matlab源码 2560期】
  20. 使用htmlunit采集网页+点击网页按钮

热门文章

  1. 连高中学高二级英语寒假作业答案
  2. HCL AppScan Standard扫描有关前端Xss安全报告处理
  3. 【华为机试真题】专栏文章搜索说明
  4. uniapp 引入vantUI
  5. 手机不执行js问题排查
  6. 【EHub_tx1_A200】Ubuntu18.04 + ROS-Melodic/ROS2-Elequent + 速腾 RS-Helios_16P雷达 评测
  7. 我的世界java环境安装包_我的世界java路径怎么设置
  8. 摘自网络的html基本标签
  9. GeoServe 跨域头和X-frame跨域设置
  10. DASCTF x CBCTF 2022_Crypto复现