MQTT / UDP pre-roll: التكوين عن بعد والتوقيع الرقمي

ينتهي فصل الشتاء ، وهذه مناسبة لرسم خط آخر وإخبار ما الجديد في MQTT / UDP.

بالنسبة للمبتدئين ، روابط لمقدمة ومقال سابق.

شكراً لكل من استجاب باهتمام ، وخاصةً لأولئك الذين شاركوا أفكارهم. لقد ساعدتني حقًا في نهج التوقيع الرقمي. لذلك ، ما الذي تغير على نطاق واسع:

  • ظهرت آلية لتمديد بروتوكول مرن: Tagged Tail Records، TTRs
  • بناءً عليه ، تم إنشاء مخطط توقيع الحزمة الرقمية
  • تم إجراء آلية للتكوين عن بعد للمكونات
  • أثارت دورة CI الكاملة: التجميع ، اختبارات الوحدة ، اختبارات البروتوكول من طرف إلى طرف (4 * 4 لغات برمجة)
  • يدعم تطبيق C الآن بنيات مختلفة ويمكن أن يتكامل مع أنظمة تشغيل وشاشات مختلفة.
  • هناك حزم عامة لبيثون ولوا ، على الرغم من أنها قديمة بالفعل.

حسنًا ، هناك الكثير من الأشياء الصغيرة: التكامل مع OpenHAB وملفات التهيئة وتسجيل الدخول والتحقق من التوافق مع خدمة MQTT السحابية وحالة اختبار Wemos D1 (NodeMCU) وحالة اختبار لـ atmega128 + ethernet (وليس arduino) ، مثال على موصل بروتوكول على تم تصميم Java (CCU825) ، مثال على وحدة تحكم المخبر في علبة سطح المكتب (أخيرًا ، يمكنني تشغيل الضوء في الغرفة بنقرتين من الماوس :) ، والمزيد.

الآن بالترتيب.

الموسومة الذيل السجلات


أصبحت ضيقة كجزء من حزمة MQTT. أضفت إضافات الذيل إلى مجموعته في شكل محتوى بطول العلامة ، حيث يمكنك الآن وضع البيانات اللازمة. اليوم هو معرّف الحزمة ، معرف الحزمة التي نرد عليها (بالنسبة لجودة الخدمة ، لا يزال هذا يعمل) والتوقيع الرقمي ، إذا كان ممكّنًا. من المخطط أيضًا أن يكون الوقت والتاريخ بالمللي ثانية من لحظة قياس القيمة ولحظة إرسال الحزمة (كملطفة إلى لحظة القياس) ، والتمديدات التعسفية الإضافية ممكنة ضمن حجم حزمة UDP.

(لم يتم إدراج SVG ، الرسم التوضيحي هنا )

انها تعمل بالفعل في كل مكان ما عدا لوا. (بشكل عام ، Lua خيبت آمالي ، وفقط NodeMCU يحملها ، ثم سأحاول التبديل إلى Python هناك).

التوقيع الرقمي


كنت خائفًا من الاقتراب من هذا الوزن ، ولكن بعد ظهور ملحقات العلامة أصبح كل شيء بسيطًا جدًا. يتم توقيع الحزمة المرسلة وفقًا لمعيار HMAC MD5 (غيرها وجدتها طويلة جدًا لحزم UDP القصيرة) ، يتم إجراء فحص عند الإدخال. سواء تم قبول أو عدم قبول حزمة بدون توقيع ، فسيتم ترك رمز التطبيق. صحيح ، يوجد في Java مفتاح "رفض كل غير موقع" ، لكن يبدو أن هذا هو الحد الأقصى.

التكوين عن بعد


الصورة

في الواقع ، كل شيء بسيط مرة أخرى: يوجد برنامج سطح مكتب (Java ، يعمل في كل مكان) يقدم طلبًا (حزمة الاشتراك) لموضوع من نوع معين ( $SYS/conf/# ). جميع العقد التي يمكن تهيئتها عن بعد تتوافق مع القيم الحالية للمعلمات القابلة للتكوين. يقوم هذا البرنامج بتركيب واجهة مستخدم بسيطة بأسماء وحقول إدخال ، ويقوم المستخدم بتغيير الإعدادات ، وتعود أوامر التحديث إلى الوراء. البنية التحتية بأكملها في المكتبات ، من جانب رمز التطبيق ، تحتاج فقط إلى إصدار قائمة المعلمات وتكون قادرة على كتابة / قراءتها إلى ملف أو NVRAM.

العمارة ورمز النظام المعتمد لـ C


يمكنك الآن إضافة إعدادات للبنية (toolchain) ورمز الغراء لنظام التشغيل أو الشاشة المستهدفة. يتم اختبار هذا على ثلاثة تكوينات - unix / cygwin (./configure) و mingw و NUT / OS (بدون تهيئة).

حسنا ، ربما ، هذا كل شيء لهذا اليوم. لا يوجد وقت للتفاصيل ، ولكن إذا كان هناك اهتمام ، سأكتب بمزيد من التفاصيل.

وثائق المشروع ، أكثر من التطلعات ، لا تزال وثيقة الصلة بالموضوع ، وهي مكتوبة بشكل لائق هناك. نأسف لعدم وجود اللغة الروسية ، ولكن هناك القليل من الوقت لذلك ، أريد أن أترجم على أساس البنية التحتية ، ولم أجد حتى الآن أي خدمة عامة مقبولة (محرر على الإنترنت) لترجمة فقرة إلى فقرة.

حسنا ، مستودع نفسها .

Source: https://habr.com/ru/post/ar440438/


All Articles