كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

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

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

معدات المنزل الذكي

أولاً ، دعنا نتحدث عن كيفية إنشاء منزل ذكي من شقة عادية أو منزل صيفي أو كوخ. للقيام بذلك ، كقاعدة عامة ، يلزم وضع المعدات التالية في المسكن:

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

يوضح الشكل التالي رسم تخطيطي لمنزل ذكي يحتوي على مستشعرات تسرب المياه (1) في الحمام ودرجة الحرارة (2) والإضاءة (3) مستشعرات في غرفة النوم ومقبس ذكي (4) في المطبخ ومراقبة بالفيديو كاميرا (5) في الرواق.

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

حاليًا ، يتم استخدام المستشعرات اللاسلكية التي تعمل على بروتوكولات RF433 و Z-Wave و ZigBee و Bluetooth و WiFi على نطاق واسع. تتمثل مزاياها الرئيسية في سهولة التركيب والاستخدام ، فضلاً عن التكلفة المنخفضة والموثوقية. يسعى المصنعون جاهدين لتقديم أجهزتهم إلى السوق الشامل وإتاحتها للمستخدم العادي.

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

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

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

تحكم المنزل الذكي

تم تطوير وحدة التحكم في نظام المنزل الذكي السحابي الذي تمت مناقشته في هذه المقالة على أساس كمبيوتر صغير أحادي اللوحة Raspberry Pi 3 موديل B +، الذي تم إصداره في مارس 2018 ولديه ما يكفي من الموارد والأداء لمهام المنزل الذكي. يشتمل على معالج Cortex-A53 رباعي النواة على بنية ARMv64-A 8 بت ، مسجلة بسرعة 1.4 جيجاهرتز ، بالإضافة إلى 1 جيجابايت من ذاكرة الوصول العشوائي و Wi-Fi 802.11ac و Bluetooth 4.2 ومحول جيجابت إيثرنت يعمل عبر USB 2.0 حافلة.

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

تجميع وحدة التحكم بسيط للغاية - يتم تثبيت الكمبيوتر الصغير (1) في علبة بلاستيكية (2) ، ثم يتم تثبيت بطاقة ذاكرة microSD بسعة 8 جيجابايت مع برنامج (3) ووحدة تحكم شبكة USB Z-Wave (4) في الفتحات المناسبة. يتم توصيل وحدة التحكم في المنزل الذكي بالتيار الكهربائي عبر محول طاقة 5 فولت و 2.1 أمبير (5) وكابل USB-micro-USB (6). تحتوي كل وحدة تحكم على رقم تعريف فريد ، يتم كتابته في ملف التكوين في البداية الأولى وهو مطلوب للتفاعل مع خدمات المنزل الذكي السحابي.

تم تطوير برنامج التحكم في المنزل الذكي بواسطة مؤلف هذه المقالة بناءً على نظام التشغيل لينكس راسببيان سترتش. يتكون من الأنظمة الفرعية الرئيسية التالية:

  • عملية خادم للتفاعل مع معدات المنزل الذكي والسحابة ؛
  • واجهة المستخدم الرسومية لإعداد التكوين ومعلمات التشغيل لوحدة التحكم ؛
  • قاعدة بيانات لتخزين تكوين وحدة التحكم.

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار
(انقر على الصورة لفتحها بدقة أكبر)

تتمثل الوظيفة الرئيسية لواجهة المستخدم الرسومية في توصيل معدات المنزل الذكي (كاميرات ومستشعرات IP) بوحدة التحكم. يقرأ تطبيق الويب التكوين والحالة الحالية لوحدة التحكم والأجهزة المتصلة بها من قاعدة بيانات SQLite. لتغيير تكوين وحدة التحكم ، فإنه يرسل أوامر تحكم بتنسيق JSON من خلال RESTful API لعملية الخادم.

عملية الخادم

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

