閑言碎語
上一篇水文中簡單的介紹了wifi模塊中的幾個配置相關(guān)的函數(shù)营曼。這篇文章準(zhǔn)備介紹station模式下相關(guān)的函數(shù)。station模式下尿贫,nodemcu可以連接入wifi網(wǎng)絡(luò)电媳,成為一個局域網(wǎng)設(shè)備。
模塊函數(shù)
station部分的函數(shù)帅霜,數(shù)量也超過了10個匆背。雖然看起來很多呼伸,但是關(guān)鍵也就那么幾個函數(shù)身冀。
序號 | 函數(shù)名 | 參數(shù) | 返回值 |
---|---|---|---|
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 |
- .sta.autoconnect用于設(shè)置是否自動連接;
- .sta.config用來設(shè)置接入路由的信息括享,該信息只有被修改才會變動搂根,掉電信息依然在。auto參數(shù)默認(rèn)為1铃辖,即自動連接剩愧。當(dāng)周圍有其他同名ssid時,可以通過bssid參數(shù)指定接入某mac地址路由娇斩。
wifi.sta.config("ssid", "password")
- .sta.connect和.sta.disconnect用于接入或者斷開連接仁卷。當(dāng)在.sta.config設(shè)置了手動連接時,才需要使用.sta.connect犬第;
- .sta.eventMonReg用于注冊狀態(tài)監(jiān)聽锦积。總共有[6] API函數(shù)已經(jīng)無效了(http://nodemcu.readthedocs.io/en/master/en/modules/wifi/#parameters_13)種狀態(tài)歉嗓;
wifi.sta.eventMonReg(wifi.STA_IDLE, function()
end)
wifi.sta.eventMonReg(wifi.STA_IDLE) --注銷回調(diào)
- .sta.eventMonStart用于啟動狀態(tài)監(jiān)聽丰介,可選參數(shù)是回調(diào)時間間隔,默認(rèn)150ms鉴分;
- .sta.eventMonStop用于暫停狀態(tài)監(jiān)聽哮幢,如果可選參數(shù)傳入1,則暫停并注銷回調(diào)志珍;
- .sta.getap用于掃描ap列表橙垢。參數(shù)cfg是lua的table數(shù)據(jù)類型,參數(shù)format用于選擇table的格式伦糯,callback(table)是回調(diào)函數(shù)柜某。
- .sta.getbroadcast用于獲取廣播地址;
- .sta.getconfig用于獲取配置信息舔株;
- .sta.gethostname用于獲取主機(jī)名
- .sta.getip用于獲取ip地址莺琳、掩碼、網(wǎng)關(guān)载慈;
- .sta.getmac用于獲取mac地址惭等;
- .sta.getrssi用于獲取連接點的rssi。如果未接入網(wǎng)絡(luò)則返回nil办铡;
- .sta.sethostname用于設(shè)置主機(jī)名辞做,只能包含數(shù)字琳要、字母、-秤茅,且不能超過32字符稚补,第一個和最后一個不能是下劃線;
- .sta.setip用于設(shè)置ip地址框喳、掩碼课幕、網(wǎng)關(guān);
- .sta.setmac用于設(shè)置mac地址五垮;
- .sta.status用于獲取狀態(tài)乍惊。
綜合小例子
nodeMCU提供的API還是蠻簡潔的,幾句話就可以實現(xiàn)wifi上網(wǎng)放仗。這里先使用.sta.sethostname設(shè)置nodeMCU模塊的名字润绎,方便與其他設(shè)備區(qū)分(比如,手機(jī))诞挨。注冊一個狀態(tài)(wifi.STA_GOTIP)監(jiān)聽莉撇,當(dāng)連入wifi的時候會觸發(fā)回調(diào)。最后使用.sta.config接入網(wǎng)絡(luò)惶傻,相當(dāng)于平時用手機(jī)輸入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")
簡書評論不能貼圖, 如有需要可以到我的GitHub上提issues