全部产品
云市场

WiFi配网概述

更新时间:2019-04-15 15:43:04

功能概述

WiFi设备需要连接到WiFi热点(WiFi AP)之后才能与其它设备进行基于IP的通信, 我们将WiFi设备获取到WiFi热点的SSID/密码的步骤称为WiFi配网

对于手机/电脑/平板而言, 用户可以通过键盘或者触摸屏输入WiFi热点的SSID/密码

但是对于没有键盘, 没有触摸屏的IoT设备而言, 如何获取WiFi热点的SSID/密码是实现设备网络管理的第一个关键步骤

为了节约WiFi设备厂商开发配网方案的开发成本, 阿里为WiFi类型的IoT设备提供了几种配网方案, 设备厂商可以根据自己的需要相应集成

注:

  • 目前阿里提供的配网方案仅针对WiFi家庭网络(即设备使用SSID/密码连接一个WiFi热点), 暂不支持对WiFi企业网络场景进行配网(使用SSID/用户名/密码方式连接WiFi热点)
  • 如果设备可以通过触摸屏/键盘, 或其它方式获取到AP热点的SSID/密码, 可以不用移植下面的配网方案, 因为下面的配网方案的移植工作量和难度都并不小

现有方案

现有的C-SDK中已支持如下的几种WiFi配网模式

  • 一键配网(smartconfig): 手机app直接给IoT设备配网, 设备需能够工作在嗅探(sniffer)状态
  • 手机热点配网(phone-as-ap): 手机app充当临时热点, 直接给IoT设备配网
  • 路由器热点配网(router-ap): 输出到路由器厂商/通信运营商
  • 零配(zeroconfig): 用已配网的IoT设备给其它的IoT设备配网
  • 设备热点配网(dev-ap): IoT设备充当临时热点, 手机app连接设备热点为其配网, 设备需能够工作在热点(ap)状态

配网通用HAL移植说明

设备端针对不同的配网方式需要实现的HAL函数有一定区别。其中部分HAL是SDK公共的,部分HAL是配网模块独有但是所有配网方式公共的,本文档列举所有公共部分HAL,即配网能工作必须要实现的HAL;针对每种不同的配网模式分特有的HAL将在每种配网模式中进行单独列举。

配网依赖的Linkkit SDK公共HAL

序号 函数名 说明
1 HAL_MutexCreate 创建一个互斥量对象, 返回指向所创建互斥量的指针, 用于同步访问, 对于仅支持单线程应用, 可实现为空函数
2 HAL_MutexDestroy 销毁一个互斥量对象, 释放资源
3 HAL_MutexLock 锁住一个互斥量
4 HAL_MutexUnlock 解锁一个互斥量
5 HAL_UptimeMs 获取设备从上电到当前时刻所经过的毫秒数
6 HAL_Malloc 申请一块堆内存
7 HAL_Free 释放参数ptr指向的一块堆内存, 当传入的参数为NULL时不执行任何操作
8 HAL_SleepMs 睡眠函数, 使当前执行线程睡眠指定的毫秒数
9 HAL_GetProductKey 获取设备的ProductKey, 用于标识设备的品类, 四元组之一
10 HAL_GetProductSecret 获取设备的ProductSecret, 用于标识设备的品类, 四元组之一
11 HAL_GetDeviceName 获取设备的DeviceName, 用于标识设备单品的名字, 四元组之一
12 HAL_GetDeviceSecret 获取设备的DeviceSecret, 用于标识设备单品的密钥, 四元组之一
13 HAL_Kv_Set Flash中写入键值对(Key-Value)
14 HAL_Kv_Get Flash中读取键值对的Value
15 HAL_Aes128_Init 初始化AES加密的结构体
16 HAL_Aes128_Destroy 销毁AES加密的结构体
17 HAL_Aes128_Cbc_Decrypt 以AES-CBC-128方式, 根据HAL_Aes128_Init()时传入的密钥解密指定的密文
18 HAL_Aes128_Cfb_Decrypt 以AES-CFB-128方式, 根据HAL_Aes128_Init()时传入的密钥解密指定的密文
19 HAL_Timer_Create 根据Name、TimerFunc和用户上下文创建Timer
20 HAL_Timer_Start Timer开始计时,Timer超时时调用回调函数TimerFunc
21 HAL_Timer_Stop 停止Timer计时
22 HAL_Timer_Delete 删除Timer,释放资源

注:

  • 包括配网模块在内的SDK公用HAL

配网模块公共HAL

序号 函数名 说明
1 HAL_Awss_Get_Timeout_Interval_Ms 获取配网服务(AWSS)的超时时间长度, 单位是毫秒
2 HAL_Sys_Net_Is_Ready 检查Wi-Fi网卡、芯片或模组当前的IP地址是否有效
3 HAL_Wifi_Get_Ap_Info 获取设备所连接的热点(Access Point)的信息
4 HAL_Awss_Close_Monitor 关闭监听(Monitor)模式
5 HAL_Awss_Open_Monitor 设备工作在监听(Monitor)模式, 并在收到802.11帧的时候调用被传入的回调函数(包括管理帧和数据帧)
6 HAL_Awss_Switch_Channel 设置Wi-Fi设备切换到指定的信道(channel)上
7 HAL_Awss_Get_Channelscan_Interval_Ms 获取在每个信道(channel)上扫描的时间长度, 单位是毫秒
8 HAL_Wifi_Get_Mac 获取设备的MAC地址, 格式应当是”XX:XX:XX:XX:XX:XX”
9 HAL_Awss_Get_Conn_Encrypt_Type 获取基于连接的配网服务(热点配网/路由器配网/零配)的安全等级
10 HAL_Awss_Connect_Ap 要求Wi-Fi网卡连接指定热点(Access Point)的函数,bssid指定特定AP,另外bssid也可能为空或无效值(全0或全0xff)

注:

  • 配网通用HAL,仅配网模块调用