الكتل الرئيسية لعملية الخادم هي:

  1. مدير الرسائل ؛
  2. خادم كاميرا IP ؛
  3. خادم جهاز Z-Wave ؛
  4. خادم قواعد الإنتاج المنطقية ؛
  5. قاعدة بيانات تكوين وحدة التحكم وكتلة القواعد المنطقية ؛
  6. خادم RESTful API للتفاعل مع الواجهة الرسومية ؛
  7. عميل MQTT للتفاعل مع السحابة.

يتم تنفيذ كتل عمليات الخادم كتدفقات منفصلة ، يتم نقل المعلومات بينها في شكل رسائل بتنسيق JSON (أو هياكل البيانات التي تمثل هذا التنسيق في ذاكرة العملية).

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

نوع الجهاز
بروتوكول
نوع الرسالة
الجهاز
أمر

وكاميرا
ONVIF
بيانات الاستشعار
on
دفق (تشغيل / إيقاف)

مدخل بطاقة الذاكرة : نعم
com.zwave
أمر
خصم
تسجيل (تشغيل / إيقاف)

المستجيب
MQTT
BusinessLogicRule
دفق (تشغيل / إيقاف)
جهاز (إضافة / إزالة)

الأعمال
التكوين البيانات
تسجيل (تشغيل / إيقاف)

بلوتوث
الجهاز
خطأ

واي فاي (WIFI)

rf

على سبيل المثال ، تبدو رسالة من كاشف حركة الكاميرا كما يلي:

{
	"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"
}

منطق الإنتاج

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

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

إذا كانت الشروط المحددة في سالف (الجانب الأيسر) القواعد صحيحة ، إذن مترتب على ذلك (الجانب الأيمن) ، ويحصل المعالج على حق الوصول إلى نص رسالة JSON. يدعم السابق العوامل المنطقية التي تقارن أزواج قيمة المفتاح JSON:

  1. يساوي "يساوي" ؛
  2. لا يساوي "not_equal" ؛
  3. أقل من "أقل" ؛
  4. أكثر "أكبر" ؛
  5. أقل من أو يساوي "less_or_equal" ؛
  6. أكبر من أو يساوي "أكبر_أو_مساواة".

يمكن ربط نتائج المقارنة باستخدام عوامل الجبر المنطقية:

  1. و و"؛
  2. او او"؛
  3. ليس "لا".

وبالتالي ، فإن عوامل الكتابة والمعاملات في التدوين البولندي ، يمكن للمرء أن يشكل ظروفًا معقدة إلى حد ما مع عدد كبير من المعلمات.

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

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

يتم تنفيذ آلية منطق الإنتاج التي تمت مناقشتها أعلاه باستخدام المكتبة رابيدجسون - محلل 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);
        }
    }
}

ومن حقيقة - بنية تحتوي على أزواج ذات قيمة رئيسية من رسالة JSON ، م_القواعد - مجموعة سلسلة من قواعد الإنتاج. تتم مطابقة الرسالة الواردة وقاعدة الإنتاج في الوظيفة Reader.Parse (قاعدة تيار ، حكم حكم)حيث حكم هو كائن يحتوي على منطق العوامل المنطقية وعوامل المقارنة. sRuleId - معرّف قاعدة فريد ، بفضله يمكن تخزين القواعد وتعديلها داخل قاعدة بيانات وحدة تحكم المنزل الذكي. إجراءات m_p - مصفوفة بنتائج الاستدلال: رسائل JSON التي تحتوي على نتائج من قاعدة القاعدة وإرسالها إلى مدير الرسائل بحيث يمكن لخيوط المشترك معالجتها.

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

أجهزة الاستشعار والمحركات Z-Wave

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

