
اليوم ، وبفضل التطور السريع للإلكترونيات الدقيقة وقنوات الاتصال وتقنيات الإنترنت والذكاء الاصطناعي ، أصبح موضوع المنازل الذكية أكثر وأكثر أهمية. خضع المسكن البشري لتغيرات كبيرة منذ العصر الحجري وفي عصر الثورة الصناعية 4.0 وأصبح إنترنت الأشياء مناسبًا وعمليًا وآمنًا. تأتي الحلول إلى السوق التي تحول شقة أو منزل ريفي إلى أنظمة معلومات متطورة ، تتم إدارتها من أي مكان في العالم باستخدام هاتف ذكي. علاوة على ذلك ، لم تعد معرفة لغات البرمجة مطلوبة للتفاعل بين الإنسان والآلة - بفضل خوارزميات التعرف على الكلام وتوليف الكلام ، يتحدث الشخص لغته الأم مع منزل ذكي.
بعض أنظمة المنزل الذكي الموجودة حاليًا في السوق هي تطور منطقي لأنظمة المراقبة بالفيديو القائمة على الحوسبة السحابية ، والتي أدرك مطوروها الحاجة إلى حل شامل ليس فقط للمراقبة ، ولكن أيضًا لإدارة الكائنات البعيدة.
نحن نقدم لك سلسلة من ثلاث مقالات ، والتي سوف تخبرك عن جميع المكونات الرئيسية لنظام المنزل الذكي السحابي ، والتي طورها المؤلف شخصيًا ودخلت حيز التنفيذ. تم تخصيص المقالة الأولى لمعدات العميل الطرفية المثبتة داخل المنزل الذكي ، والثانية لهندسة نظام التخزين السحابي ومعالجة البيانات ، وأخيرا ، تطبيق ثالث لتطبيق عميل لإدارة النظام على الأجهزة المحمولة والأجهزة الثابتة.
معدات المنزل الذكي
أولاً ، دعونا نتحدث عن كيفية جعل المنزل الذكي خارج شقة عادية أو كوخ أو كوخ. لهذا ، كقاعدة عامة ، يجب وضع المعدات التالية في المنزل:
- أجهزة الاستشعار قياس المعايير البيئية المختلفة.
- المحركات التي تعمل على الأشياء الخارجية.
- وحدة تحكم تقوم بإجراء العمليات الحسابية وفقًا لقياسات المستشعر والمنطق المضمن ، وتصدر الأوامر للمشغلات.
يوضح الشكل التالي مخطط المنزل الذكي ، حيث توجد أجهزة استشعار لتسرب المياه (1) في الحمام ، ودرجة الحرارة (2) والإضاءة (3) في غرفة النوم ، ومقبس ذكي (4) في المطبخ وكاميرا مراقبة فيديو (5) في الرواق.

حاليًا ، تستخدم على نطاق واسع أجهزة استشعار لاسلكية تعمل بموجب البروتوكولات RF433 و Z-Wave و ZigBee و Bluetooth و WiFi. مزاياها الرئيسية هي سهولة التركيب والاستخدام ، بالإضافة إلى التكلفة المنخفضة والموثوقية يسعى المصنعون إلى جلب أجهزتهم إلى السوق الشامل وإتاحتها للمستخدم العادي.
وكقاعدة عامة ، يتم توصيل المستشعرات والمحركات عبر واجهة لاسلكية بوحدة التحكم في المنزل الذكي (6) - وهو كمبيوتر دقيق متخصص يدمج كل هذه الأجهزة في شبكة واحدة ويتحكم فيها.
ومع ذلك ، يمكن أن تجمع بعض الحلول بين المستشعر والمحرك ووحدة التحكم في نفس الوقت. على سبيل المثال ، يمكن برمجة مأخذ توصيل ذكي لتشغيله أو إيقاف تشغيله وفقًا لجدول زمني ، ويمكن لكاميرا المراقبة بالفيديو المستندة إلى مجموعة النظراء تسجيل الفيديو بناءً على إشارة كاشف الحركة. في أبسط الحالات ، يمكنك الاستغناء عن وحدة تحكم منفصلة ، ولكن لإنشاء نظام مرن مع العديد من السيناريوهات ، من الضروري.
لتوصيل جهاز التحكم في المنزل الذكي بالشبكة العالمية ، يمكن استخدام جهاز توجيه إنترنت تقليدي (7) ، وهو جهاز منزلي مألوف في أي منزل منذ فترة طويلة. هناك حجة أخرى لصالح وحدة التحكم في المنزل الذكي - في حالة فقد الاتصال بالإنترنت ، سيستمر المنزل الذكي في العمل بشكل طبيعي بسبب الكتلة المنطقية المخزنة داخل وحدة التحكم ، وليس في الخدمة السحابية.
تحكم المنزل الذكي
تم تطوير وحدة التحكم لنظام المنزل الذكي السحابي الذي تمت مناقشته في هذه المقالة على أساس جهاز الكمبيوتر
المصغر ذو اللوحة الواحدة
Raspberry Pi 3 طراز B + ، والذي تم إصداره في مارس 2018 ولديه موارد وأداء كافيين لمهام المنزل الذكي. وهو يتألف من معالج Cortex-A53 رباعي النواة بهندسة ARMv8-A ذات 64 بت ، والتي تعمل بسرعة 1.4 جيجاهرتز ، بالإضافة إلى 1 جيجابايت من ذاكرة الوصول العشوائي و Wi-Fi 802.11ac و Bluetooth 4.2 ومحول جيجابت إيثرنت الذي يعمل عبر ناقل USB 2.0.

