一、esp-ali-smartliving介绍
esp-ali-smartliving是乐鑫基于阿里提供的C LINK SDK rel_1.6.0开发的连接阿里云生活物联网平台、天猫精灵平台的SDK。
二、esp-ali-smartliving执行流程
2.1 恢复出厂设置
esp_err_t factory_restore_init(void)
{
#ifndef CONFIG_IDF_TARGET_ESP8266
if (esp_sleep_get_wakeup_cause() != ESP_SLEEP_WAKEUP_UNDEFINED) {
HAL_Kv_Del(FACTORY_QUICK_REBOOT_TIMES);
return ESP_OK;
}
#endif
TimerHandle_t timer = xTimerCreate("factory_clear", FACTORY_QUICK_REBOOT_TIMEOUT / portTICK_RATE_MS,
false, NULL, factory_restore_timer_handler);
xTimerStart(timer, portMAX_DELAY);
return factory_restore_handle();
}
连续重启设备一定次数将使设备恢复出厂设置,出厂设置的过程为
- 设置配网初始化KV标志AWSS_KV_RST
- 删除KV中的ssid和passwd
- 设置配网模式为sc模式(smartconfig)
2.2 初始化LED灯
(略)
2.3 连接管理初始化
esp_err_t conn_mgr_init(void)
{
extern esp_err_t HAL_Kv_Init(void);
HAL_Kv_Init();
tcpip_adapter_init();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_event_loop_init(conn_mgr_wifi_event_loop_handler, NULL));
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_start());
return ESP_OK;
}
- 初始化tcpip适配器
- 创建事件循环event loop,参考event loop中,定义了两类事件的处理:在获取到IP的时候保存ssid和passwd到kv中;在断网的时候进行重连。
- 初始化wifi外设
- 设置wifi的内存
- 设置wifi的运行方式
- 启动wifi
2.4 wifi连接
- 注册获取IP的事件,在获取到IP后启动linkkit线程与阿里云通信
- 注册linkkit事件回调,用于监测与阿里云的通信状态
- 启动wifi连接:根据kv中的是否保存了ssid来判断是否配置过wifi,如果没有配置过启动配网,之后启迪
2.5 阿里云物模型接口与阿里云对接
wifi连接成功后在事件处理中启动阿里云物模型线程。