هذا الصندوق هو منفذ من API Cayenne Low Power Payload (LPP) إلى لغة برمجة الصدأ. يوفر طريقة سهلة لإرسال البيانات عبر شبكات LPWAN مثل Lorawan. تتوافق Cayenne LPP مع قيود حجم الحمولة ، والتي يمكن تخفيضها إلى 11 بايت وتسمح للجهاز بإرسال بيانات مستشعر متعددة في وقت واحد. يكمن تركيزه على الأنظمة المدمجة ، لذلك يستخدم سمة "NO_STD" لربط فقط Core-crate بدلاً من std-crate. كما أنه لا يعتمد على أي صناديق أخرى.
بالإضافة إلى ذلك ، من الممكن أيضًا إرسال بيانات مستشعر مختلفة في إطارات مختلفة. للقيام بذلك ، يمكن استخدام قيمة قناة البيانات.
الحمولة المتوافقة مع صيحة الحمولة المتكاملة من وحدة التحكم في شبكة الأشياء (TTN). يمكن تمكينه للتنزيل أو الوصلة الصاعدة للجهاز. يمكن العثور على مزيد من المعلومات حول حمولة Cayenne LPP من TTN هنا.
يمكن العثور على إصدار C ++ الأصلي من Cayenne LPP هنا.
سيوضح المثال التالي كيفية إضافة نوعين من البيانات ، وهو قيمة إدخال رقمية واحدة وقيمة درجة حرارة واحدة ، إلى حمولة Cayenne LPP. نظرًا لعدم توفر مخصص للذاكرة ("NO_STD") ، فإن واجهة برمجة التطبيقات تحتاج إلى مخزن مؤقت ، سيتم ملؤه به.
لإنشاء مخزن مؤقت مع الحجم الدقيق للحمولة ، استخدم ثوابت حجم أنواع البيانات المختلفة ، التي توفرها واجهة برمجة التطبيقات. لإضافة اثنين من المدخلات الرقمية ، فقط اضرب متغير الحجم بمقدار 2 واستخدم هذا الحجم لتهيئة المخزن المؤقت. يجب أن يكون المخزن المؤقت قابلاً للتغيير لأنه سيتم تعديله بواسطة API. لاحظ أنه ليس من الضروري تحديد حجم المخزن المؤقت بالضبط ، بل يجب أن يكون أكبر أو مساوٍ لحجم أنواع البيانات التي تتم إضافتها إليها. لذلك ، من الممكن إعادة استخدام المخزن المؤقت بأنواع البيانات المختلفة. يمكن استخدام وظيفة Cayennelpp :: Reset () لإعادة ضبط الهيكل.
بعد التهيئة العازلة ، ما عليك سوى إنشاء مثيل جديد من API Cayennelpp وإضافة أنواع البيانات إلى الحمولة مع وظائف API المتاحة.
بعد إضافة جميع القيم ، يمكن استرداد شريحة إلى المخزن المؤقت عن طريق استدعاء وظيفة Cayennelpp :: Payload_slice (). يمكن استخدام الشريحة بعد ذلك لإرسال البيانات عبر واجهة برمجة التطبيقات الخارجية.
fn main ( ) {
// create the buffer for a digital input and a temperature data type
let mut buffer : [ u8 ; LPP_DIGITAL_INPUT_SIZE + LPP_TEMPERATURE_SIZE ] = [ 0 ; LPP_DIGITAL_INPUT_SIZE + LPP_TEMPERATURE_SIZE ] ;
// create a new instance of CayenneLPP struct and initialize it with the buffer
let mut lpp = CayenneLPP :: new ( & mut buffer ) ;
// add a digital input with the value 0x55
lpp . add_digital_input ( 3 , 0x55 ) . unwrap ( ) ;
// add a temperature value of 12.3°C
lpp . add_temperature ( 5 , 12.3 ) . unwrap ( ) ;
// retrieve the payload slice to be able to send the payload via an external API
let cayenne_lpp_payload = lpp . payload_slice ( ) ;
// ... send the data via an external API
// reset the API and start from the beginning of the buffer
lpp . reset ( ) ;
// add new values...
lpp . add_digital_input ( 3 , 0xAA ) . unwrap ( ) ;
lpp . add_temperature ( 5 , 32.1 ) . unwrap ( ) ;
} يجب أن تكون واجهة برمجة التطبيقات في حالتها الحالية مستقرة جدًا للاستخدام. حاليًا يدعم no_std فقط ، ولكن سيكون من الممكن دعم واجهة برمجة تطبيقات أسهل لاستخدام API لـ std أيضًا.
ومع ذلك ، إذا كان لديك أي ملاحظات أو ترغب في إضافة بعض الوظائف ، فلا تتردد في بدء مناقشة أو إرسال علاقات عامة ، ولكن لا تنس إضافة اختبارات الوحدة و / أو اختبارات التكامل ، إذا كنت تريد أن يتم دمجها في الريبو.
يتم إصدار الصندوق تحت رخصة معهد ماساتشوستس للتكنولوجيا. انظر الترخيص لمزيد من المعلومات.