Cayenne低功率有效載荷(Cayennelpp)解碼器和用Python編寫的編碼器。
Pycayennelpp提供了一個簡潔的接口,具有適當的編碼和解碼功能,可為Cayennelpp格式提供支持,從而支持許多傳感器類型。該項目的目的是整體高碼質量和良好的測試覆蓋範圍。
有關格式和C ++的參考實現的更多信息,請參見MyDevicesiot/Cayennelpp。
該項目正在積極發展。發行版將在製作一定數量的新功能和修復程序後立即出版。
下表列出了使用LPP代碼(等於IPSO代碼-3200)的當前支持的數據類型,數據大小為字節,尺寸,簽名和數據解決方案。
| 類型名稱 | LPP | 尺寸 | 暗淡 | 簽名 | 解決 |
|---|---|---|---|---|---|
| 數字輸入 | 0 | 1 | 1 | 錯誤的 | 1 |
| 數字輸出 | 1 | 1 | 1 | 錯誤的 | 1 |
| 模擬輸入 | 2 | 2 | 1 | 真的 | 0.01 |
| 模擬輸出 | 3 | 2 | 1 | 真的 | 0.01 |
| 通用傳感器 | 100 | 4 | 1 | 錯誤的 | 1 |
| 照明 | 101 | 2 | 1 | 錯誤的 | 1勒克斯 |
| 在場 | 102 | 1 | 1 | 錯誤的 | 1 |
| 溫度 | 103 | 2 | 1 | 真的 | 0.1°C |
| 濕度 | 104 | 1 | 1 | 錯誤的 | 0.5% |
| 加速度計 | 113 | 6 | 3 | 真的 | 0.001 g |
| 晴雨表 | 115 | 2 | 1 | 錯誤的 | 0.1 HPA |
| 電壓 | 116 | 2 | 1 | 錯誤的 | 0.01 v |
| 當前的 | 117 | 2 | 1 | 錯誤的 | 0.001 a |
| 頻率 | 118 | 4 | 1 | 錯誤的 | 1 Hz |
| 百分比 | 120 | 1 | 1 | 錯誤的 | 1% |
| 高度 | 121 | 2 | 1 | 真的 | 1 m |
| 載入 | 122 | 3 | 1 | 真的 | 0.001公斤 |
| 專注 | 125 | 2 | 1 | 錯誤的 | 1 |
| 力量 | 128 | 2 | 1 | 錯誤的 | 1 |
| 距離 | 130 | 4 | 1 | 錯誤的 | 0.001公里 |
| 活力 | 131 | 4 | 1 | 錯誤的 | 0.001 kJ |
| 方向 | 132 | 2 | 1 | 錯誤的 | 1° |
| 時間 | 133 | 4 | 1 | 錯誤的 | 1 s |
| 陀螺儀 | 134 | 6 | 3 | 真的 | 0.01°/s |
| 顏色 | 135 | 3 | 3 | 錯誤的 | 1 RGB |
| 地點 | 136 | 9 | 3 | 真的 | 0.00001 lat |
| 0.00001 LON | |||||
| 0.01 Alt | |||||
| 轉變 | 142 | 1 | 1 | 錯誤的 | 1開/關 |
Pycayennelpp沒有任何外部依賴項,只使用python 3的內置功能和類型。它與所有最新且正式支持的Python版本3.6及更高版本兼容,儘管甚至Python 3.4都可以。
由於Pycayennelpp 1.2.0 Micropython得到了正式支持,並在micropython-pycayennelpp下作為單獨的包裝出版。
Pycayennelpp軟件包可通過PIP通過pip獲得。要安裝它運行:
pip3 install pycayennelpp使用MicropyThons upip模塊Pycayennelpp可以如下安裝Micropython中:
import upip
upip . install ( "micropython-pycayennelpp" )或與外殼一起運行:
micropython -m upip install micropython-pycayennelpp以下顯示瞭如何在您自己的應用程序中利用Pycayennelpp來編碼和從Cayennelpp進行編碼和解碼數據。假設您已經安裝瞭如上圖所示的Pycayennelpp軟件包,則代碼片段與標準Python 3和Micropython一起使用。
編碼
from cayennelpp import LppFrame
# create empty frame
frame = LppFrame ()
# add some sensor data
frame . add_temperature ( 0 , - 1.2 )
frame . add_humidity ( 6 , 34.5 )
# get byte buffer in CayenneLPP format
buffer = bytes ( frame )注意: Micropython不支持使用內部方法LppFrame.__bytes__(self) (尚未) bytes(frame) 。因此,您需要使用LppFrame.to_bytes(self) 。
解碼
from cayennelpp import LppFrame
# byte buffer in CayenneLPP format with 1 data item
# i.e. on channel 1, with a temperature of 25.5C
buffer = bytearray ([ 0x01 , 0x67 , 0x00 , 0xff ])
# create frame from bytes
frame = LppFrame (). from_bytes ( buffer )
# print the frame and its data
print ( frame )JSON編碼
LPPUTIL類提供了適用於Pycayennelpp類型的JSON編碼的助手功能,即LppFrame,Lppdata和LppType。
import json
from cayennelpp import LppFrame , LppUtil
# create empty frame
frame = LppFrame ()
# add some sensor data
frame . add_temperature ( 0 , - 1.2 )
frame . add_humidity ( 6 , 34.5 )
# json encoding
print ( json . dumps ( frame , default = LppUtil . json_encode , indent = 2 ))有兩個包裝器函數可以將LPP類型明確編碼為數字或字符串, LppUtil.json_encode默認值(請參見上文):
# type as number
print ( json . dumps ( frame , default = LppUtil . json_encode_type_int , indent = 2 ))
# type as string
print ( json . dumps ( frame , default = LppUtil . json_encode_type_str , indent = 2 ))為免費的開源軟件項目做出貢獻,可以通過許多不同的方式進行。隨意打開問題並創建拉力請求以幫助改善該項目。每個拉的請求必須通過Travis-CI進行的一些自動測試和檢查,然後將其合併到主分支中。
請注意貢獻指南和行為準則。
這是根據MIT許可證發布的免費開源軟件項目。