作者:重庆互联网小徐 发布时间:2024-06-21 浏览:20088 赞(1950) 收藏 评论(0)
声波配网是以特定频率的声音作为信息载体,由小微App/小程序将某个路由器的SSID和密码同步给设备。这个技术类似无线广播,在小微App/小程序端,会将ssid_info进行软调制,以高频声波作为载波,将信息广播出去;在设备端通过麦克风接收声波并软解调,从而获取wifi信息。
该方法对设备的收音性能有要求,需要在配网时保持安静,可作为蓝牙BLE配网失败时的备选方案。小微SDK内置了声波配网解调模块,设备端使用此功能时,初始化解调模块并将音频数据送入,即可获取解调后的信息。
与BLE配网的不同之处在于,设备端无法再向APP/小程序端传递数据,因此配网协议略有不同,总体可以概括为:在APP/小程序向设备端发送ssid_info的同时,还会携带一个token,用于标记这一次配网。设备配网并获取ticket成功后,不再直接通知APP/小程序,而是将token和ticket组成一个键值对,通过SDK的接口发送至小微后台,小微后台会完成绑定,并通知APP/小程序配网成功。
int voicelink_init_decoder(VL_FUNC_NOTIFY func, int samplerate);
调用该接口初始化配网模块,设置通知回调和采样率。注意这里设置的采样率一定要和设备真实的录音采样率一致。
void voicelink_fill_audio(signed short *audio, int nlen);
每当采集一定的音频数据后,调用此接口将数据传给SDK,建议每帧数据长度为20ms,数据过长会导致失败。这里的nlen是采样点数,而不是长度。例如采样率8000,20ms数据的nlen就是160。
持续调用此接口直到VL_FUNC_NOTIFY
到来。
初始化时设置的回调函数中的VL_FUNC_NOTIFY
包含了wifi信息和token。设备自行使用wifi信息联网,联网成功后登录小微SDK,登录成功后调用int device_get_bind_ticket(bind_ticket_callback callback);
获得ticket。
device_upload_voice_link_result(const char *ticket, const char *token);
调用此接口将上述ticket和token上传。
配网时序如下:
设备进入声波配网模式,初始化SDK的decode接口,开始收音,并将音频数据持续输入SDK的decode接口。
小程序/App进入声波模式,播放声音。
SDK decode成功,设备拿到wifi_ssid
,wifi_password
和token
。
设备使用wifi_ssid
和wifi_password
自行联网。
设备联网成功后登录SDK,成功之后获取ticket。
设备调用SDK接口将ticket和token上传后台,至此设备端工作结束。
小程序/App收到后台消息,完成绑定。
配网流程结束。
在小微小程序/App的交互流程中,会优先使用蓝牙配网,配网失败后使用声波配网。在设备端若支持声波配网,应同时打开声波配网和蓝牙配网,二者有一个成功之后便退出配网流程即可。需要注意以下几点:
配网成功是指设备拿到wifi信息并且成功login,拿到ticket并且成功将ticket给到小程序/App(蓝牙)或后台(声波)。
两种方式同时打开时,只需要获取一次ticket,这个ticket对于两种方式均有效,重复get ticket会导致之前的ticket失效。
重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,20年的开发经验和完善的售后服务体系获得合作客户的高度认可!
关注重庆互联网官方公众号,即可获取粉丝专享福利!
欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!