久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8346|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Air800(GPRS+GPS模塊)連接OneNet平臺(tái)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:265178 發(fā)表于 2017-12-22 10:17 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Air800介紹
Air800是上海合宙通信科技有限公司推出的一款支持GPRS+北斗+GPS的三合一模塊。其開發(fā)方式為Luat,Luat = Lua + AT, Luat 是合宙(AirM2M)推出的物聯(lián)網(wǎng)開源架構(gòu),依托于通信模塊做簡易快捷的開發(fā),將傳統(tǒng)的AT命令用Lua封裝成API,并提供各種功能應(yīng)用的demo,大大減少用戶的開發(fā)成本。詳細(xì)資料參見:wiki.openluat點(diǎn)com
PS:一開始準(zhǔn)備用安信可的A7模塊來實(shí)現(xiàn)將GPS上傳到OneNET平臺(tái)上,但是實(shí)際開發(fā)中發(fā)現(xiàn)各種功能都需要自己去實(shí)現(xiàn)(MQTT的實(shí)現(xiàn)讓我頭疼好久)并且還得外接一個(gè)MCU,大幅度增加了開發(fā)成本和開發(fā)時(shí)間,所以不得不放棄這種方案。在后續(xù)的選型時(shí),無意間在淘寶上看到Air800,不需要外接MCU和豐富API讓我心動(dòng)不已,于是買了一塊來嘗鮮,在開發(fā)過程中,不得不說Luat開發(fā)方式對(duì)開發(fā)者很友好,省略了很多自己造輪子的過程,所以在這兒也推薦一波。
OneNet平臺(tái)介紹
OneNET作為中國移動(dòng)通信集團(tuán)推出的一個(gè)專業(yè)物聯(lián)網(wǎng)開放云平臺(tái),提供了豐富的智能硬件開發(fā)工具和可靠的服務(wù),助力各類終端設(shè)備迅速接入網(wǎng)絡(luò),實(shí)現(xiàn)數(shù)據(jù)傳輸、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)管理等完整的交互流程。
支持公開協(xié)議包括EDP、MODBUS、MQTT以及HTTP等多種協(xié)議。詳細(xì)資料參見:https://open.iot.10086.cn/doc
所需API
Luat封裝了很多的實(shí)用API,所以在實(shí)現(xiàn)一些功能的時(shí)候就無需自己造輪子,直接調(diào)用其API即可
mqtt
pack
gps
lbs
json
實(shí)現(xiàn)思路
本例通過MQTT將Air800獲取到的GPS坐標(biāo)發(fā)送到OneNET平臺(tái)并顯示。
MQTT協(xié)議是一個(gè)面向物聯(lián)網(wǎng)應(yīng)用的即時(shí)通信協(xié)議,使用TCP/IP提供網(wǎng)絡(luò)連接,能夠?qū)ω?fù)載內(nèi)容實(shí)現(xiàn)消息屏蔽傳輸,開銷小,可以有效降低網(wǎng)絡(luò)流量。OneNET平臺(tái)采用的是標(biāo)準(zhǔn)MQTT協(xié)議,所以使用合宙提供的MQTT API就能很方便的連上。只需要在OneNET上生成一個(gè)應(yīng)用方可得到MQTT鑒權(quán)
Q1:MQTT連接鑒權(quán)時(shí),Payload中ClientIdentifier;UserName;UserPassword分別填寫什么?

A: ClientIdentifier: 創(chuàng)建設(shè)備時(shí)得到的設(shè)備ID,為數(shù)字字串;     

       UserName: 注冊(cè)產(chǎn)品時(shí),平臺(tái)分配的產(chǎn)品ID,為數(shù)字字串;

       UserPassword: 為設(shè)備的鑒權(quán)信息(即唯一設(shè)備編號(hào),SN),或者為apiKey,為字符串。
OneNET平臺(tái)優(yōu)勢(shì)之一可以利用數(shù)據(jù)點(diǎn)快速生成應(yīng)用
要想讓數(shù)據(jù)在OneNET平臺(tái)上以數(shù)據(jù)點(diǎn)形式展現(xiàn)出來就得按照OneNET協(xié)議上傳數(shù)據(jù),使用OneNET平臺(tái)的mqtt協(xié)議調(diào)試工具可以看到payload以json格式發(fā)送,并在json前面加0x01,0x00,0x20(這個(gè)字節(jié)為json長度),payload格式發(fā)送。
json格式如下
  1. {
  2.     "datastreams": [
  3.         {
  4.             "id": "temperature", //數(shù)據(jù)流名稱或數(shù)據(jù)流模板名稱
  5.             "datapoints": [
  6.                {
  7.                   "at": "2013-04-22T00:35:43", //上傳數(shù)據(jù)點(diǎn)時(shí)間,可選。如果為空,則設(shè)備云會(huì)取當(dāng)前時(shí)間。
  8. //如果存在其格式必須為"YYYY-MM-DDThh:mm:ss"的形式(例如:2015-03-22T22:31:12)
  9.                     "value": 42  //上傳數(shù)據(jù)點(diǎn)值
  10.                 },
  11.                 {
  12.                     "at": "2013-04-22T00:55:43",
  13.                     "value": 84 //上傳數(shù)據(jù)點(diǎn)值
  14.                 }
  15.             ]
  16.         },
  17.         {
  18.             "id": "key", //數(shù)據(jù)流名稱或數(shù)據(jù)流模板名稱
  19.             "datapoints": [
  20.                 {
  21.                     "at": "2013-04-22T00:35:43",//上傳數(shù)據(jù)點(diǎn)時(shí)間,可選。
  22.                     "value": {…}//上傳數(shù)據(jù)點(diǎn)值
  23.                 },
  24.                 {
  25.                     "at": "2013-04-22T00:35:43",
  26.                     "value": {…}//上傳數(shù)據(jù)點(diǎn)值
  27.                 }
  28.             ]
  29.         },
  30.         {…}
  31.     ]
  32. }