تجميع وحدة التحكم بسيط للغاية - يتم تثبيت الحواسيب الصغيرة (1) في علبة بلاستيكية (2) ، ثم يتم إدخال بطاقة microSD بسعة 8 GB مع برنامج (3) ووحدة تحكم شبكة Z-Wave USB (4) في الفتحات المقابلة فيها. يتم توصيل وحدة التحكم في المنزل الذكي بالتيار الكهربائي عبر محول طاقة بقوة 5 فولت و 2.1 أمبير (5) وكابل USB صغير USB (6). تحتوي كل وحدة تحكم على رقم تعريف فريد ، يتم تسجيله في ملف التكوين في البداية الأولى وهو ضروري للتفاعل مع خدمات سحابة المنزل الذكي.
تم تطوير برنامج التحكم في المنزل الذكي بواسطة مؤلف هذا المقال استنادًا إلى نظام التشغيل
Linux Raspbian Stretch . تتكون من النظم الفرعية الرئيسية التالية:
- عملية الخادم للتفاعل مع المعدات المنزلية الذكية والسحابة ؛
- واجهة المستخدم الرسومية لتكوين المعلمات تحكم التشغيل.
- قواعد بيانات لتخزين تكوين وحدة التحكم.
تعتمد قاعدة بيانات وحدة التحكم في المنزل الذكي
على قاعدة بيانات SQLite DBMS وهي عبارة عن ملف على بطاقة SD مع برنامج النظام. إنه بمثابة مستودع لتكوين جهاز التحكم - معلومات حول الجهاز المتصل وحالته الحالية ، وكتلة من قواعد الإنتاج المنطقي ، وكذلك المعلومات التي تتطلب الفهرسة (على سبيل المثال ، أسماء ملفات أرشيف الفيديو المحلي). عند إعادة تشغيل وحدة التحكم ، يتم حفظ هذه المعلومات ، مما يجعل من الممكن استعادة وحدة التحكم في حالة انقطاع التيار الكهربائي.
تم تطوير الواجهة الرسومية لوحدة التحكم في المنزل الذكي في PHP 7 باستخدام الأعمال المصغرة
Slim Slim . خادم الويب
lighttpd ، والذي يستخدم غالبًا في الأجهزة المدمجة نظرًا لأدائه الجيد ومتطلبات الموارد المنخفضة ، مسؤول عن تشغيل التطبيق.
(انقر على الصورة لفتحها بدقة أعلى)تتمثل الوظيفة الرئيسية للواجهة الرسومية في توصيل أجهزة المنزل الذكي (كاميرات IP وأجهزة الاستشعار) بوحدة التحكم. يقرأ تطبيق الويب التكوين والحالة الحالية لوحدة التحكم والأجهزة المتصلة به من قاعدة بيانات SQLite. لتغيير تكوين وحدة التحكم ، يرسل أوامر التحكم بتنسيق JSON من خلال واجهة برمجة تطبيقات RESTful الخاصة بعملية الخادم.
عملية الخادم
تعتبر عملية الخادم مكونًا رئيسيًا يقوم بجميع الأعمال الأساسية لأتمتة عمليات المعلومات التي تشكل أساس المنزل الذكي: تلقي ومعالجة البيانات الحسية ، وإصدار إجراءات التحكم اعتمادًا على المنطق الأساسي. الغرض من عملية الخادم هو التفاعل مع المعدات المنزلية الذكية ، واتباع قواعد منطق الإنتاج ، واستلام أوامر المعالجة من الواجهة الرسومية والسحابة. يتم تنفيذ عملية الخادم في وحدة التحكم في المنزل الذكي كتطبيق متعدد الخيوط تم تطويره في C ++ وتم إطلاقه كخدمة نظام منفصلة
لنظام التشغيل
Linux Raspbian .
الكتل الرئيسية لعملية الخادم هي:
- مدير الرسائل
- خادم كاميرا IP
- خادم جهاز Z-Wave
- قواعد منطق إنتاج الخادم ؛
- قاعدة بيانات تكوين وحدة التحكم وكتلة القواعد المنطقية ؛
- خادم API مريحة للتفاعل مع واجهة رسومية ؛
- عميل MQTT للتفاعل مع السحابة.
يتم تطبيق كتل عملية الخادم كتدفقات منفصلة ، يتم نقل المعلومات بينها في شكل رسائل بتنسيق JSON (أو بنيات بيانات تمثل هذا التنسيق في ذاكرة العملية).

