إنترنت الأشياء في حياتي. كيفية إنشاء مكتب ذكي ، بالإضافة إلى تتبع نمو البطاطس في شقتك بفضل إنترنت الأشياء

أحييكم يا خبروفيتش!

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

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

في النظام الأساسي الذي أستخدمه عادةً لمهماتي ، قمت بالفعل بتطبيق التفاعل مع الأجهزة التي تعمل باستخدام بروتوكولات مثل MQTT و Wialon Combine و Wialon IPS و Galileosky و Modbus وغيرها.

بالإضافة إلى استخدام البروتوكولات ، بالنسبة للأجهزة التي ليس لديها وصول إلى الإنترنت ، من الممكن كتابة وكلاء البرامج - بعض الوسطاء بين الجهاز والنظام الأساسي المثبت على جهاز آخر (على سبيل المثال ، Raspberry Pi) ومتصلين بهذا الجهاز.

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

  1. تكوين النموذج مع المعلمات والأوامر المطلوبة ؛
  2. إنشاء كائن بمعرف فريد في النظام الأساسي ؛
  3. تكوين الجهاز للاتصال بالمنصة.

دعونا نحلل بعض الحالات ونرى كيف يرتبط كل ذلك.

القضية رقم 1 Agile-gong


بادئ ذي بدء ، فكر فريقنا بجدية ذات يوم في كيفية أتمتة عمليات العمل في المكتب.

لذلك ، وفقًا لمفهوم Agile ، عند الظهر ، يجتمع جميع الموظفين في الاجتماع اليومي. من السهل أن يفوتك الإشعار في Slack بشأن الاجتماع القادم أثناء العمل وليس من الملائم جدًا أن تشتت انتباهك من خلال الساعة ... لذلك ولدت الفكرة لإنشاء Agile-gong - نظام إعلام صوتي تلقائي.

كيف يتم تنفيذه؟ الحديد هو NodeMCU (تناظرية مصغرة من Arduino مع وحدة Wi-Fi مدمجة) ، محرك سيرفو ومكثف. كل يوم من أيام الأسبوع عند الساعة 12 ظهراً ، من الضروري التأكد من أن عمود خرج محرك الأقراص المؤازر مع معدات الارتطام في النهاية يتم تدويره بزاوية كافية لقرع الجرس وإعلام الجميع بالارتفاع.

مخطط التوصيل للحديد بسيط للغاية:

صورة

يوفر الرمز السلكي على NodeMCU:

  1. تثبيت اتصال Wi-Fi والاتصال بالمنصة باستخدام بروتوكول MQTT ؛
  2. ضبط الموضع الأولي للمضاعفات في 0 درجة ؛
  3. نشر الرسائل مع البيانات عن الوضع الحالي ؛
  4. الاشتراك في الأوامر وتحويل زاوية المؤازرة عن طريق الأمر.

#include "Arduino.h"
#include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */
// Servo library
#include <Servo.h>

// Object Servo with name myservo
Servo myservo;
int pos;

EspMQTTClient client(
  "<wifi-ssid>",
  "<wifi-password>",

  "<MQTT Broker server ip>",
  "<ric-mqtt-client-id>"
  );


void setup() {
  Serial.begin(9600);
  move(0);
}

void onConnectionEstablished() {
  Serial.println("connected");
  client.subscribe("move", [] (const String& payload)  {
	int angle = payload.toInt();
	if (angle != pos) {
  	move(angle);
	}
	client.publish("position", payload);
  });
}

void loop() {
  client.loop();
}

void move(const int angle)
{
	myservo.attach(5);
	myservo.write(angle);
	delay(800);
	myservo.detach();
	pos = angle;
}


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

صورة

ثم تم إنشاء كائن بمعرف يتم من خلاله الحصول على تفويض على النظام الأساسي. بعد الاتصال ، تبدو الشاشة كما يلي:

صورة

في الفرق ، هناك خيار لإرسال أمر تدوير بزاوية 0 و 90 درجة.

صورة

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

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

على سبيل المثال ، يمكنك إنشاء نفس النظام بالضبط باستخدام gong وتثبيته في مكتب آخر في مكتبك. ثم سيكون لديك نفس النموذج ، كائنين مختلفين وآلة واحدة تعمل على كائنين.

صورة

القضية رقم 2 مستشعر ثاني أكسيد الكربون


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

صورة

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

صورة

كذلك الإجراء هو نفسه. يشتمل النموذج على معلمة جزء في المليون (1000 جزء في المليون = 0.1٪ من محتوى 2) ، التي ينقلها الجهاز ، ولكنها ليست واضحة جدًا ، لذلك تم عرض معلمة أخرى على الفور في النموذج - النسبة المئوية لمحتوى ثاني أكسيد الكربون. يتم حسابه على أنه جزء في المليون مقسومًا على 10000.

صورة

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

صورة

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

صورة

قد يكون لديك سؤالان.

  1. لماذا التلقائي؟ أليس من السهل تسجيل مثل هذه الشروط على الأجهزة نفسها؟ بعد كل شيء ، كل شيء بسيط هنا.
  2. لماذا يوجد موقت؟

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

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

القضية رقم 3 ACS


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

صورة

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

تم تنفيذ العمل على بروتوكول وحدة التحكم في كود C ++ وتم إطلاقه للتنفيذ على Raspberry Pi ، والذي تم توصيله بدوره بوحدة التحكم عبر RS-485 عبر محول واجهة. المهمة الرئيسية للبرنامج هي الاتصال بالمنصة ، وتسلسل الأوامر وإلغاء تسلسل البيانات الواردة من وحدة التحكم. وبالتالي ، تمكنا من جعل الجهاز "ذكيًا" باستخدام طبقة برامج صغيرة.

طراز الجهاز كما يلي:

صورة

المعلومات الرئيسية من وحدة التحكم هي الأحداث. يتعلق الأمر بالمنصة بتنسيق JSON ويتضمن الحقول:

  • وقت الحدث،
  • رمز الحدث
  • رقم بطاقة الموظف.

يُستخدم النموذج أيضًا لتحليل حقول JSON لمعلمات متنوعة.

صورة

في واجهة الكائن ، يبدو كالتالي:

صورة

وهذه هي واجهة إرسال الأوامر:

صورة

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

صورة

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

صورة

صورة

يتم أخذ البيانات من النظام الأساسي باستخدام RESTful API. توفر واجهة برمجة تطبيقات المنصة القدرة على العمل والتفاعل واستخدام كيانات المنصة وبياناتها في أنظمة خارجية مثل بوابات الويب وتطبيقات الجوال وتطبيقات الويب أو ، كما في حالتنا ، أنظمة CRM.

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

القضية رقم 4 الحديقة الذكية


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

صورة

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

  1. - , - . , .
  2. , , , — . , , , . , .
  3. – 18:00, 6:00. , — . , , / , .

ستبدو الواجهة كما يلي: يبدو

صورة

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

صورة

تحدث العودة إلى الحالة الأولية وفقًا للحالة - في جميع النباتات تكون رطوبة التربة أعلى من المعتاد ، المجموعة الأولى.آلة

صورة

الحالة الثانية هي كما يلي. يتم تنفيذ الانتقال وفقًا للجدولة ، وإعادة التعيين هي الانتقال غير المشروط.

صورة

وأخيرًا ، الآلة للحالة الأخيرة: تعمل

صورة

هذه الآلات على نفس الكائن وتعمل بالتوازي.

صورة

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

All Articles