카이엔 저전력 페이로드 (Cayennelpp) 디코더와 파이썬으로 작성된 인코더.
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 | 진실 | 1m |
| 짐 | 122 | 3 | 1 | 진실 | 0.001kg |
| 집중 | 125 | 2 | 1 | 거짓 | 1 |
| 힘 | 128 | 2 | 1 | 거짓 | 1 |
| 거리 | 130 | 4 | 1 | 거짓 | 0.001km |
| 에너지 | 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 온/꺼짐 |
PycayEnelpp에는 외부 의존성이 없으며 내장 기능 및 Python 3의 유형 만 사용합니다. 3.6 이상의 최신 및 공식적으로 지원되는 Python 버전과 호환되지만 Python 3.4조차도 가능합니다.
Pycayennelpp 1.2.0 이후 마이크로 파이썬은 공식적으로 지원되며 micropython-pycayennelpp 에 따라 별도의 패키지로 게시되었습니다.
pycayennelpp 패키지는 pip 사용하여 PYPI를 통해 사용할 수 있습니다. 실행을 설치하려면 :
pip3 install pycayennelpp Micropython 사용 upip 모듈 사용 PycayEnelpp는 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 유형, 즉 lppframe, lppdata 및 lpptype의 적절한 JSON 인코딩을위한 도우미 기능을 제공합니다.
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 라이센스에 따라 게시 된 무료 오픈 소스 소프트웨어 프로젝트입니다.