يوجد عدد كبير من أجهزة Z-Wave المختلفة في السوق اليوم. كمثال ، ضع في اعتبارك القليل:

  1. يمكن لمقبس Zipato PAN16 الذكي قياس المعلمات التالية: استهلاك الكهرباء (kWh) ، والطاقة (W) ، والجهد (V) والتيار (A) في التيار الكهربائي. يحتوي أيضًا على مفتاح مدمج ، يمكنك من خلاله التحكم في الأجهزة الكهربائية المتصلة ؛
  2. يكتشف مستشعر التسرب Neo Coolcam وجود سائل مسكوب عن طريق إغلاق نقاط التلامس للمسبار البعيد ؛
  3. يتم تشغيل كاشف الدخان Zipato PH-PSG01 عندما تدخل جزيئات الدخان إلى غرفة محلل الغاز ؛
  4. يقوم مستشعر الحركة Neo Coolcam بتحليل الأشعة تحت الحمراء لجسم الإنسان. بالإضافة إلى ذلك ، يوجد مستشعر ضوئي (Lx) ؛
  5. جهاز الاستشعار المتعدد Philio PST02-A يقيس درجة الحرارة (درجة مئوية) والإضاءة (٪) وفتح الباب والوجود البشري في الغرفة ؛
  6. وحدة تحكم الشبكة 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 ، الذي يقوم بفك تشفيرها وإرسالها إلى وحدة تحكم شبكة Z-Wave USB. ثم يدخلون إلى الجهاز التنفيذي ، الذي يغير حالة الأشياء في البيئة الخارجية ، وبالتالي يؤدي المنزل الذكي عملاً مفيدًا.

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار
(انقر على الصورة لفتحها بدقة أكبر)

يتم توصيل أجهزة Z-Wave في الواجهة الرسومية لوحدة التحكم في المنزل الذكي. للقيام بذلك ، انتقل إلى الصفحة التي تحتوي على قائمة الأجهزة وانقر فوق الزر "إضافة". يدخل أمر الإضافة عبر واجهة RESTful API في عملية الخادم ثم يتم إرساله بواسطة مدير الرسائل إلى خادم Z-Wave ، والذي يضع وحدة تحكم شبكة Z-Wave USB في وضع خاص لإضافة الأجهزة. بعد ذلك ، على جهاز Z-Wave ، تحتاج إلى إجراء سلسلة من الضغطات السريعة (3 ضغطات في غضون 1,5 ثانية) على زر الخدمة. تقوم وحدة تحكم USB بتوصيل الجهاز بالشبكة وإرسال معلومات عنها إلى خادم Z-Wave. وهذا بدوره يؤدي إلى إنشاء سجل جديد في قاعدة بيانات SQLite مع معلمات الجهاز الجديد. تعود الواجهة الرسومية بعد الفاصل الزمني المحدد إلى صفحة قائمة جهاز Z-Wave ، وتقرأ المعلومات من قاعدة البيانات وتعرض جهازًا جديدًا في القائمة. في الوقت نفسه ، يتلقى كل جهاز معرفًا فريدًا خاصًا به ، يتم استخدامه في قواعد استدلال الإنتاج وعند العمل في السحابة. يظهر تشغيل هذه الخوارزمية في مخطط UML:

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار
(انقر على الصورة لفتحها بدقة أكبر)

ربط كاميرات IP

نظام المنزل الذكي السحابي الذي تمت مناقشته في هذه المقالة هو ترقية لنظام المراقبة بالفيديو السحابي ، الذي طوره المؤلف أيضًا ، والذي ظل في السوق لعدة سنوات ولديه العديد من التركيبات في روسيا.

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

البروتوكول الأكثر شيوعًا لأنظمة المراقبة بالفيديو IP ، المدعوم الآن من قبل جميع الشركات المصنعة لكاميرات IP دون استثناء ، هو الملف ONVIF S، التي توجد مواصفاتها في لغة وصف خدمات الويب 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- اكتشاف، والذي يسمح لك بأتمتة البحث عن الأجهزة الموجودة على الشبكة المحلية.

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار
(انقر على الصورة لفتحها بدقة أكبر)

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

