حمولة حمولة كايين منخفضة الطاقة (Cayennelpp) تشفير ومشفر مكتوب في بيثون.
يوفر 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 درجة مئوية |
| رطوبة | 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 أ |
| تكرار | 118 | 4 | 1 | خطأ شنيع | 1 هرتز |
| نسبة مئوية | 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 كيلو جول |
| اتجاه | 132 | 2 | 1 | خطأ شنيع | 1 ° |
| وقت | 133 | 4 | 1 | خطأ شنيع | 1 ق |
| Gyrometer | 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 ON/OFF |
لا يحتوي Pycayennelpp على أي تبعيات خارجية ولا يستخدم سوى وظائف وأنواع من Python 3. إنها متوافقة مع جميع إصدارات Python الأخيرة والمدعومة رسميًا 3.6 وما فوق ، على الرغم من أن Python 3.4 سيفعل ذلك.
منذ أن تم دعم Micropython Pycayennelpp 1.2.0 رسميًا ، ونشرت كحزمة منفصلة تحت micropython-pycayennelpp .
تتوفر حزمة Pycayennelpp عبر PYPI باستخدام pip . لتثبيته تشغيل:
pip3 install pycayennelpp باستخدام Micropythons upip Module 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 وظيفة مساعد لترميز 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 )) هناك وظيفتان غلافان لتشفير نوع 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 قبل دمجها في الفرع الرئيسي.
يرجى ملاحظة الإرشادات المساهمة وقواعد السلوك.
هذا مشروع برمجي مفتوح المصدر مجاني تم نشره بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.