المكون الرئيسي لعملية الخادم هو
مدير الرسائل ، الذي يقوم بتوجيه الرسائل بتنسيق JSON لجميع كتل عملية الخادم. يتم سرد أنواع حقول معلومات رسالة JSON والقيم التي يمكن قبولها في الجدول:
على سبيل المثال ، تبدو رسالة من كاشف حركة الكاميرا كما يلي:
{ "vendor": "*****", "version": "3.0.0", "timestampMs": "1566293475475", "clientType": "gateway", "deviceId": "1616453d-30cd-44b7-9bf0-************", "deviceType": "camera", "protocol": "onvif", "messageType": "sensorData", "sensorType": "camera", "label": "motionDetector", "sensorData": "on" }
منطق الإنتاج
لتلقي أو إرسال رسالة من المرسل ، يشترك كتلة عملية الخادم في رسائل من نوع معين. الاشتراك هو قاعدة منطقية للإنتاج من النوع
"If ... then ..." ، المقدَّمة بتنسيق JSON ، ورابطًا إلى معالج الرسائل داخل كتلة عملية الخادم. على سبيل المثال ، حتى يتمكن خادم كاميرا IP من تلقي أوامر من واجهة المستخدم الرسومية والسحابة ، تحتاج إلى إضافة القاعدة التالية:
{ "if": { "and": [{ "equal": { "deviceId": "1616453d-30cd-44b7-9bf0-************" } }, { "equal": { "messageType": "command" } } ] }, "then": { "result": "true" } }
إذا كانت الشروط المحددة في
السجل السابق (الجانب الأيسر) من القاعدة صحيحة ، فسيتم تنفيذ
القاعدة (الجانب الأيمن) من القاعدة ، ويتمكن المعالج من الوصول إلى نص رسالة JSON. يدعم السجل السابق العوامل المنطقية التي تقوم بإجراء مقارنة بين أزواج قيمة مفتاح JSON:
- يساوي "المساواة" ؛
- لا يساوي "not_equal" ؛
- أقل "أقل" ؛
- أكثر "أكبر" ؛
- أقل من أو يساوي "less_or_equal" ؛
- أكبر من أو يساوي أكبر_أو المساواة.
يمكن ربط نتائج المقارنة معًا باستخدام عوامل الجبر المنطقية:
- و "و" ؛
- أو "أو" ؛
- ليس "لا".
وبالتالي ، فإن مشغلي الكتابة والمعاملين بترميز بولندي ، من الممكن تشكيل ظروف معقدة إلى حد ما مع عدد كبير من المعلمات.
يتم استخدام نفس الآلية تمامًا ، استنادًا إلى رسائل JSON وقواعد الإنتاج بتنسيق JSON ، في كتلة خادم منطق الإنتاج لتمثيل المعرفة والاستدلال المنطقي باستخدام البيانات الحسية من أجهزة استشعار المنزل الذكي.
باستخدام تطبيق جوال ، يقوم المستخدم بعمل نصوص بناءً عليها يجب أن يعمل المنزل الذكي. على سبيل المثال:
"إذا كان جهاز استشعار فتح الباب الأمامي يعمل ، فقم بتشغيل المصباح في الرواق .
" يقرأ التطبيق معرفات المستشعرات (مستشعر الفتح) والمشغلات (المقبس الذكي أو المصباح الذكي) من قاعدة البيانات ويقوم بإنشاء قاعدة منطقية بتنسيق JSON ، والتي يتم إرسالها إلى وحدة تحكم المنزل الذكي. ستتم مناقشة هذه الآلية بمزيد من التفصيل في المادة الثالثة من سلسلتنا ، حيث سنتحدث عن تطبيق عميل لإدارة المنزل الذكي.
يتم تطبيق آلية منطق الإنتاج التي تمت مناقشتها أعلاه باستخدام مكتبة
RapidJSON ، وهي محلل SAX لتنسيق JSON في C ++. القراءة المتسقة وتحليل مجموعة من قواعد الإنتاج تجعل من السهل تنفيذ وظيفة مطابقة البيانات داخل السوابق:
void CRuleEngine::Process(PProperties pFact) { m_pActions->clear(); rapidjson::Reader reader; for(TStringMap::value_type& rRule : m_Rules) { std::string sRuleId = rRule.first; std::string sRuleBody = rRule.second; CRuleHandler ruleHandler(pFact); rapidjson::StringStream ruleStream(sRuleBody.c_str()); rapidjson::ParseResult parseResult = reader.Parse(ruleStream, ruleHandler); if(!parseResult) { m_Logger.LogMessage( NLogger2::ePriorityLevelError, std::string("JSON parse error"), "CRuleEngine::Process()", std::string("RuleId: ") + sRuleId); } PProperties pAction = ruleHandler.GetAction(); if(pAction) { pAction->Set("ruleId", sRuleId); m_pActions->push_back(pAction); } } }
هنا
pFact عبارة عن بنية تحتوي على أزواج ذات قيمة مفتاح من رسالة JSON ،
m_Rules عبارة عن صفيف سلسلة من قواعد الإنتاج. يتم إجراء مقارنة للرسالة الواردة وقاعدة الإنتاج في
وظيفة القارئ .Parse (ruleStream ، ruleHandler) ، حيث يعتبر
ruleHandler كائنًا يحتوي على منطق عوامل تشغيل Boolean
وعوامل المقارنة.
sRuleId هو معرف قاعدة فريد ، بفضله يمكنك تخزين وتحرير القواعد داخل قاعدة بيانات وحدة تحكم المنزل الذكي.
m_pActions - صفيف بنتائج الاستدلال المنطقي: تتكون رسائل JSON التي تحتوي على قاعدة من القاعدة ويتم إعادة توجيهها إلى مدير الرسائل بحيث يمكن لدفق المشتركين معالجتها.
يشبه أداء RapidJSON وظيفة
strlen () ، وتسمح متطلبات موارد النظام الدنيا باستخدام هذه المكتبة في الأجهزة المدمجة. يتيح لك استخدام الرسائل والقواعد المنطقية بتنسيق JSON تطبيق نظام مرن لتبادل المعلومات بين جميع مكونات وحدة التحكم في المنزل الذكي.
أجهزة الاستشعار والمحركات Z- الموجة
الميزة الرئيسية للمنزل الذكي هي أنه يمكن قياس المعلمات البيئية المختلفة بشكل مستقل وأداء وظائف مفيدة حسب الموقف. للقيام بذلك ، يتم توصيل أجهزة الاستشعار والمحركات بوحدة التحكم في المنزل الذكي. في الإصدار الحالي ، هذه هي الأجهزة اللاسلكية التي تعمل وفقًا لبروتوكول
Z-Wave بتردد مخصص بشكل خاص قدره
869 ميجاهرتز لروسيا. من أجل عملهم ، يتم دمجهم في شبكة شبكية ، حيث توجد مكررات الإشارة لزيادة مساحة التغطية. تحتوي الأجهزة أيضًا على وضع خاص لتوفير الطاقة - حيث تقضي معظم الوقت في وضع السكون وترسل المعلومات فقط عندما تتغير حالتها ، والتي يمكن أن تطيل عمر البطارية المدمجة بشكل كبير.

