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许可证发布的免费开源软件项目。