چند وقت پیش شما را معرفی کردیم
درباره اتوماسیون
به طور معمول، تمام اتوماسیون ها را می توان به سه دسته تقسیم کرد:
دسته 1 - دستگاه های "هوشمند" را جدا کنید. شما لامپ، قوری و غیره را از تولیدکنندگان مختلف خریداری می کنید. مزایا: هر دستگاه قابلیت ها را افزایش می دهد و راحتی را افزایش می دهد. معایب: هر سازنده جدید به برنامه خاص خود نیاز دارد. پروتکل های دستگاه های سازنده های مختلف اغلب با یکدیگر سازگار نیستند.
دسته 2 - نصب کامپیوتر تک بردی یا سازگار با x86. این کار محدودیتهای قدرت محاسباتی را حذف میکند و MajorDoMo یا هر توزیع سرور دیگری برای مدیریت خانه هوشمند روی این دستگاه نصب میشود. بنابراین، دستگاههای اکثر تولیدکنندگان در یک فضای اطلاعاتی واحد به هم متصل میشوند. آن ها سرور خودتان برای یک خانه هوشمند ظاهر می شود. مزایا: سازگاری تحت یک مرکز واحد، که قابلیت های مدیریتی پیشرفته ای را ارائه می دهد. معایب: اگر سرور از کار بیفتد، کل سیستم به مرحله 1 باز می گردد، یعنی. تکه تکه می شود یا بی فایده می شود.
دسته 3 - هاردکورترین گزینه در مرحله تعمیر، تمام ارتباطات گذاشته شده و همه سیستم ها کپی می شوند. مزایا: همه چیز به کمال می رسد و سپس خانه واقعاً هوشمند می شود. معایب: بسیار گران در مقایسه با دسته های 1 و 2، نیاز به فکر کردن در مورد همه چیز از قبل و در نظر گرفتن جزئیات کوچک.
اکثر کاربران گزینه یک را انتخاب می کنند و سپس به آرامی به گزینه دو می روند. و سپس ماندگارترین ها به گزینه 3 می رسند.
اما گزینه ای وجود دارد که می توان آن را سیستم توزیع شده نامید: هر دستگاه جداگانه هم سرور و هم مشتری خواهد بود. اساساً، این تلاشی است برای گرفتن و ترکیب گزینه 1 و گزینه 2. همه جوانب مثبت آنها را در نظر بگیرید و معایب را حذف کنید تا به میانگین طلایی دست پیدا کنید.
شاید کسی بگوید که چنین گزینه ای قبلاً ایجاد شده است. اما چنین تصمیماتی به طور محدود متمرکز است. برای افراد باهوش در برنامه نویسی هدف ما این است که موانع ورود به چنین سیستم های توزیع شده را هم در قالب دستگاه های پایانی و هم در قالب یکپارچه سازی دستگاه های موجود در سیستم خود کاهش دهیم. در مورد ترموستات، کاربر به سادگی ترموستات قدیمی خود را برداشته، یک ترموستات هوشمند نصب می کند و سنسورهای موجود خود را به آن متصل می کند. بدون هیچ مرحله اضافی.
بیایید با استفاده از یک مثال به ادغام در سیستم خود نگاه کنیم.
بیایید تصور کنیم که ما 8 ماژول Sonoff در شبکه خود داریم. برای برخی از کاربران، کنترل از طریق ابر Sonoff (دسته 1) کافی خواهد بود. برخی از سیستم عامل شخص ثالث شروع به استفاده از سیستم عامل شخص ثالث می کنند و به آرامی به دسته 2 منتقل می شوند. بخش عمده سیستم عامل شخص ثالث بر اساس یک اصل کار می کند: انتقال داده ها به یک سرور MQTT. OpenHub، Majordomo یا هر هدف دیگری در خدمت یک هدف هستند - متحد کردن دستگاه های متفاوت در یک فضای اطلاعاتی واحد که در اینترنت یا در یک شبکه محلی قرار دارد. بنابراین حضور سرور الزامی است. اینجاست که مشکل اصلی ایجاد می شود - اگر سرور از کار بیفتد، کل سیستم به طور مستقل کار نمی کند. برای جلوگیری از این امر، سیستمها پیچیدهتر میشوند، روشهای کنترل دستی اضافه میشوند که در صورت خرابی سرور، اتوماسیون تکراری را تکرار میکنند.
ما مسیر متفاوتی را در پیش گرفتیم که در آن هر دستگاه خودکفا است. بنابراین، سرور نقش تعیین کننده ای ایفا نمی کند، بلکه فقط عملکرد را گسترش می دهد.
بیایید به آزمایش فکری برگردیم. بیایید دوباره همان 8 ماژول Sonoff را برداریم و فریمور Lytko را در آنها نصب کنیم. همه فریمورهای Lytko این عملکرد را دارند
"ssdpList":
{
"id": 94967291,
"ip": "192.168.x.x",
"type": "thermostat"
},
{
"id": 94967282,
"ip": "192.168.x.x",
"type": "thermostat"
}
همانطور که از مثال می بینید، لیست شامل شناسه های دستگاه، آدرس IP در شبکه، نوع واحد (در مورد ما، ترموستات مبتنی بر Sonoff) است. این لیست هر دو دقیقه یک بار به روز می شود (این مدت برای پاسخ به تغییرات پویا در تعداد دستگاه های موجود در شبکه کافی است). به این ترتیب، دستگاههای اضافهشده، تغییر یافته و غیرفعالشده را بدون هیچ گونه اقدام کاربر ردیابی میکنیم. این لیست به مرورگر یا برنامه تلفن همراه ارسال می شود و خود اسکریپت صفحه ای با تعداد مشخصی بلوک ایجاد می کند. هر بلوک مربوط به یک دستگاه/حسگر/کنترل کننده است. از نظر ظاهری لیست به این شکل است:
اما اگر سنسورهای رادیویی دیگر از طریق cc8266 (ZigBee) یا nrf32 (MySensors) به esp2530/esp24 متصل شوند، چه؟
درباره پروژه ها
سیستم های توزیع شده مختلفی در بازار وجود دارد. سیستم ما به شما امکان می دهد با محبوب ترین ها یکپارچه شوید.
در زیر پروژه هایی وجود دارد که به هر طریقی سعی در تغییر وضعیت با ناسازگاری سازندگان مختلف با یکدیگر دارند. این مثلاً
یکی از گزینه های پیاده سازی MySensors یک دروازه مبتنی بر ESP8266 است. بقیه نمونه ها در ESP32 هستند. و در آنها می توانید اصل عملیاتی ما برای شناسایی و ایجاد لیستی از دستگاه ها را پیاده سازی کنید.
بیایید یک آزمایش فکری دیگر انجام دهیم. ما یک دروازه ZESP32 یا SLS Gateway یا MySensors داریم. چگونه می توان آنها را در یک فضای اطلاعاتی واحد ترکیب کرد؟ ما کتابخانه پروتکل SSDP را به توابع استاندارد این دروازه ها اضافه می کنیم. هنگام دسترسی به این کنترلر از طریق SSDP، لیستی از دستگاه هایی که به آن متصل هستند را به پاسخ استاندارد اضافه می کند. بر اساس این اطلاعات، مرورگر یک صفحه ایجاد می کند. به طور کلی به این صورت خواهد بود:
رابط وب
برنامه PWA
"ssdpList":
{
"id": 94967291, // уникальный идентификатор устройства
"ip": "192.168.x.x", // ip адрес в сети
"type": "thermostat" // тип устройства
},
{
"id": 94967292,
"ip": "192.168.x.x",
"type": "thermostat"
},
{
"id": 94967293,
"ip": "192.168.x.x",
"type": "thermostat"
},
{
"id": 13587532,
"type": "switch"
},
{
"id": 98412557,
"type": "smoke"
},
{
"id": 57995113,
"type": "contact_sensor"
},
{
"id": 74123668,
"type": "temperature_humidity_pressure_sensor"
},
{
"id": 74621883,
"type": "temperature_humidity_sensor"
}
مثال نشان می دهد که دستگاه ها مستقل از یکدیگر اضافه می شوند. 3 ترموستات با آدرس IP مخصوص به خود و 5 سنسور مختلف با شناسه های منحصر به فرد متصل هستند. اگر سنسور به یک شبکه Wi-Fi متصل باشد، IP مخصوص به خود را خواهد داشت و اگر به یک دروازه متصل باشد، آدرس IP دستگاه، آدرس IP دروازه خواهد بود.
ما از WebSocket برای ارتباط با دستگاه ها استفاده می کنیم. این به شما امکان می دهد هزینه های منابع را در مقایسه با دریافت درخواست ها به حداقل برسانید و هنگام اتصال یا تغییر اطلاعات را به صورت پویا به دست آورید.
داده ها مستقیماً از دستگاهی که بلوک به آن تعلق دارد و با دور زدن سرور گرفته می شود. بنابراین، اگر هر یک از دستگاه ها خراب شود، سیستم به کار خود ادامه می دهد. رابط وب فقط دستگاه گم شده را از لیست نمایش نمی دهد. اما یک سیگنال در مورد از دست دادن، در صورت لزوم، به صورت یک اعلان در برنامه کاربر خواهد آمد.
اولین تلاش برای پیاده سازی این رویکرد یک برنامه کاربردی PWA بود. این به شما امکان می دهد یک پایه بلوک را در دستگاه کاربر ذخیره کنید و فقط داده های لازم را درخواست کنید. اما به دلیل ویژگی های ساختار، این گزینه ناقص است. و تنها یک راه وجود دارد - یک برنامه بومی برای Android و IOS که در حال حاضر در حال توسعه فعال است. به طور پیش فرض، برنامه فقط در شبکه داخلی کار می کند. در صورت لزوم، می توانید همه چیز را به کنترل خارجی منتقل کنید. بنابراین، هنگامی که کاربر شبکه محلی را ترک می کند، برنامه به طور خودکار به ابر تغییر می کند.
کنترل خارجی - تکثیر کامل صفحه. هنگامی که صفحه فعال می شود، کاربر می تواند وارد سرور شده و از طریق حساب شخصی خود دستگاه ها را مدیریت کند. بنابراین، سرور عملکرد خود را گسترش می دهد و به شما امکان می دهد دستگاه ها را در خارج از خانه مدیریت کنید و به ارسال پورت یا IP اختصاصی وابسته نباشید.
بنابراین گزینه فوق دارای معایب رویکرد سرور نیست و همچنین دارای مزایای متعددی در قالب انعطاف پذیری در اتصال دستگاه های جدید است.
در مورد ترموستات
بیایید به سیستم کنترل با استفاده از ترموستات خود به عنوان مثال نگاه کنیم.
ارائه شده:
- کنترل دما برای هر ترموستات (به عنوان یک بلوک جداگانه نمایش داده می شود).
- تنظیم برنامه عملیات ترموستات (صبح، بعدازظهر، عصر، شب).
- انتخاب یک شبکه Wi-Fi و اتصال دستگاه به آن؛
- به روز رسانی دستگاه "در هوا"؛
- راه اندازی MQTT؛
- شبکه ای که دستگاه به آن متصل است را پیکربندی کنید.
علاوه بر کنترل از طریق رابط وب، ما کلاسیک را ارائه کردیم - با کلیک بر روی صفحه نمایش. یک مانیتور 3224 اینچی Nextion NX024T2.4 روی آن وجود دارد. انتخاب به دلیل سهولت کار با دستگاه بر عهده او افتاد. اما ما در حال توسعه مانیتور خود بر اساس STM32 هستیم. عملکرد آن بدتر از Nextion نیست، اما هزینه کمتری دارد که تاثیر مثبتی بر قیمت نهایی دستگاه خواهد داشت.
مانند هر صفحه نمایش ترموستاتی که به خود احترام می گذارد، Nextion ما می تواند:
- دمای مورد نیاز کاربر را تنظیم کنید (با استفاده از دکمه های سمت راست).
- روشن و خاموش کردن حالت عملیات برنامه ریزی شده (دکمه H)؛
- عملیات رله نمایش (فلش در سمت چپ)؛
- دارای محافظت از کودک است (کلیک های فیزیکی تا زمانی که قفل حذف نشود مسدود می شوند).
- قدرت سیگنال WiFi را نمایش می دهد.
علاوه بر این، با استفاده از مانیتور می توانید:
- نوع سنسور نصب شده توسط کاربر را انتخاب کنید.
- مدیریت قابلیت قفل کودک؛
- سیستم عامل را به روز کنید
با کلیک بر روی نوار WiFi، کاربر اطلاعاتی در مورد شبکه متصل پیدا می کند. کد QR برای جفت کردن دستگاه در سیستم عامل HomeKit استفاده می شود.
دمو کار با نمایشگر:
توسعه داده ایم
ممکن است بپرسید، "ترموستات شما چه ویژگی خاصی دارد؟" اکنون ترموستات های زیادی با عملکرد Wi-Fi، عملکرد برنامه ریزی شده و کنترل لمسی در بازار وجود دارد. و علاقه مندان ماژول هایی را برای تعامل با اکثر سیستم های خانه هوشمند محبوب (Majordomo، HomeAssistant و غیره) نوشته اند.
ترموستات ما با چنین سیستم هایی سازگار است و تمام موارد فوق را دارد. اما ویژگی متمایز این است که به لطف انعطاف پذیری سیستم، ترموستات به طور مداوم در حال بهبود است. با هر به روز رسانی، عملکرد گسترش می یابد. به روش استاندارد مدیریت سیستم (طبق برنامه) یک روش تطبیقی اضافه می کنیم. این برنامه به شما امکان می دهد موقعیت جغرافیایی کاربر را به دست آورید. با تشکر از این، سیستم به صورت پویا حالت های عملیاتی را بسته به موقعیت خود تغییر می دهد. و ماژول آب و هوا به شما امکان می دهد با شرایط آب و هوایی سازگار شوید.
و قابلیت گسترش هر کسی می تواند ترموستات معمولی موجود خود را با ترموستات ما جایگزین کند. با حداقل تلاش. ما 5 مورد از محبوب ترین سنسورهای موجود در بازار را انتخاب کرده و پشتیبانی از آنها را اضافه کرده ایم. اما حتی اگر سنسور دارای ویژگی های انحصاری باشد، کاربر می تواند آن را به ترموستات ما متصل کند. برای انجام این کار، باید ترموستات را کالیبره کنید تا با یک سنسور خاص کار کند. ما دستورالعمل ها را ارائه خواهیم کرد.
هنگام اتصال یک ترموستات یا هر دستگاه دیگری، به طور همزمان در همه جا ظاهر می شود: هم در رابط وب و هم در برنامه PWA. افزودن یک دستگاه به صورت خودکار انجام می شود: فقط باید آن را به شبکه Wi-Fi متصل کنید.
سیستم ما نیازی به سرور ندارد و اگر از کار بیفتد به کدو تنبل تبدیل نمی شود. حتی اگر یکی از اجزاء خراب شود، سیستم در شرایط اضطراری شروع به کار نمی کند. کنترلکنندهها، حسگرها، دستگاهها - هر عنصر هم سرور و هم مشتری است، بنابراین کاملاً مستقل است.
برای علاقه مندان، شبکه های اجتماعی ما:
پست الکترونیک: [ایمیل محافظت شده]
PS ما شما را تشویق نمی کنیم که سرور را رها کنید. ما همچنین از یک سرور MQTT پشتیبانی می کنیم و ابر خود را داریم. هدف ما این است که ثبات و قابلیت اطمینان سیستم را به یک سطح کاملاً جدید برسانیم. به طوری که سرور یک نقطه ضعف نیست، بلکه عملکرد را تکمیل می کند و سیستم را راحت تر می کند.
منبع: www.habr.com