配網(wǎng)優(yōu)化關(guān)鍵點(diǎn)
- 1配乓、100%配不上:路由器禁止了廣播端口(防止網(wǎng)絡(luò)風(fēng)暴)纠炮,添加組播方式解決
- 2惕澎、弱網(wǎng)今豆、網(wǎng)絡(luò)環(huán)境復(fù)雜配網(wǎng)成功率低 嫌拣。按照配網(wǎng)的步驟主要現(xiàn)象有
- 信道鎖定不了-設(shè)備端未收到app端的數(shù)據(jù):
- 設(shè)備端未解析出app端的數(shù)據(jù)
- app端未收到設(shè)備端的數(shù)據(jù)
時(shí)間錯(cuò)開了,沒有碰撞以及超時(shí)問題
有一個(gè)重要的問題信道堵塞呆躲,造成數(shù)據(jù)包丟包不完整异逐,解析不出來,所以這些間隔插掂,需要錯(cuò)開灰瞻,頻率最好不要太高
一.airKiss配網(wǎng)iOS Demo
- airKissDemo:點(diǎn)擊下載
-
備注
- demo中收到設(shè)備端發(fā)的數(shù)據(jù)解析是按照自定義的格式解析的凡纳,所以解析部分需要自己根據(jù)自己的協(xié)議解析
二.實(shí)現(xiàn)圖
備注
* 圖中的流程是根據(jù)我的項(xiàng)目畫的整個(gè)交互期虾,airKiss配網(wǎng)在第七步移動端接收到報(bào)文就結(jié)束了
* airkiss也只是設(shè)備端和手機(jī)端的交互,沒有云端
三.重點(diǎn)知識
3.1.關(guān)于設(shè)備端--輪詢信道的機(jī)制
- 首先掃描出周圍有那幾個(gè)信道的rounter楼入,比如有1璃弄,3要销,6信道,然后按照從下到大排序保存
- 然后在超時(shí)時(shí)間內(nèi)就一直輪詢著三個(gè)信道夏块,間隔時(shí)間硬件可設(shè)置疏咐,默認(rèn)為60s
- 超時(shí)時(shí)間一過纤掸,又要開始掃描周圍的信道,重復(fù)1浑塞,2步驟(超時(shí)時(shí)間可設(shè)置借跪,默認(rèn)時(shí)間為60s)
- 設(shè)備端先鎖定信道,然后就只接收此信道的數(shù)據(jù)缩举,解析數(shù)據(jù)垦梆,超時(shí)時(shí)間內(nèi)未解析出ssid和pwd就又開始重新鎖定信道。判斷是否鎖定信道是和協(xié)議包的前導(dǎo)域有關(guān)的仅孩。了解此機(jī)制托猩,可以更好的優(yōu)化程序
備注
3.2.關(guān)于手機(jī)端發(fā)送協(xié)議包--關(guān)于前導(dǎo)域
協(xié)議包前面有個(gè)前導(dǎo)域,設(shè)備端根據(jù)這個(gè)來鎖定信道辽慕,判斷這個(gè)信道正在進(jìn)行airkiss配網(wǎng)
所以這個(gè)前導(dǎo)域的數(shù)量確定需要根據(jù)設(shè)備端的信道輪詢間隔和手機(jī)端發(fā)送數(shù)據(jù)包的間隔來確定京腥,
信道一共有1-14個(gè),但是常用的一般就那么幾個(gè)溅蛉,網(wǎng)絡(luò)環(huán)境也一般很少集齊14個(gè)信道公浪,所以一般考慮8個(gè)信道足以,考慮到手機(jī)端和設(shè)備端不同步問題船侧,所以考慮數(shù)量考慮多一些欠气;
假設(shè)設(shè)備端的信道輪詢間隔為50ms,手機(jī)端發(fā)送數(shù)據(jù)包的間隔為5ms(也就是發(fā)送完一個(gè)前導(dǎo)域至少需要20ms),那么發(fā)送50個(gè)前導(dǎo)域镜撩,需要1s,足夠設(shè)備端輪詢20個(gè)信道
3.3.關(guān)于手機(jī)端發(fā)送協(xié)議包次數(shù)或說超時(shí)
按照airKiss協(xié)議的糾錯(cuò)分析预柒,最壞的情況下,最多需要5次就可以完成信息的發(fā)送袁梗,發(fā)送五次后糾錯(cuò)成功率99.999%宜鸯,發(fā)送五次后再發(fā)送意義不大。
5次的時(shí)間 = 5(協(xié)議包間隔+數(shù)據(jù)量數(shù)據(jù)包間隔)
假設(shè)遮怜,協(xié)議包間隔:100ms淋袖,數(shù)據(jù)包間隔:5ms,數(shù)據(jù)量:835 (假設(shè)50個(gè)前導(dǎo)域,ssid:helloword pwd:csy10841054)
5次的時(shí)間 = 5(100+8355) = 21.375s
這樣看超時(shí)時(shí)間30s足夠锯梁,但是還要以下因素
- 考慮手機(jī)和設(shè)備端不同步(發(fā)5次不夠
- ssid和pwd較長
- 網(wǎng)絡(luò)不好即碗,設(shè)備端連接路由的速度慢,(只有設(shè)備端連接上路由了陌凳,才回發(fā)數(shù)據(jù))
- 還要在加上被設(shè)備要回發(fā)數(shù)據(jù)給手機(jī)端(如隨機(jī)數(shù)拜姿,設(shè)備ID等)的時(shí)間
綜合這些考慮30s是不夠的,所以建議可以設(shè)置60s冯遂。
3.4.關(guān)于airKiss協(xié)議
* demo中有詳細(xì)的注釋
3.5.關(guān)于丟包和收不到包
關(guān)于丟包和收不到包蕊肥,除了上面說的時(shí)間錯(cuò)開了,沒有碰撞以及超時(shí)問題。還有一個(gè)重要的問題信道堵塞壁却,造成數(shù)據(jù)包丟包不完整批狱,解析不出來,所以這些間隔展东,需要錯(cuò)開赔硫,頻率最好不要太高。
手機(jī)端參數(shù)如下:
超時(shí)時(shí)間 | 協(xié)議包間隔 | 數(shù)據(jù)包間隔 |
---|---|---|
60000ms | 100ms | 5ms |
設(shè)備端參數(shù)如下:
掃描信道間隔 | 回發(fā)數(shù)據(jù)給手機(jī)端間隔 | 回發(fā)數(shù)據(jù)給手機(jī)端次數(shù) |
---|---|---|
100ms | 80ms | 60 |