~ SMAK ~ - وحدات تحكم قابلة للبرمجة للمنازل الذكية باستخدام مكتبة asyncio على MicroPython



الديباجة


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

في الوقت نفسه ، سيسمح لي تنفيذ هذا المفهوم بتعميق فهمي لاستخدام المتحكمات الدقيقة باستخدام إمكانات MicroPython ، التي أحبها تمامًا مع الوهم بالخفة مقارنة بـ C ++ ، حيث قمت في حياتي الماضية بمشاريع مختلفة التعقيد ، بالإضافة إلى تنفيذ الخوارزميات ، حتى والتي إما لم تصل اليدين ، أو لم يتم تجسيدها في المكتبات بلغات عالية المستوى. هذا ، في الواقع ، حدد اهتمامي بدقة في التنفيذ الخاص بي ، دون اللجوء إلى حلول واسعة النطاق تتراوح من الشركات المصنعة المعروفة لنفس Xiaomi إلى التطبيقات المتخصصة مثل EspHome أو الإطارات. على الرغم من أنني لا أستبعد احتمال أنه بعد أن مررت بدائرة كبيرة وشائكة من تصميمي الخاص ، محشوة بالأقماع والذرة ، منتفخة جدًا ، ولكن بالطبع ، لن تهزم ، سأقوم بالزفير ،سأنفق أموالي المكتسبة بشق الأنفس على أجهزة مصممة ومعبأة بشكل جميل للإنتاج الأجنبي والروسي بسعر سوقي للغاية وأطبق الخبرة المكتسبة في الغيوم الموجودة وليس الوحوش مثل MiHime أو Domoticz أو IFTT أو أي شيء آخر.

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



نهج عام


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

قد يكون لدى وحدة التحكم نفسها بالفعل قنوات اتصال أكثر قوة وتستخدم بروتوكولات أكثر تقدمًا مثل MQTT أو ZigBee لتنظيم رسم بياني شبكي مستقر مع وصول لاحق إلى الإنترنت.

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

  • الدفيئة - درجة الحرارة والإضاءة ورطوبة التربة والهواء
  • حديقة - سقي ورطوبة التربة
  • الحاضنة - درجة الحرارة ، الرطوبة ، دوران الصينية ، الصوت
  • برودر - درجة الحرارة والرطوبة والإضاءة
  • Coop - درجة الحرارة والإضاءة
  • خلية النحل - درجة الحرارة والرطوبة والوزن والصوت (سرب)
  • – , ,
  • – ,
  • – ,
  • – ,
  • – ,
  • – ( ) (, )

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

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

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

كما تطلق على فكرة ، هذه هي الطريقة التي ستطفو بها ، وبالتالي فإن Smart Manor هو Smart Homestead ، مسقط رأس الفكرة هو Altai ، ومع ذلك ، فإن Automation مناسب أيضًا ، على الرغم من أنه نوع من الحشو في هذا السياق لتعريف Smart ، وبالطبع ، عن طريق استخدام وحدة تحكم قابلة للبرمجة . من خلال الجمع بين الأحرف الكبيرة ومزج الكلمات الإنجليزية والروسية ، اتضح ~ SMAK ~ ، ولكن لغة Meta في وصف النظام ، على التوالي ، ~ MEAT ~ . جاء هذا المفهوم الطهي - التطبيق ~ SMAK ~ باستخدام ~ لحم ~ . بالمناسبة ، البروتوكول اللاسلكي البدائي لتفاعل وحدة التحكم والأجهزة غير الممنوحة ببروتوكولاتها مقدمًا ، دعوت ~ JuJu ~ .

تم تصميم تنفيذ الأجهزة باستخدام إمكانات ESP8266 و Arduino مع RF24 + أو غيرها ، الأكثر حداثة ، ولكن ليس أقل تكلفة - لأجهزة الاستشعار والمشغلات - المرحلات والصمامات والمحولات ، وما إلى ذلك ، إذا لم يكن من الممكن توصيلهما مباشرة لأي سبب ، فإن المنطق نفسه حاول وضع جهاز التحكم على ESP32 ، وإذا فشل ، على STM32. الهدف هو تقليل تكاليف الحديد. أعترف باستخدام تنفيذ الأجهزة لعدد من العمليات مثل وحدات التحكم في درجة الحرارة مع التباطؤ أو أدوات قياس جودة الهواء ، ولكن بما أنني لست مهندسًا إلكترونيًا ، فإن تطوير دائرة باستخدام المكثفات والمقاومة والترانزستورات أمر مؤلم بالنسبة لي وهذا يحدد توازنًا معقولًا بين تنفيذ الأجهزة والبرامج ، و أيضا الرغبة في المشاركة المباشرة ،أو على الأقل التفكير في ما يحدث في وحدة التحكم.

يعتمد تنفيذ البرنامج على بناء الجملة للغة metal ~ MEAT ~ ، ومكتبة Asyncio والخوارزميات ذات الصلة ، والمنطق العام ~ SMAK ~ الموضح أدناه. تهدف مهمة التحكم في العمليات التي تحدث في المنشأة إلى الحفاظ على ظروف تشغيل معينة ، بالإضافة إلى استعادة هذه الظروف في حالة حدوث انحرافات ، علاوة على ذلك ، مع انحراف أقوى ، يمكن استخدام إجراءات أكثر نشاطًا ، بالإضافة إلى الاستجابة لحالات الطوارئ.

في المستقبل ، سيتم استخدام المصطلحات التالية في النص:

المصادر (المصدر) - أجهزة الاستشعار ، قنوات الاتصال الواردة
المستهلكون - الأجهزة التنفيذية ، قنوات الاتصال الصادرة

يتم وصف تفاعل المصادر والمستهلكين في السيناريو عن طريق تحليل القيم الواردة من المصادر ؛ حالة المؤقتات والمستهلكين ؛ قيم المتغيرات ؛ الجداول الزمنية ، التي يتم على أساسها إصدار أوامر التحكم للمستهلكين.

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

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

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

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

تتضمن خصائص برنامج التشغيل مجموعة من الطلبات والأوامر الخاصة بالجهاز ، ووقت التأخير في تنفيذه ، بالإضافة إلى نوع الاتصال الذي يتم من خلاله إرسال الإشارة ، والتي يمكن أن تكون أجهزة (1Wire ، I2C ، SPI ، UART ، إلخ) و لاسلكية (WiFi ، راديو لاسلكي ، BT ، إلخ) ، والتي تكمل طرق إرسال الطلبات والأوامر. بالإضافة إلى ذلك ، يوفر برنامج التشغيل أوضاع التشخيص الذاتي عند تحميله ، والإجراءات عند إيقاف تشغيله ، وتشخيص الحالات غير المتوقعة أثناء التشغيل العادي في الوضع غير المتزامن. يمكن للسائق تشغيل العديد من المهام غير المتزامنة ، على سبيل المثال ، إذا كانت هناك حاجة إلى ملاحظات حول حالة الجهاز.

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

علاوة على ذلك ، في الخطط نشر المنشورات المتراكمة بالفعل والتي تم إنشاؤها:

  • ~ SMAK ~ - وصف خوارزميات الأداء العام
  • ~ SMAK ~ - وصف metalanguage ~ MEAT ~
  • ~ SMAK ~ - وصف البروتوكول ~ JuJu ~
  • ~ SMAK ~ - وصف متطلبات إنشاء برامج تشغيل الأجهزة في ~ SMAK ~
  • ~ SMAK ~ - ممارسة التطبيق

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


All Articles