復(fù)制代碼

本例中的json格式為

  1. {
  2.     "datastreams": [
  3.         {
  4.             "id": "gps",
  5.             "datapoints": [
  6.                 {
  7.                     "at": "",
  8.                     "value": {
  9.                         "lon": 106.584,
  10.                         "lat": 29.5707,
  11.                         "ele": 100
  12.                     }
  13.                 }
  14.             ]
  15.         }
  16.     ]
  17. }
復(fù)制代碼

可以看到對(duì)應(yīng)不同的數(shù)據(jù)點(diǎn),只需要修改“id”和“datapoints”。
部分代碼
所以將GPS數(shù)據(jù)發(fā)送到OneNET平臺(tái)上,最關(guān)鍵點(diǎn)將獲取到的GPS數(shù)據(jù)打包為OneNET數(shù)據(jù)點(diǎn)格式

  1. local function msgPack()
  2.   --打包json
  3.   local torigin =
  4.   {
  5.     datastreams =
  6.     {{
  7.       id = "gps",
  8.       datapoints =
  9.       {{
  10.         at = "",
  11.         value =
  12.         {
  13.           lon = bgps.returnBlng(),      --得到獲取到的經(jīng)度
  14.           lat = bgps.returnBlat(),      --得到獲取到的緯度
  15.           ele = "100"
  16.         }
  17.       }}
  18.     }}
  19.   }
  20.   local msg = json.encode(torigin)      --對(duì)json進(jìn)行編碼
  21.   local len = msg.len(msg)
  22.   buf = pack.pack("bbbA", 0x01,0x00,len,msg)    --打包數(shù)據(jù)流字節(jié)頭
  23. end
復(fù)制代碼

GPS讀取數(shù)據(jù)處理

  1. --[[
  2.   字符串分割函數(shù),和其他語言的split使用方式類似
  3.   參數(shù):
  4.     s:待分割的字符串
  5.     sp:分割標(biāo)識(shí)符
  6.   返回值:分割得到的字符串,類型為table
  7.   例子:temp = split("a,b,c,d",",")
  8.        temp = {"a","b","c","d"}
  9. ]]
  10. function split(s, sp)  
  11.     local res = {}
  12.     local temp = s  
  13.     local len = 0  
  14.     while true do  
  15.         len = string.find(temp, sp)  
  16.         if len ~= nil then  
  17.             local result = string.sub(temp, 1, len-1)  
  18.             temp = string.sub(temp, len+1)  
  19.             table.insert(res, result)  
  20.         else  
  21.             table.insert(res, temp)  
  22.             break  
  23.         end  
  24.     end  
  25.     return res  
  26. end

  27. local function gpsGet()
  28.   if gps.isfix() == true then           --gps定位成功
  29.      local gpsStr = gps.getgpslocation()   --返回值為E,121.5259850,N,31.2356616格式 所以需要分割
  30.      local temp = split(gpsStr,",")
  31.      blng = temp[2]
  32.      blat = temp[4]
  33.   end
  34.   if gps.isfix() == false then      --gps定位失敗  用基站定位
  35.     sys.timer_start(qrygps,100)
  36.   end
  37. end
復(fù)制代碼

完整代碼見:https://github.com/lenghonglin/openLuat_Air800


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:328861 發(fā)表于 2018-5-15 10:38 | 只看該作者
有沒有完整代碼?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区在线视频 | 精品亚洲永久免费精品 | 日韩av在线一区 | 国产激情一区二区三区 | 欧美乱做爰xxxⅹ久久久 | 激情婷婷成人 | 91精产国品一二三区 | 精品亚洲一区二区三区四区五区 | 日韩电影免费观看中文字幕 | 99国产精品视频免费观看一公开 | 国产ts人妖系列高潮 | 国产精品一区二区视频 | 国产成人免费视频网站高清观看视频 | 精品亚洲一区二区三区四区五区高 | 北条麻妃国产九九九精品小说 | 日韩一区二区三区在线 | 成人国产精品 | 亚洲欧美日韩电影 | 国产一区二区三区免费 | 青青草社区 | 欧美精品一区在线 | 草草网 | 日韩三级电影在线看 | 欧美日韩精品专区 | av在线免费播放 | 亚洲色图综合网 | 亚洲人精品午夜 | www国产成人 | 91精品久久久 | 黄网站免费在线看 | 不卡一区二区三区四区 | 国产精品一区二区在线播放 | 久久国产精品久久久久久 | 国产精品久久久久久久久久久久冷 | 婷婷色综合 | 久久伊人操 | 欧美激情久久久 | 日本中文字幕在线观看 | 亚洲精品一区二区三区在线 | 亚洲日本免费 | 亚洲成人观看 |