万事开头难,没有做过的东西,始终是感觉遥不可及,但是做完了之后却会恍然大悟,居然能这么简单,也许这就是学习的魅力吧!
1.前期准备工作
1.8266 RTOS 2.0sdk
2.hilink官网下载下来的sdk
2.移植sdk
这步骤其实只要按照hilink的指导手册来一步步的修改就行了
文档参考《智能家居 HiLink SDK集成开发调测指导》,文档中如何移植的其实已经很详细了,我在这里就不赘述了。
添加到项目图:
需要注意的一点,也是移植中可能会遇到的坑,就是编译超出了RAM,我们知道8266rtos版本提供的RAM区是96K,可能会出现超出RAM的可能,这个时候需要你修改:
ESP8266_RTOS_SDK-2.0.0\ld\eagle.app.v6.common.ld中,
3.编辑Main函数
1.添加头文件
#include “hilink.h”
2.在main函数添加hilink_main
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void user_init(void)
{
System_Initializes();
os_printf("SDK version:%s\n", system_get_sdk_version());
// os_printf("SDK version:%s\n", getDeviceVersion());
//task:
//xTaskCreate(led_toggle_task, "led_toggle_task", 256, NULL, 2, NULL);
//xTaskCreate(key_handler_task, "key_handler_task", 256, NULL, 3, &key_handler_task_handle );
hilink_main();
// os_printf("网络状态 = %d",hilink_get_devstatus());
}
以上就已经实现了配网和联网了,怎么样,简单吧!
4.数据交互
在hiink_device.c中添加通讯函数
// -----------------------处理云端下发的服务控制(PUT)命令----------------
/*****************************************************************************
函数名称: handle_switch_cmd
功能描述: 处理switch服务的命令处理函数
输入参数: on - on属性的值
返回参数: HILINK_OK - 操作成功, 设备状态已改变
HILINK_ERR - 操作失败, 设备状态未改变
HILINK_PROCESSING - 在这操作中, 设备状态尚未改变
使用说明: 1) 返回HILINK_PROCESSING表示设备正在进行异步操作, 待操作完成设备状态
改变, 需要主动调用report接口将变更的新状态上报给APP;
2) 此函数由设备厂商实现.
*****************************************************************************/
int handle_switch_cmd(bool* on)
{
// 实现对on属性的修改
if (on != NULL) {
if(*on == true)
{
LED_ON();
}
else
{
LED_OFF();
}
}
// 若同步操作改变设备状态, 状态改变后, 返回HILINK_OK
// 若异步操作改变设备状态, 此处返回HILINK_PROCESSING, 待状态改变后主动上报新状态
return HILINK_OK;
}
其中LED_ON()的函数需要对应自己的板子设置好
这样一个最基本的交互就实现了,最后就是APP的设置了。
好多人私信要demo源码,有偿提供哦,亲们,点我源码链接!