美文网首页nodemcuNodeMCU
8、nodeMCU学习笔记--wifi模块·下

8、nodeMCU学习笔记--wifi模块·下

作者: 谢mingmin | 来源:发表于2016-11-09 22:39 被阅读4493次

闲言碎语

前面介绍了station模式。在这个模式下,需要输入ssid和密码,如果把ssid和密码固化到代码里面显然有点不可取。幸好nodeMCU支持ap模型,可以给手机连接。我只需要将其设置成wifi.STATIONAP工作模式即可。具体怎么做,我们一步一步来。
  为了使用户体验更好,本文会使用enduser setup模块。

模块函数

序号 函数名 参数 返回值
1 wifi.ap.config() table nil
2 wifi.ap.deauth() 字符串 true
3 wifi.ap.getbroadcast() 字符串
4 wifi.ap.getclient() table
5 wifi.ap.getip() 字符串
6 wifi.ap.getmac() 字符串
7 wifi.ap.setip() table true / false
8 wifi.ap.setmac() 字符串 true / false
9 wifi.ap.dhcp.config() table pool_startip, pool_endip
10 wifi.ap.dhcp.start() boolean
11 wifi.ap.dhcp.stop() boolean
  1. .ap.config配置ap,总共有7参数,除了ssid和pwd,其他都有默认值。
  • .ap.deauth移除接入ap的节点。可以指定mac地址,不传入参数则全部移除。
  • .ap.dhcp.config配置dhcp的ip池。
  • .ap.dhcp.start启动dhcp。
  • .ap.dhcp.stop停止dhcp。

其他就只是一下get函数和set函数,使用方法和station类似,不多说。下面接着说enduser setup模块,很简单,就3个函数。

序号 函数名 参数 返回值
1 enduser_setup.manual() true / false true / false
2 enduser_setup.start() [onConnected()], [onError(err_num, string)], [onDebug(string)] nil
3 enduser_setup.stop() nil
  1. 配置enduser是否为手动模式。如果为自动,则会配置一个开放的ap,在连入WiFi后暂停。

综合小例子

  这里需要把wifi设置为station&ap混合模式。使用.ap.config配置ap信息,再把enduser_setup设置成手动模式。

wifi.setmode(wifi.STATIONAP)
wifi.ap.config({ssid="nodeMCU", pwd="12345678", auth=wifi.WPA2_PSK})

enduser_setup.manual(true)
print("ap ip:"..wifi.ap.getip())
print("ap mac:"..wifi.ap.getmac())
print("sta mac:"..wifi.sta.getmac())

enduser_setup.start(
  function()
    print("sta ip:" .. wifi.sta.getip())
    wifi.setmode(wifi.STATION)
  end,
  function(err, str)
    print("enduser_err:" .. str)
    enduser_stop()
  end
)
效果图 web界面

一点问题

  enduser_setup模块使用起来不是特别舒服,时不时页面没反应。连接到笔记本共享出来的WiFi后,修改WiFi密码后,页面依旧提示连接成功。感觉可以自己实现各小型的web server,或许可以改善体验。

相关文章

网友评论

  • 流年是染指的青春:最近了解了下wifi钓鱼,但是一直弄不明白其中的原理,也没找到可阅读的开源代码。 一路学到了现在,有两个疑问请教下。 1、做拒绝服务攻击时,如何做到不连接wifi,但能识别出连接该wifi的设备以及mac地址? 2、如果没有用户mac地址的话就没办法伪造断开连接的报文吧。 听过另外一种说法,伪造大量的mac地址去连接路由器,导致路由器不稳定影响正常用户的操作,但一直不明白其中原理。 还望赐教
    谢mingmin:@流年是染指的青春 这个没研究过😅
  • 635d8054bc41:又向你请教了。enduser_setup.manual(true)这句话他报错,说init.lua:3: attempt to index global 'enduser_setup' (a nil value) 我看文档也是这样写,很好奇为什么会报错
    635d8054bc41:@谢mingmin 我刚看到你之前的评论,我才想起来原来我没加模块,我现在申请试试
    谢mingmin:@世華 模块加了没有
  • 72bf556aec30:你好,我想问一下为啥我运行后连接后不能上网
    72bf556aec30:@王老逼 解决了,谢谢
    谢mingmin:@王老逼 你这样问,我不知道怎么回答,看官方文档吧😅
  • 天才反噬:你好 想问下 为什么我运行 显示没有enduser_setup这个函数啊
    谢mingmin:@lianlian凉凉 这个模块编译进来没有。看看文档吧,也可能新固件移除或者改名了
    天才反噬:显示错误 :attempt to index global 'enduser_setup' (a nil value)
  • 长风而已:nodemcu是不是保存了上一节讲的连接热点时的状态
    谢mingmin:@长风而已 嗯嗯,WiFi的配置一次就一直有效
  • ReCclay:楼主问一下,为什么会获取不到wifi.sta.getip()的sta ip啊
    ReCclay:@谢mingmin 嗯,连进去了!
    谢mingmin: @ReCclay 连进WiFi没有
    ReCclay:根本就没反应
  • 37994e80458c:那个explore脚本软件在哪呀?那个jdk的java我都装了呀,就是翻遍整个文件都没有,那个什么jar文件就是个压缩包啊,里面一大堆文件,就是没有explore运行程序
    谢mingmin: @老板来碗鸡汤加砒霜 这个又不是Java自带的
  • 79b57113cb8c:这一章的小例子我好像不太理解诶,还有我的也打印不出sta ip的参数,而且那个wifi login 的页面我一进去就是显示已经成功连接的,连得是个很奇怪的setup gadget什么的,好像就是我的开发版出来的😣
    谢mingmin: @神话永恒王子 那就重新刷固件吧😂
    79b57113cb8c: @谢mingmin 我全都清空了,但是他也会自己弹出很多消息,我是不是把它给玩坏了
    谢mingmin: @神话永恒王子 😅你先把模块的WiFi配置清空掉,可能是模块已经练入WiFi了,所以没效果。另外新版本的功能上可能和我写的时候不一样了。这个主要介绍AP功能啦
  • 问号_ac26:如何用TCP服务器向客户端传输数据
    谢mingmin: @问号_ac26 请移步这篇文章,http://www.jianshu.com/p/2535d6374a2b
  • Luat物联网通信模块:可以关注下Luat开源项目,基于Air200 GPRS模块(价格才12块多),基于Lua开发应用软件,超级容易上手。 而且开发点阵LCD 的UI 非常方便,有丰富的底层库,支持中文很方便。

本文标题:8、nodeMCU学习笔记--wifi模块·下

本文链接:https://www.haomeiwen.com/subject/gtpnuttx.html