إدارة التوت عبر websockets

اكتسب Raspberry Pi شعبية هائلة في جميع أنحاء العالم. ومع ذلك ، يواجه العديد من مطوري الهواة مشكلة الوصول إلى الجهاز من الإنترنت. كقاعدة عامة ، عليك أن تستمتع مع DDNS أو شراء عنوان IP ثابت. يشتمل كلا الخيارين على إعداد جهاز توجيه ، وهو ليس للجميع ولا يتوفر دائمًا. بالإضافة إلى ذلك - ينطوي فتح الوصول المباشر إلى الجهاز من الإنترنت على بعض المخاطر الأمنية.

من الطرق الشائعة للغاية لحل هذه المشكلة استخدام خادم وسيط يتم من خلاله الاتصال بالخادم والعميل مع بعضهما البعض.
يستخدم هذا النظام على نطاق واسع في حزم الوصول عن بعد المختلفة: VNCViewer ، AmmyyAdmin ، إلخ.

الخيار 1-DDNS

صورة

الخيار 2 - عنوان IP ثابت

صورة

الخيار 3 - استخدام خادم وسيط

صورة

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

كان اختيار البروتوكول واضحًا. لطالما كان WebSocket مدعومًا بواسطة المتصفحات ومعظم المنصات ولغات البرمجة.

نموذج ناقل البيانات تافه:

خادم WebSocket يدعم عدد غير محدود من القنوات. يمكن أن تكون كل قناة مفتوحة أو محمية بكلمة مرور. لا توجد قناة إلا في حالة اتصال عميل واحد على الأقل. لا يتم تخزين البيانات بشكل أساسي على الخادم. يتم تعيين كلمة المرور بواسطة العميل الأول الذي يتصل بالقناة. لن يتم السماح للعملاء بدون كلمة مرور / بكلمة مرور غير صحيحة بالدخول إلى القناة.

القناة عبارة عن حاوية للرسائل. تتكون الرسائل من ثلاثة أنواع: رسائل (أوامر) العناوين ، وهي مخصصة لواحد أو أكثر من المستلمين ، ورسائل الاستجابة ورسائل البث التي ستتلقى من قبل جميع العملاء المتصلين بالقناة.

صورة

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

لا يتم حفظ الرسائل في أي مكان ، ولا يتم تسجيلها ونقلها عبر بروتوكول wss الآمن.
تتم كتابة الرسائل كائنات JSON. يتم إرسال المعلومات الثنائية كسلسلة مشفرة Base64.

رمز المشروع متاح على جيثب ، والمركز الحالي يمكنك أن تجده هنا .
يتكون المشروع من خادم WebSocket على .net ، تطبيق عميل ويب يتصل بالخادم وتطبيق python لـ raspberry pi.

يعد تطبيق الويب بعيدًا عن الطريقة الوحيدة الممكنة للتفاعل مع خادم websocket. على سبيل المثال ، يمكنك بسهولة كتابة عميل سحابي "يستمع" إلى أحداث كاميرا الويب ويحفظ الصور على نوع من التخزين السحابي.

تسمح لك البنية بتوصيل عدد غير محدود من التوت والعملاء لكل قناة.
على سبيل المثال ، إذا كنت ترغب في إنشاء نوع من الأمن / التحكم في المناخ / نظام المنزل الذكي ، يمكنك وضع كل التوت على قناة واحدة وإرسال الأوامر لجميع أو بعض الحالات في وقت واحد.

أحداث البث "البث" ستتلقى جميع المشاركين في الشبكة.

بضع كلمات عن ميزات التطبيق


  1. الوصول عن بعد إلى نظام الملفات. يمكنك مشاهدة وتحميل وتحميل الصور والملفات الصوتية والملفات الأخرى. من السهل جدًا عدم حمل أرشيف الصور متعدد تيرابايت بأكمله على هاتفك. حسنًا ، أو إذا كنت بحاجة إلى البحث عن شيء ما في الأرشيف.
  2. يسمح لك PiCamera بتلقي صورة حسب الطلب وفي وضع كاميرا الويب. إلى جانب تلقي الصوت من الميكروفون ، يمكن استخدامه كحل أمان رخيص. يتطلب كاميرا بي متصلة.
  3. إرسال التسجيلات الصوتية لتوت العليق أو تلقي التسجيلات من الميكروفون. يمكن استخدامه في بعض مهام الأمان والتفاعل الصوتي مع القطط أو الأطفال. يتطلب اتصال بجهاز تلفزيون / مكبر صوت وميكروفون ، على التوالي.
  4. قم بتشغيل / إيقاف / الحصول على تركيز التلفزيون. يسمح لك بروتوكول CEC بالتحكم في تلفازك عبر كابل HDMI. يجب عليك تثبيت cec-client على التوت.
  5. عرض معلومات الصوت والنص على التلفزيون. تتضمن هذه الميزة تشغيل واستقبال التركيز على التلفزيون وعرض رسالة نصية مصحوبة بإشارة صوتية. أنها مريحة إذا كنت بحاجة إلى إجبار الأطفال عن بعد على أداء الواجب المنزلي.
  6. عرض الصور عن بعد. إذا كنت ترغب في مفاجأة عائلتك وعرض فجأة صورة لمغامراتك على تلفزيون الأسرة ، فهذه الوظيفة مخصصة لذلك. حدد أي صورة لجهاز الكمبيوتر الخاص بك أو الهاتف وإرسالها إلى التوت.
  7. الحصول على بيانات عن الرطوبة ودرجة الحرارة. توت العليق يرسل رسالة البث مع دورية محددة. بالإضافة إلى الرطوبة ودرجة الحرارة ، تحتوي الرسالة على معلومات حول درجة الحرارة وتحميل المعالج ، وتحميل القرص والذاكرة. معا ، يمكن استخدام جهاز التحكم عن بعد في منفذ الإدخال / الإخراج كوحدة تحكم عن بعد في المناخ الداخلي. مطلوب جهاز استشعار درجة الحرارة DHT11 (1 دولار) لقياس درجة الحرارة.
  8. إدارة منافذ الإدخال / الإخراج وهو يتيح لك قراءة المعلومات من منافذ GPIO المحددة وإخراج إشارة إليها. يمكنك الحصول على حالة المفاتيح ، والمصابيح الكهربائية ، وأجراس الحلقات ، ومن خلال التحكم في التتابع ، بعض الأجهزة الأكثر خطورة.
  9. بدء التشغيل عن بعد للأوامر يسمح بتنفيذ أي أوامر shell على التوت. على سبيل المثال ، ابدأ في عرض ألبوم صور أو فيلم. إذا كانت هذه الفرصة غير آمنة بالنسبة لك ، فيمكن تعطيل هذه الوظيفة.


صورة
أن تستمر ...

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


All Articles