بعد ذلك ، يتم إنشاء رسالة بتنسيق JSON تحتوي على جميع معلمات الكاميرا المضافة وإرسالها إلى عملية الخادم لوحدة التحكم في المنزل الذكي عبر أمر RESTful API ، حيث يتم فك تشفير معلمات الكاميرا وتخزينها في قاعدة بيانات SQLite الداخلية ، وهي تستخدم أيضًا لإطلاق سلاسل المعالجة التالية:

  1. إنشاء اتصال RTSP لتلقي تدفقات الفيديو والصوت ؛
  2. تحويل ترميز الصوت من G.711 mu-Law و G.711 A-Law و G.723 وما إلى ذلك. إلى تنسيق AAC ؛
  3. تحويل تدفقات الفيديو بتنسيق H.264 والصوت بتنسيق AAC إلى حاوية FLV ونقلها إلى السحابة عبر بروتوكول RTMP ؛
  4. إنشاء اتصال بنقطة نهاية كاشف الحركة لكاميرا IP باستخدام بروتوكول ONVIF واستقصائها بشكل دوري ؛
  5. إنشاء صورة معاينة مصغرة بشكل دوري (معاينة) وإرسالها إلى السحابة باستخدام بروتوكول MQTT ؛
  6. التسجيل المحلي لتدفقات الفيديو والصوت كملفات منفصلة بتنسيق MP4 على بطاقة SD أو Flash لوحدة التحكم في المنزل الذكي.

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

لإنشاء اتصال بالكاميرات وتحويل الشفرة ومعالجة وتسجيل تدفقات الفيديو في عملية الخادم ، يتم استخدام وظائف من المكتبة FFMPEG 4.1.0

في تجربة اختبار الأداء ، تم توصيل 3 كاميرات بوحدة التحكم:

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

وبالتالي ، يمكن توصيل حوالي 20-30 كاميرا بوحدة التحكم في المنزل الذكي (اعتمادًا على الدقة ومعدل البت) ، وهو ما يكفي لنظام مراقبة بالفيديو لمنزل من ثلاثة طوابق أو مستودع صغير. في المهام التي تتطلب أداءً عاليًا ، يمكنك استخدام nettop مع معالج Intel متعدد النواة و Linux Debian Sarge. يخضع جهاز التحكم حاليًا لعملية تجريبية ، وسيتم تحديد البيانات المتعلقة بأداء عمله.

التفاعل مع السحابة

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

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

  • QoS 0 - مرة واحدة كحد أقصى (لا يوجد ضمان للتسليم) ؛
  • QoS 1 - مرة واحدة على الأقل (مع تأكيد التسليم) ؛
  • QoS 2 - مرة واحدة بالضبط (مع تأكيد إضافي للتسليم).

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

كلاود سمارت هوم. الجزء الأول: وحدة التحكم وأجهزة الاستشعار

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

تم تطوير عميل MQTT بناءً على تنفيذ المكتبة كسوف باهو في C ++.

يتم إرسال تدفقات وسائط H.264 + AAC إلى السحابة عبر بروتوكول RTMP ، حيث تكون مجموعة من خوادم الوسائط مسؤولة عن معالجتها وتخزينها. لتوزيع الحمل الأمثل في المجموعة واختيار خادم الوسائط الأقل تحميلًا ، تقدم وحدة التحكم في المنزل الذكي طلبًا أوليًا إلى موازن التحميل السحابي وبعد ذلك فقط ترسل دفق الوسائط.

اختتام

تناولت المقالة تطبيقًا واحدًا محددًا لوحدة تحكم المنزل الذكي استنادًا إلى الكمبيوتر الصغير Raspberry Pi 3 B + ، والذي يمكنه تلقي ومعالجة المعلومات والتحكم في المعدات باستخدام بروتوكول Z-Wave والتفاعل مع كاميرات IP باستخدام بروتوكول ONVIF ، وكذلك تبادل البيانات و أوامر مع الخدمة السحابية عبر بروتوكولات MQTT و RTMP. تم تطوير محرك منطق الإنتاج بناءً على مقارنة القواعد المنطقية والحقائق المعروضة بتنسيق JSON.

تخضع وحدة التحكم في المنزل الذكي الآن لعملية تجريبية في العديد من المنشآت في موسكو ومنطقة موسكو.

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

المصدر: www.habr.com

إضافة تعليق