ตัวถอดรหัสและเครื่องเข้ารหัส Cayenne Low Power (Cayennelpp) ที่เขียนด้วย Python
Pycayennelpp นำเสนออินเทอร์เฟซที่กระชับพร้อมฟังก์ชั่นการเข้ารหัสและถอดรหัสที่เหมาะสมสำหรับรูปแบบ CayenNelpp ซึ่งรองรับเซ็นเซอร์หลายประเภท โครงการมีจุดมุ่งหมายเพื่อคุณภาพของรหัสสูงโดยรวมและการครอบคลุมการทดสอบที่ดี
ดูเพิ่มเติมที่ MyDevicesiot/CayenNelpp สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบและการใช้งานอ้างอิงใน C ++
โครงการอยู่ระหว่างการพัฒนาที่ใช้งานอยู่ การเผยแพร่จะถูกเผยแพร่ทันทีที่มีคุณสมบัติใหม่จำนวนหนึ่งและการแก้ไขได้รับการจัดทำขึ้น
ตารางต่อไปนี้แสดงรายการประเภทข้อมูลที่รองรับในปัจจุบันด้วยรหัส 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 กรัม |
| บารอมิเตอร์ | 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 ม. |
| โหลด | 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 มีให้บริการผ่าน PYPI โดยใช้ pip ในการติดตั้ง Run:
pip3 install pycayennelpp การใช้ micropythons upip pycayennelpp สามารถติดตั้งได้ดังนี้ภายใน micropython:
import upip
upip . install ( "micropython-pycayennelpp" )หรือทำงานด้วยในเปลือกหอย:
micropython -m upip install micropython-pycayennelppการแสดงต่อไปนี้วิธีการใช้ pycayennelpp ในแอปพลิเคชันของคุณเองเพื่อเข้ารหัสและถอดรหัสข้อมูลเข้าไปในและออกจาก CayenNelpp ตัวอย่างโค้ดทำงานกับ Python 3 มาตรฐานและ micropython โดยสมมติว่าคุณได้ติดตั้งแพ็คเกจ PycayenNelpp ดังที่แสดงด้านบน
การเข้ารหัส
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 ไม่รองรับ bytes(frame) โดยใช้วิธีการภายใน LppFrame.__bytes__(self) (ยัง) ดังนั้นคุณต้องใช้ 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 ให้ฟังก์ชั่น HELPER สำหรับการเข้ารหัส JSON ที่เหมาะสมของประเภท pycayennelpp เช่น 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 )) มีสองฟังก์ชั่น wrapper เพื่อเข้ารหัสประเภท 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