使用Flutter对ESP8266 SmartConfig一键配网
获取wifi信息
对esp8266等wifi模块进行配网时需要手机连接wifi后进行获取该wifi的信息如:wifi名(wifiSSID),MAC地址(wifiBSSID)。
wifi信息可以通过使用插件connectivity
来获取
添加依赖
在pubspec.yaml文件中加入插件的依赖:
dependencies:
connectivity: ^0.4.8+6
获取wifi信息
import 'package:connectivity/connectivity.dart';
void getWifiInfo() async {
var wifiSSID = await Connectivity().getWifiName(); //获取WIFI名
var wifiBSSID = await Connectivity().getWifiBSSID();//获取WIFI地址
}
在获取wifi信息时可能会出现以下情况:
返回的WIFI名:null
返回的wifiBSSID:02:00:00:00:00:00
解决办法:
获取手机的定位权限
可以通过使用高德地图的插件amap_location
来获取定位,该插件的配置使用会比较麻烦,详细可以自行百度。
一键配网
当获取WIFI信息后,再由用户输入WIFI的密码就可以对WIFI模块进行一键配网,而配网的功能可以使用插件smartconfig
来完成。
添加依赖
dependencies:
smartconfig: ^0.0.1
配网开始
Smartconfig.start(wifiSSID,wifiBSSID,password).then((onValue){
print("sm version $onValue");
});
传入值 wifiSSID
和wifiBSSID
为上面获取到的 WIFI名 和 WIFI地址 , password
为WIFI密码,需要用户自行输入。
最后通过接收返回值onValue
来判断WIFI连接情况,当返回onValue
为null时,证明WIFI未连接。