في السوق الآن ، يمكنك العثور على عدد كبير إلى حد ما من أجهزة Z-Wave المختلفة. على سبيل المثال ، فكر في عدد قليل:
- يمكن للمقبس الذكي Zipato PAN16 قياس المعلمات التالية: استهلاك الطاقة (كيلوواط / ساعة) ، والطاقة (W) ، والجهد (V) والتيار (A) في التيار الكهربائي. كما أن لديها مفتاح مدمج يمكنك من خلاله التحكم في الأجهزة الكهربائية المتصلة ؛
- يكتشف مستشعر التسرب Neo Coolcam وجود السائل المسكوب عن طريق إغلاق جهات الاتصال الخاصة بالتحقيق عن بُعد ؛
- يتم تشغيل كاشف الدخان Zipato PH-PSG01 عندما تدخل جزيئات الدخان إلى غرفة محلل الغاز ؛
- يقوم مستشعر الحركة Neo Coolcam بتحليل الأشعة تحت الحمراء من جسم الإنسان. بالإضافة إلى ذلك ، هناك مستشعر الضوء (Lx) ؛
- يقوم Philio PST02-A متعدد القياسات بقياس درجة الحرارة (° C) ، التعرض للضوء (٪) ، فتح الباب ، وجود شخص في الغرفة ؛
- وحدة تحكم الشبكة Z-Wave USB Stick ZME E UZB1 ، التي تتصل بها المستشعرات.
من المهم جدًا أن تعمل الأجهزة ووحدة التحكم على نفس التردد ، وإلا فلن يتمكن كل منهما من رؤية الآخر في وقت الاتصال. يمكن توصيل ما يصل إلى 232 جهازًا بوحدة تحكم واحدة في شبكة Z-Wave ، وهو ما يكفي تمامًا لشقة أو منزل ريفي. لتوسيع منطقة التغطية للشبكة في الداخل ، يمكن استخدام المقبس الذكي كمكرر إشارة.

