7、nodeMCU學習筆記--wifi模組·中

weixin_34120274發表於2016-11-06

閒言碎語

上一篇水文中簡單的介紹了wifi模組中的幾個配置相關的函式。這篇文章準備介紹station模式下相關的函式。station模式下,nodemcu可以連線入wifi網路,成為一個區域網裝置。

模組函式

station部分的函式,數量也超過了10個。雖然看起來很多,但是關鍵也就那麼幾個函式。

序號 函式名 引數 返回值
1 wifi.sta.autoconnect() 0 / 1 nil
2 wifi.sta.config() ssid, password[, auto[, bssid] nil
3 wifi.sta.connect() nil
4 wifi.sta.disconnect() nil
5 wifi.sta.eventMonReg() wifi_status[, function([previous_state])] nil
6 wifi.sta.eventMonStart() [ms] nil
7 wifi.sta.eventMonStop() [unregister_all] nil
8 wifi.sta.getap() [[cfg], format,] callback(table) nil
9 wifi.sta.getbroadcast() nil 字串
10 wifi.sta.getconfig() nil ssid, password, bssid_set, bssid
11 wifi.sta.gethostname() nil 字串
12 wifi.sta.getip() nil 字串
13 wifi.sta.getmac() nil 字串
13 wifi.sta.getrssi() nil 字串
14 wifi.sta.sethostname() 字串 true / false
15 wifi.sta.setip() table true / false
16 wifi.sta.setmac() 字串 true / false
17 wifi.sta.status() nil 0~5
  1. .sta.autoconnect用於設定是否自動連線;
  • .sta.config用來設定接入路由的資訊,該資訊只有被修改才會變動,掉電資訊依然在。auto引數預設為1,即自動連線。當週圍有其他同名ssid時,可以通過bssid引數指定接入某mac地址路由。
wifi.sta.config("ssid", "password")
  • .sta.connect.sta.disconnect用於接入或者斷開連線。當在.sta.config設定了手動連線時,才需要使用.sta.connect
  • .sta.eventMonReg用於註冊狀態監聽。總共有6種狀態;
wifi.sta.eventMonReg(wifi.STA_IDLE, function()
end)
wifi.sta.eventMonReg(wifi.STA_IDLE)   --登出回撥
  • .sta.eventMonStart用於啟動狀態監聽,可選引數是回撥時間間隔,預設150ms;
  • .sta.eventMonStop用於暫停狀態監聽,如果可選引數傳入1,則暫停並登出回撥;
  • .sta.getap用於掃描ap列表。引數cfg是lua的table資料型別,引數format用於選擇table的格式,callback(table)是回撥函式。
  • .sta.getbroadcast用於獲取廣播地址;
  • .sta.getconfig用於獲取配置資訊;
  • .sta.gethostname用於獲取主機名
  • .sta.getip用於獲取ip地址、掩碼、閘道器;
  • .sta.getmac用於獲取mac地址;
  • .sta.getrssi用於獲取連線點的rssi。如果未接入網路則返回nil;
  • .sta.sethostname用於設定主機名,只能包含數字、字母、-,且不能超過32字元,第一個和最後一個不能是下劃線;
  • .sta.setip用於設定ip地址、掩碼、閘道器;
  • .sta.setmac用於設定mac地址;
  • .sta.status用於獲取狀態。

綜合小例子

nodeMCU提供的API還是蠻簡潔的,幾句話就可以實現wifi上網。這裡先使用.sta.sethostname設定nodeMCU模組的名字,方便與其他裝置區分(比如,手機)。註冊一個狀態(wifi.STA_GOTIP)監聽,當連入wifi的時候會觸發回撥。最後使用.sta.config接入網路,相當於平時用手機輸入ssid和密碼。為了方便,我用筆記本共享wifi來給nodeMCU接入。

wifi.sta.sethostname("Node-MCU")

print(wifi.sta.gethostname())

function printap(ap)
    for k, v in pairs(ap) do
        print(k.." : "..v)
    end
end

wifi.sta.eventMonReg(wifi.STA_GOTIP, function() 
    print(wifi.sta.getip())
    wifi.sta.getrssi()
    wifi.sta.getap(printap)
end)
wifi.sta.eventMonStart()

wifi.sta.config("wifitest", "kwmb566687")
3379069-1c7cb77be126d3fc.png
走,衝浪去

簡書評論不能貼圖, 如有需要可以到我的GitHub上提issues

相關文章