跳转至

Index

作者:拓毅恒

一、AirKiss 概述

1.1 AirKiss 介绍

AirKiss 是微信硬件平台为 Wi-Fi 设备提供的微信配网、局域网发现和局域网通讯的技术。我们一般使用的就是配网功能,其他功能基本很少有使用。

其原理和 SmartConfig 类似,发送端通过发送 UDP 广播包或多播包,利用报文的特征进行编码,设备端在混杂模式下捕获到 UDP 报文后,按约定的方式解码出发送的 WiFi 信息实现配网。

AirKiss 虽然没有蓝牙配网那样稳定,但因为配网过程极为简单,所以使得现在硬件厂商一般依然会提供该功能。

AirKiss 官方网站连接:https://iot.weixin.qq.com/wiki/new/index.html?page=4-1-1

1.2 AirKiss 技术使用场景

AirKiss 主要在如下场景中使用:

1. 待接入互联网的设备不具备输入输出能力,如空调、空气净化器、烟雾报警器等。

2. 用户追求更为简单的配网方式。

1.3 AirKiss 技术的优势

相比其它配置方式,AirKiss 技术有着以下几个显著的优势:

1. 用户可以使用最为熟悉的微信客户端来操作入网配置,无需下载额外的第三方软件即可。

2. 用户无需首先将设备配置为热点模式并连接,在配置模式下可直接将无线路由器的 SSID 发送至设备。

二、准备硬件环境

参考:Air8101 硬件环境清单,准备好硬件环境。

2.1 Air8101 核心板

三、准备软件环境

3.1 文章内容应用

在开始实践本示例之前,先筹备一下软件环境:

1. 烧录工具:Luatools 工具

2. 内核固件:https://docs.openluat.com/air8101/luatos/firmware/

3. 脚本文件:Air8101/demo/config_wifi_network/airkiss

4. LuatOS 运行所需要的 lib 文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件。

准备好软件环境之后,接下来查看 Air8101 产品手册中“Air8101 核心板使用手册 -> 使用说明”,将本篇文章中演示使用的项目文件烧录到 Air8101 核心板中。

3.2 API 介绍

这里仅介绍本篇文档所使用的 API,详情请查看:API - wlan

wlan.init()

初始化 WiFi 模块

wlan.smartconfig(mode)

开启配网功能(仅 Air8101 支持 AIRKISS 配网)

wlan.connect(ssid, password, auto_reconnect, bssid)

作为 STATION 时,连接到指定 wifi

四、AirKiss 配网实现功能概述

本小节教你怎么如何实现 Air8101 工业引擎的 AirKiss 配网。

4.1 本教程实现的功能定义是:

1. 通过 wlan.smartconfig(wlan.AIRKISS)接口设置成 AirKiss 配网模式。

2. 微信公众号或者微信小程序搜索 AirKiss 配网页面,实现设备的配网。

(注意:会将你设备正在连接的 wifi 进行配网发送,所以要注意使用 2.4G 网络)

4.2 核心脚本代码详解

1. 启动 AirKiss 配网

通过 wlan.smartconfig(wlan.AIRKISS)启动配网,如果配网成功,系统会发布一个"SC_RESULT"消息,消息包含配网成功的 WiFi 的 SSID 和密码,配网成功后可以将 SSID 和密码保存到 fskv,做持久化存储;如果配网超时,则停止配网过程并等待 3 秒后重新开始配网。

-- 配网时选用 AirKiss 模式
-- 仅支持2.4G的wifi, 5G wifi是不支持的
-- 配网时, 手机应靠近模块, 以便更快配网成功
while true do
    log.info("wlan", "启动airkiss")
    wlan.smartconfig(wlan.AIRKISS)
    local ret, ssid, passwd = sys.waitUntil("SC_RESULT", 180*1000) -- 等3分钟
    if ret == false then
        log.info("smartconfig", "timeout")
        wlan.smartconfig(wlan.STOP)
        sys.wait(3000)
    else
        -- 获取配网后, ssid和passwd会有值
        log.info("smartconfig", ssid, passwd)
        -- 获取IP成功, 将配网信息存入fskv, 掉电也能保存
        log.info("fskv", "save ssid and passwd")
        fskv.set("wlan_ssid", ssid)
        fskv.set("wlan_passwd", passwd)

        -- 重启后将使用配网信息自动连接
        log.info("wifi", "wait 3s to reboot")
        sys.wait(3000)
        rtos.reboot()
        break
    end
end

2. 订阅"IP_READY 消息"

在网络连接成功时,会发布一个系统消息 IP_READY,联网成功,可以根据自己的业务逻辑实现相应的功能。

-- 订阅IP_READY事件,获取IP成功后触发
local function get_ip_ready(ip)
    log.info("wlan", "ip ready", ip)
    -- 联网成功, 可以发起http, mqtt, 等请求了
end
sys.subscribe("IP_READY", get_ip_ready)

3. 订阅 SC_RESULT 事件

配网成功后触发,同时打印 WiFi ssid 和 passwd

-- 订阅SC_RESULT事件,配网成功后触发
local function on_airkiss_success(ssid, password)
    log.info("airkiss", "配网成功", ssid, password)
end
sys.subscribe("SC_RESULT", on_airkiss_success)

4.4 功能验证

4.4.1 微信平台配置

微信搜索 airKiss 一键配网,本教程使用的是巴法的 airkiss 配网功能:

进入小程序,切换协议到 AirKiss 配网,如下所示:

然后连接 wifi 即可

如若小程序页面显示配网失败,luatools 日志显示配网成功,请更换 airkiss 工具测试。

4.4.2 配网成功显示

通过 luatools 日志显示,可以看到 AirKiss 配网成功,并已保存到 fskv 中,掉电不丢失。

五、总结

本文档详细介绍了如何使用 Air8101 进行 AirKiss 配网,此配网方式极为简单,只需要将 Air8101 设置成 AirKiss 模式后,微信平台进行 AirKiss 配网即可。

六、常见问题

6.1 AirKiss 配网优缺点

1. 优点:

相比其它配置方式,AirKiss 技术有着以下几个显著的优势:

(1) 用户可以使用最为熟悉的微信客户端来操作入网配置,无需下载额外的第三方软件即可。

(2) 用户无需首先将设备配置为热点模式并连接,在配置模式下可直接将无线路由器的 SSID 发送至设备。

2. 缺点:

配网成功率受环境影响较大。

6.2 AirKiss 配网支持 5G 频段的 WIFI 吗

不支持,只支持 2.4G。因为 2.4G 频段的 WIFI 信号具有广泛的覆盖范围,能够被大多数智能设备和路由器所支持,因此成为了 AirKiss 配网技术的首选

频段。