في عملية الخادم بوحدة التحكم في المنزل الذكي ، والتي تمت مناقشتها في الفقرة السابقة ، يكون خادم Z-Wave مسؤولاً عن التفاعل مع أجهزة Z-Wave. للحصول على معلومات من أجهزة الاستشعار ، يستخدم مكتبة
OpenZWave في C ++ ، والتي توفر واجهة للتفاعل مع وحدة تحكم USB لشبكة Z-Wave وتعمل مع العديد من أجهزة الاستشعار والمحركات. يتم تسجيل قيمة المعلمة البيئية المقاسة بواسطة المستشعر بواسطة خادم Z-Wave في شكل رسالة JSON:
{ "vendor": "*****", "version": "3.0.0", "timestampMs": "1566479791290", "clientType": "gateway", "deviceId": "20873eb0-dd5e-4213-a175-************", "deviceType": "sensor", "protocol": "zwave", "messageType": "sensorData", "homeId": "0xefa0cfa7", "nodeId": "20", "sensorType": "METER", "label": "Voltage", "sensorData": "229.3", "units": "V" }
ثم يتم إعادة توجيهها إلى مدير رسائل عملية الخادم بحيث يمكن أن تتلقى مؤشرات الترابط المشترك ذلك. المشترك الرئيسي هو خادم منطق الإنتاج ، الذي يقارن قيم حقول الرسائل في سوابق القواعد المنطقية. يتم إرسال نتائج الإخراج المنطقي الذي يحتوي على أوامر التحكم مرة أخرى إلى مدير الرسائل ومن هناك يذهبون إلى خادم Z-Wave ، الذي يقوم بفك تشفيرها وإرسالها إلى وحدة تحكم USB لشبكة Z-Wave. ثم يقعون في الجهاز التنفيذي ، الذي يغير حالة البيئة ، وبالتالي المنزل الذكي ، يؤدي وظيفة مفيدة.
(انقر على الصورة لفتحها بدقة أعلى)يتم توصيل أجهزة Z-Wave في الواجهة الرسومية لوحدة التحكم في المنزل الذكي. للقيام بذلك ، انتقل إلى الصفحة مع قائمة الأجهزة وانقر فوق الزر "إضافة". يدخل أمر الإضافة من خلال واجهة برمجة تطبيقات RESTful في عملية الخادم ، ثم يتم إرساله بواسطة مدير الرسائل إلى خادم Z-Wave ، الذي يضع وحدة تحكم Z-Wave USB في وضع إضافة الجهاز الخاص. بعد ذلك ، على جهاز Z-Wave ، تحتاج إلى إجراء سلسلة من المطابع السريعة (3 مكابس في غضون 1.5 ثانية) من زر الخدمة. تقوم وحدة تحكم USB بتوصيل الجهاز بالشبكة وإرسال معلومات عنها إلى خادم Z-Wave. وهذا بدوره يقوم بإنشاء سجل جديد في قاعدة بيانات SQLite بمعلمات الجهاز الجديد. بعد فترة زمنية محددة مسبقًا ، تعود الواجهة الرسومية إلى صفحة قائمة أجهزة Z-Wave ، وتقرأ المعلومات من قاعدة البيانات وتعرض الجهاز الجديد في القائمة. في الوقت نفسه ، يتلقى كل جهاز معرفه الفريد الخاص به ، والذي يستخدم في قواعد استنتاج الإنتاج وعند العمل في السحابة. يتم عرض تشغيل هذه الخوارزمية في مخطط UML:
(انقر على الصورة لفتحها بدقة أعلى)اتصال كاميرا IP
نظام المنزل الذكي السحابي الذي تمت مناقشته في هذا المقال هو تحديث لنظام المراقبة بالفيديو السحابي ، كما طوره المؤلف ، والذي ظل موجودًا في السوق منذ عدة سنوات وله العديد من المنشآت في روسيا.
بالنسبة لأنظمة المراقبة بالفيديو السحابية ، تتمثل إحدى المشكلات الحادة في الاختيار المحدود للمعدات التي يمكن تحقيق التكامل معها. يتم تثبيت البرنامج المسؤول عن الاتصال بالسحابة داخل كاميرا الفيديو ، مما يجعل مطالب الجهاز خطيرة على الفور - المعالج وكمية الذاكرة الخالية. هذا ما يفسر أساسا ارتفاع أسعار كاميرات مراقبة الفيديو المستندة إلى مجموعة النظراء مقارنة بكاميرات IP التقليدية. بالإضافة إلى ذلك ، هناك حاجة إلى مرحلة طويلة من المفاوضات مع الشركات المصنعة لكاميرات CCTV للوصول إلى نظام ملفات الكاميرا وجميع أدوات التطوير اللازمة.

