登錄平臺:IOTOS?愛投斯物聯中臺
賬號:iotos_test 密碼:iotos123
代碼地址:IOTOSDK-Python: IOTOS Python版本SDK,自帶原生介面和采集引擎 (gitee.com)
目錄
前言
驅動目的
適用范圍
使用示例
驅動代碼
驅動決議
-
前言
Coap(Constrained Application Protocol)是一種在物聯網世界的類web協議,它的詳細規范定義在 RFC 7252,COAP名字翻譯來就是“受限應用協議”,顧名思義,使用在資源受限的物聯網設備上,物聯網設備的ram,rom都通常非常小,運行TCP和HTTP是不可以接受的,
對于那些微型設備而言接入互聯網非常困難,在當前由PC機組成的世界,資訊交換是通過TCP和應用層協議HTTP實作的,但是對于小型設備而言,實作TCP和HTTP協議顯然是一個過分的要求,為了讓小設備可以接入互聯網,CoAP協議被設計出來, CoAP是一種應用層協議,它運行于 UDP協議之上而不是像HTTP那樣運行于TCP之上,CoAP協議非常小巧,最小的資料包僅為4位元組,
-
驅動目的
將以CoAP通訊方式的設備資料上云
-
適用范圍
CoAP通訊協議、可以自行設定連接CoAP服務端ip和埠的設備
-
使用示例
- 進入愛投斯中臺,賬號為iotos_test,密碼為iotos123,在【創建模板】->【我的模板】,創建模板,填寫相關資訊,配置需要的引數

- 創建網關

- 填好網關名稱后點擊確認

- 創建設備示例點擊【系統設備】 -> 【通信網關】 -> 【設備實體】->【創建設備】

- 填寫【設備名稱】、選擇剛剛創建的【模板驅動】和【通信網關】,

- 創建資料點,點擊【我的設備】 -> 【通信網關】 -> 【設備實體】 -> 【資料點】,并在【設備實體】下拉串列選擇剛剛創建的設備實體

- 點擊右邊的創建資料點,填寫名稱

- 設備轉發過來多少個資料就創建幾個資料,采用批量上傳的方式,第一個點需要在param引數下配置一個變數"private",值為first_point如下:

- 其他資料資料點中的屬性需要填寫"point"和"index",資料點中的point為上述提到的第一個點的oid,index表示除開第一個后該資料點為第幾個,是第幾個就填幾個,從1開始,

- 在【系統設備】 -> 【通信網關】中找到剛才創建的網關,點擊【高級】

- 開啟云網關,密碼為賬號密碼

- 點擊 【系統設備】 -> 【通信網關】 -> 【設備實體】->【資料點】,選擇剛才創建的設備實體

- 即可查看資料已經上報成功

-
驅動代碼
#!coding:utf8
import sys
sys.path.append("..")
from driver import *
from coapthon.client.helperclient import HelperClient
# host = "192.168.11.36"
# port = 5683
# path = "zxcvb"
class CoAP(IOTOSDriverI):
# 1、通信初始化
def InitComm(self, attrs = None):
try:
self._HOST = self.sysAttrs['config']['param']['HOST']
self._PORT = self.sysAttrs['config']['param']['PORT']
self._PATH = self.sysAttrs['config']['param']['PATH']
self._client=HelperClient(server=(self._HOST, self._PORT))
self.setPauseCollect(False)
self.setCollectingOneCircle(False)
self.online(True)
except Exception as e:
self.debug(u'初始化失敗'+e.message)
# 2、采集
def Collecting(self, dataId):
try:
cfgtmp = self.data2attrs[dataId]['config']
# 過濾掉非采集點
if cfgtmp["param"] == "":
return ()
# 過濾采集點
if 'disabled' in cfgtmp and cfgtmp['disabled'] == True:
return ()
else:
self.debug(self.name(dataId))
if 'private' in cfgtmp['param'] and cfgtmp['param']['private'] == 'first_point':
response = self._client.get(self._PATH)
if response.payload:
data_list = []
for key, value in eval(response.payload).items():
data_list.append(value)
self.debug(tuple(data_list))
return tuple(data_list)
return ()
except Exception as e:
self.debug(u'采集失敗'+e.message)
# 事件回呼介面,監測點操作訪問
def Event_setData(self, dataId, value):
return json_dumps({'code': 0, 'msg': '', 'data': ''})
-
驅動決議
- 運行環境為python3,需要先安裝CoAPython3包用于CoAP的通訊,首先先匯入驅動和CoAP通訊所需的包
#!coding:utf8
import sys
sys.path.append("..")
from driver import *
from coapthon.client.helperclient import HelperClient
- 先進行驅動的初始化,拿到中臺設備實體中設定的引數,在初始化中建立CoAP連接并且
class CoAP(IOTOSDriverI):
# 1、通信初始化
def InitComm(self, attrs = None):
try:
self._HOST = self.sysAttrs['config']['param']['HOST']
self._PORT = self.sysAttrs['config']['param']['PORT']
self._PATH = self.sysAttrs['config']['param']['PATH']
self._client=HelperClient(server=(self._HOST, self._PORT))
self.setPauseCollect(False)
self.setCollectingOneCircle(False)
self.online(True)
except Exception as e:
self.debug(u'初始化失敗'+e.message)
- 進行采集,先利用資料點中的配置過濾掉非采集點,再確定采集點,如果設備將資料轉發過來的話就進行資料的決議將資料上傳至中臺
# 2、采集
def Collecting(self, dataId):
try:
cfgtmp = self.data2attrs[dataId]['config']
# 過濾掉非采集點
if cfgtmp["param"] == "":
return ()
# 過濾采集點
if 'disabled' in cfgtmp and cfgtmp['disabled'] == True:
return ()
else:
self.debug(self.name(dataId))
if 'private' in cfgtmp['param'] and cfgtmp['param']['private'] == 'first_point':
response = self._client.get(self._PATH)
if response.payload:
data_list = []
for key, value in eval(response.payload).items():
data_list.append(value)
self.debug(tuple(data_list))
return tuple(data_list)
return ()
except Exception as e:
self.debug(u'采集失敗'+e.message)
# 事件回呼介面,監測點操作訪問
def Event_setData(self, dataId, value):
return json_dumps({'code': 0, 'msg': '', 'data': ''})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/349724.html
標籤:其他
上一篇:汽車級MCU賽道“大爆發”