من ناحية أخرى ، تحتوي جميع كاميرات IP الحديثة على بروتوكولات قياسية للتفاعل مع الأجهزة الأخرى (ولا سيما أجهزة تسجيل الفيديو الرقمية). وبالتالي ، فإن استخدام وحدة تحكم منفصلة تتصل باستخدام البروتوكول القياسي وتدفقات الفيديو من كاميرات IP إلى الشبكة السحابية توفر مزايا تنافسية كبيرة لأنظمة المراقبة بالفيديو السحابية. علاوة على ذلك ، إذا كان العميل قد قام بالفعل بتثبيت نظام للمراقبة بالفيديو يعتمد على كاميرات IP بسيطة ، فسيصبح من الممكن توسيعه وتحويله إلى منزل ذكي غائم بالكامل.
يعد بروتوكول
ONVIF Profile S هو البروتوكول الأكثر شيوعًا لأنظمة المراقبة عبر بروتوكول الإنترنت IP ، والتي تدعمها الآن جميع الشركات المصنعة لكاميرات IP دون استثناء ، وهي مواصفات موجودة في لغة وصف خدمات الويب
WSDL . باستخدام الأدوات المساعدة من مجموعة أدوات
gSOAP ،
من الممكن إنشاء شفرة المصدر للخدمات التي تعمل مع كاميرات IP:
$ wsdl2h -o onvif.h \ https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl \ https://www.onvif.org/ver10/events/wsdl/event.wsdl \ https://www.onvif.org/ver10/media/wsdl/media.wsdl \ https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl $ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h
نتيجة لذلك ، حصلنا على مجموعة من ملفات الرأس "* .h" ومصدر "* .cpp" في C ++ ، والتي يمكن وضعها مباشرة في تطبيق أو مكتبة منفصلة وتجميعها باستخدام برنامج التحويل البرمجي GCC. نظرًا للعديد من الوظائف ، تكون الشفرة كبيرة وتتطلب تحسينًا إضافيًا. يتميز الكمبيوتر الصغير Raspberry Pi 3 طراز B + بأداء كافٍ لتنفيذ هذا الرمز ، ولكن إذا كانت هناك حاجة لتوصيل الرمز إلى نظام أساسي آخر ، فمن الضروري اختيار بنية المعالج وموارد النظام بشكل صحيح.
كاميرات IP التي تدعم معيار ONVIF ، عند التشغيل على شبكة محلية ، متصلة بمجموعة البث المتعدد الخاصة بعنوان
239.255.255.250 . هناك بروتوكول
WS-Discovery ، والذي يسمح لك بأتمتة البحث عن الأجهزة على الشبكة المحلية.
تطبق الواجهة الذكية لوحدة التحكم في المنزل الذكي وظيفة البحث عن كاميرات IP بلغة PHP ، وهي مريحة للغاية عند التفاعل مع خدمات الويب عبر رسائل XML. عند تحديد عناصر القائمة
الأجهزة> كاميرات IP> المسح الضوئي ، تبدأ خوارزمية البحث عن كاميرات IP ، وتعرض النتيجة في جدول:
(انقر على الصورة لفتحها بدقة أعلى)عند إضافة كاميرا إلى وحدة التحكم ، يمكنك تحديد الإعدادات التي ستتفاعل وفقًا لها مع السحابة. وفي هذه المرحلة أيضًا ، يتم تعيين معرف فريد لجهاز تلقائيًا ، يمكن من خلاله التعرف عليه بسهولة في المستقبل داخل السحابة.

بعد ذلك ، يتم إنشاء رسالة بتنسيق JSON تحتوي على جميع معلمات الكاميرا المضافة ، ويتم إرسالها إلى عملية الخادم لوحدة التحكم في المنزل الذكي من خلال أمر RESTful API ، حيث يتم فك تشفير معلمات الكاميرا وتخزينها في قاعدة بيانات SQLite الداخلية ، وتستخدم أيضًا لبدء سلاسل عمليات المعالجة التالية:
- إنشاء اتصال RTSP لتلقي دفق الفيديو والصوت ؛
- تحويل الصوت من التنسيقات G.711 mu-Law و G.711 A-Law و G.723 وما إلى ذلك لتنسيق AAC ؛
- تحويل الفيديو H.264 وتيارات الصوت AAC إلى حاوية FLV ونقلها إلى السحابة باستخدام RTMP ؛
- تأسيس اتصال بنقطة نهاية كاشف حركة كاميرا IP عبر بروتوكول ONVIF والاستطلاع الدوري الخاص به ؛
- إنشاء صورة لمعاينة الصورة المصغرة بشكل دوري وإرسالها إلى السحابة باستخدام بروتوكول MQTT ؛
- التسجيل المحلي لتدفقات الفيديو والصوت في شكل ملفات منفصلة بتنسيق MP4 على بطاقة SD أو Flash بوحدة تحكم منزلية ذكية.

لتأسيس اتصال مع الكاميرات ، تحويل الشفرة ومعالجة وتسجيل دفق الفيديو في عملية الخادم ، يتم استخدام وظائف من مكتبة
FFmpeg 4.1.0.
في تجربة اختبار الأداء ، تم توصيل 3 كاميرات بوحدة التحكم:
- HiWatch DS-I114W (الدقة - 720 بكسل ، تنسيق الضغط - H.264 ، معدل البت - 1 ميجابايت / ثانية ، الصوت G.711 mu-Law) ؛
- Microdigital MDC-M6290FTD-1 (الدقة - 1080 بكسل ، تنسيق الضغط - H.264 ، معدل البت - 1 ميجا بايت / ثانية ، بدون صوت) ؛
- Dahua DH-IPC-HDW4231EMP-AS-0360B (الدقة - 1080 بكسل ، تنسيق الضغط - H.264 ، معدل البت - 1.5 ميجابايت / ثانية ، صوت AAC).

تم إخراج التدفقات الثلاثة جميعها في وقت واحد إلى السحابة ، وتم إجراء تحويل الصوت إلى صوت من كاميرا واحدة فقط ، وتم تعطيل تسجيل الأرشيف المحلي. استخدام وحدة المعالجة المركزية كان حوالي 5 ٪ ، وكان استخدام ذاكرة الوصول العشوائي 32 ميغابايت (لكل عملية) ، 56 ميغابايت (المجموع مع نظام التشغيل).
وبالتالي ، يمكن توصيل ما يقرب من 20 إلى 30 كاميرا (حسب الدقة ومعدل البت) بوحدة التحكم في المنزل الذكي ، وهو ما يكفي لنظام مراقبة بالفيديو من كوخ من ثلاثة طوابق أو مستودع صغير. في المهام التي تتطلب الأداء العالي ، يمكنك استخدام فرقة Nettop مع معالج Intel متعدد النواة ونظام التشغيل Linux Debian Sarge OS. في الوقت الحالي ، تخضع وحدة التحكم لعملية تجريبية ، وسيتم تحديث البيانات الخاصة بأدائها.
سحابة التفاعل
سحابة المنزل الذكي بتخزين بيانات المستخدم (قياسات الفيديو وأجهزة الاستشعار) في السحابة. ستتم مناقشة هندسة التخزين السحابي بمزيد من التفصيل في المقالة التالية في سلسلتنا. الآن دعنا نتحدث عن الواجهة لنقل رسائل المعلومات من وحدة تحكم المنزل الذكي إلى السحابة.
يتم إرسال حالات الأجهزة المتصلة وقياسات أجهزة الاستشعار باستخدام بروتوكول
MQTT ، والذي يستخدم غالبًا في مشاريع إنترنت الأشياء بسبب بساطته وكفاءته في استخدام الطاقة. يستخدم MQTT نموذجًا لخادم العميل عندما يشترك العملاء في موضوعات معينة داخل الوسيط وينشر رسائلهم. يرسل الوسيط رسائل إلى جميع المشتركين وفقًا للقواعد التي تحددها جودة الخدمة (QoS):
- جودة الخدمة 0 - على الأقل مرة واحدة (لا يوجد ضمان التسليم) ؛
- جودة الخدمة 1 - مرة واحدة على الأقل (مع تأكيد التسليم) ؛
- جودة الخدمة 2 - مرة واحدة بالضبط (مع تأكيد التسليم الإضافي).
في حالتنا ،
يتم استخدام
Eclipse Mosquitto كوسيط MQTT. اسم الموضوع هو المعرف الفريد لوحدة التحكم في المنزل الذكي. يشترك عميل MQTT داخل عملية الخادم في هذا الموضوع ويقوم بترجمة رسائل JSON الواردة من مدير الرسائل إلى ذلك. على العكس من ذلك ، يتم إرسال رسائل من وسيط MQTT إليهم في مدير الرسائل ، والذي يقوم بعد ذلك بضربها على المشتركين فيها داخل عملية الخادم:

لنقل الرسائل حول حالة وحدة التحكم في المنزل الذكي ، يتم استخدام آلية الرسائل المحفوظة التي
احتفظت برسائل بروتوكول MQTT. يتيح لك ذلك مراقبة لحظات إعادة الاتصال أثناء انقطاع التيار الكهربائي بشكل صحيح.
تم تطوير عميل MQTT بناءً على تطبيق مكتبة
Eclipse Paho في C ++.
يتم إرسال تدفقات الوسائط H.264 + AAC إلى السحابة باستخدام بروتوكول RTMP ، حيث تكون مجموعة من خوادم الوسائط مسؤولة عن معالجتها وتخزينها. لتوزيع الحمل على النحو الأمثل في الكتلة وتحديد خادم الوسائط الأقل تحميلًا ، تقدم وحدة التحكم في المنزل الذكي طلبًا أوليًا إلى موازن التحميل السحابي ثم ترسل دفق الوسائط فقط.
استنتاج
فحص المقال تطبيقًا واحدًا محددًا لوحدة تحكم المنزل الذكي القائمة على جهاز الكمبيوتر المصغر Raspberry Pi 3 B + ، والذي يمكنه استلام ومعالجة المعلومات وإدارة المعدات باستخدام بروتوكول Z-Wave والتفاعل مع كاميرات IP باستخدام بروتوكول ONVIF ، وكذلك تبادل البيانات والأوامر مع السحابة خدمة بروتوكول MQTT و RTMP. تم تطوير محرك منطق الإنتاج استنادًا إلى مقارنة القواعد والحقائق المنطقية المقدمة بتنسيق JSON.
الآن تحكم المنزل الذكي يخضع لعملية تجريبية في العديد من المرافق في موسكو ومنطقة موسكو.
في الإصدار التالي من وحدة التحكم ، من المخطط توصيل أجهزة من الأنواع الأخرى (RF ، Bluetooth ، WiFi ، سلكي). لراحة المستخدمين ، سيتم نقل إجراء توصيل أجهزة الاستشعار وكاميرات IP إلى تطبيق الهاتف المحمول. هناك أيضًا أفكار لتحسين رمز عملية الخادم ونقل البرنامج إلى نظام التشغيل
OpenWrt . هذا سيوفر على وحدة تحكم منفصلة ونقل وظيفة المنزل الذكي إلى جهاز توجيه المنزلية العادية.