Що потрібно для створення власної особистої хмари для пристроїв IoT?


18

Це тема, над якою я думав деякий час, тим більше, що концепція "IoT" останнім часом багато розпливається.

Почну з того, що я маю на увазі, коли скажу «IoT» . Я знаю, що термін IoT може означати різні речі і що іноді його вживають. Це може бути термін, який не є чітко визначеним і може призвести до великих дискусій щодо того, що це точно означає, я сам не знаю правильного і широко прийнятого визначення цього терміна. Тож для мене IoT - це концепція, концепція, яка визначає можливість підключення до вбудованого пристрою дистанційно через Інтернет або з іншого вбудованого пристрою, або з мобільного телефону . Так просто.

У цьому контексті ціль цього з'єднання не має значення, чи можна підключити один пристрій у вашому офісі до іншого вдома або якщо ви можете підключитись до одного пристрою вдома зі свого мобільного телефону, і все це через Інтернет, то мова йде про пристрої IoT (вбудовані пристрої, а не телефон).

Отже, домовившись про те, що я маю на увазі під IoT, я зараз опишу те, чого намагаюся досягти.

Я намагаюся досягти саме того, що я описую в своєму визначенні IoT.

Я хочу, щоб один або кілька вбудованих пристроїв вдома були підключені до мого інтернет-маршрутизатора, або через Ethernet, або через Wi-Fi та мати можливість віддалено підключатися до них з іншими вбудованими пристроями у віддаленому місці (а віддаленим я маю на увазі не в тій же мережі) і, можливо, також мати можливість підключитися до них за допомогою програми моніторингу на моєму телефоні

Наприклад, у мене може бути простий вбудований пристрій, який працює як перемикач увімкнення / вимкнення, підключений до мого відкриття гаражних дверей, і інший вбудований пристрій, який працює як велика червона кнопка на моєму столі, так що я можу натиснути червону кнопку в своєму столі і двері гаража відкриваються.

Іншим прикладом може бути вбудований пристрій з можливостями АЦП, який може контролювати температуру мого будинку та надсилати мені сповіщення, коли він досягне порогу. Повідомлення може бути отримане або простим додатком для Android, або іншим вбудованим пристроєм з маленьким екраном, що сидить на моєму столі за роботою.

Ці приклади можуть бути нерозумними, але лише для того, щоб проілюструвати можливі сценарії та використовувати випадки для того, що я намагаюся досягти. Зрештою, ідея така ж, підключіть один вбудований пристрій до іншого через Інтернет.

Інша річ, яку слід уточнити, - це те, що обмін даними між цими пристроями буде дуже легким, всього пару байтів щоразу, не так, щоб сотні кілобайт потрібно було обмінюватись між пристроями.

Додатково, до типу "вбудованих пристроїв", які я маю на увазі, є прості, але здатні пристрої, засновані на мікроконтролерах cortex-m4 на 100 МГц або 200 МГц. І це важливо для уточнення, оскільки на цих пристроях не буде працювати жодна Linux або складна бібліотека. Зрештою, така трата ресурсів і зовсім непотрібна наявність потужного процесора під управлінням Linux, щоб увімкнути і вимкнути лампочку . У будь-якому випадку я планую використовувати як вбудовані пристрої BeagleBoard, Raspberry Pi або будь-яку іншу подібну дошку. Просто мікроконтролери, тому що не потрібно більше складності, ніж це.

Я мало знаю про платформи IoT та про такі складні рішення. Коли я розпочав цей шлях пошуку способу з'єднання одного вбудованого пристрою з іншим через Інтернет, я натрапив на кілька сайтів із послугами IoT.

Я знаю, що є такі хмарні сервіси IoT, як:

Тільки для назви декількох. Основні питання з ними - вартість та складність. Вам потрібно платити за отримання цих послуг, а також ви повинні навчитися реалізовувати всі послуги, які вони мають, якщо вам потрібні всі, та їх API та, можливо, купу інших речей, які мені не здаються потрібними здатний просто обмінятися деякими байтами між пристроями. Я просто хочу чогось більш простого, ніж те, що я можу зробити сам.

Ви можете сказати, що реалізація власної "хмари", якщо це щось, що я маю робити, не є простим, а іноді краще використовувати такі послуги заради простоти, але є дві основні причини, які я хочу знати, як це зробити впроваджувати власні послуги IoT.

Основна причина полягає в тому, що я хочу це зробити самостійно. Я не хочу покладатися на третю сторону для підключення своїх пристроїв один до одного, і оскільки я буду розробляти код і обладнання для своїх пристроїв, тоді мені також краще створити власні засоби для їх підключення як пристрої IoT.

Друга причина - навчитися це робити. Знаючи всі необхідні речі, які мені потрібні для досягнення цього, я буду краще розуміти світ ІОТ.

Крім того, я хочу зазначити, що я знаю C і використовую Linux як свою щоденну ОС як на роботі, так і вдома, тому, будь ласка, уникайте матеріалів для Windows, оскільки це для мене марно. Я не боюся нічого, що мені доведеться реалізувати в C для своїх вбудованих пристроїв або в Linux, щоб реалізувати все необхідне для досягнення своєї мети.

Отже, моє запитання полягає в тому, що потрібно реалізувати і де, щоб мати можливість з'єднати два або більше вбудованих пристроїв один до одного з метою обміну даними між ними?

Це питання Що я можу використовувати для створення IoT на власному сервері? мати щось подібне, але закрито і не має відповідей, а також передбачає використання вже наявної хмарної інфраструктури. Тож мені це не допомагає.

Цей інший пост Які послуги IoT доступні для зберігання / відправки / публікації загальних даних у хмарі? є подібне запитання, але ОП явно задає послуги IoT, і я намагаюся їх уникати.


2
Як сервер "існуюча хмарна інфраструктура"? Сервер - це лише комп'ютер. Хмарна інфраструктура - це набагато більше.
користувач253751

1
Також зауважте, що коли у нас є всюдисущий IPv6, ви, можливо, зможете змусити ваші пристрої IoT спілкуватися безпосередньо між собою, не потребуючи центрального сервера / хмари.
користувач253751

Відповіді:


10

Можливо, я пропустив суть питання, але я думаю, що це вдалий початок з відповіді.

Потрібно, як мінімум, три речі.

  1. Завжди ввімкнений вузол обчислення для агрегації ваших даних. Це не потрібно, щоб бути потужним, це може бути процес, що працює на вашому NAS або навіть (теоретично) на вашому маршрутизаторі. Для простоти припустимо, що це Raspberry Pi. Це також може забезпечити будь-які фантазійні радіопротоколи, які ви вирішите підтримувати в майбутньому. Хоча теоретично ви можете запустити одноранговий з усіма вузлами, що потрапляють до Інтернету, простіше визначити одного з них як головного і мати цю обробку зібрання даних та публікації (для програми / користувача). Звичайно, хаб може бути і вузлом, особливо якщо ви використовуєте вузли WiFi, які є помірно потужними.
  2. Підходящий стек програмного забезпечення, що дозволяє кінцевим точкам надсилати свої дані до вашого вузла концентратора. - це те, що вам потрібно тут, плюс ОС для запуску.
  3. DNS та переадресація портів для полегшення доступу до вашого сервера з більш широкого Інтернету.

Тоді не забувайте про безпеку. Роблячи це, ви будете ближче до відкриття всього в домашній мережі для нападу. Можливо, лише небагато, але добре бути в курсі ризику. Ви можете спробувати і подбати, але припускайте, що ви помилитесь.


1
Я не впевнений, що це відповідь, яку ви хотіли. Це повинно допомогти розібратися, що вам потрібно запитати.
Шон Хуліхане

1
Дякуємо за допомогу !! Отже, що ви маєте на увазі під своїм першим пунктом, це те, що мені потрібен якийсь концентратор або шлюз?
m4l490n

1
Так, вам потрібен шлюз або декілька. Якщо у вас є лише один вузол, це, очевидно, може бути вашим вузлом. Я трохи відредагував свою відповідь.
Шон Хуліхане

11

Легкі пристрої та кілька байт швидкості дат просять використовувати MQTT , як уже згадувалося. Ваші сенсорні вузли можуть базуватися на автономних модулях ESP8266, які є достатньо потужними для розміщення клієнтської реалізації MQTT. Або ви можете просто використовувати ці модулі як модуль Wi-Fi, керований командою AT, разом із зовнішніми мікроконтролерами.

Ви можете реалізувати власне рішення MQTT на набагато менш потужних мікроконтролерах, як цей хлопець, який використовував Atmega48V з 4 кБ спалаху .

Ви можете розмістити на своєму комп’ютері брокера, хоча запустити Raspberry Pi замість цього буде більш ефективно. Знову ж таки, якщо вам подобається кодування, ви можете реалізувати власний брокер MQTT. Особисто я знайшов Москітто чудовим для цієї мети.

Недолік того, що всі ваші сенсорні вузли потребують TCP / IP-з'єднання.


Приємним рішенням для акумуляторів може бути використання LoraWAN або ZigBee вузлів датчика / виконавчого механізму та реалізація шлюзу на Raspberry / BeagleBone, який може розміщувати і простий веб-сервер, до якого можна отримати доступ з вашого телефону або інших пристроїв.


У кожному випадку все зводиться до того, щоб зробити ваш концентратор, шлюз чи сервер доступними за межами вашої приватної мережі. Існує більше способів зробити це, і головна турбота - це завжди безпека. Це на мою думку найризикованіша частина.

Основні вимоги досить добре узагальнені @Sean.


Відповідно до вашої відповіді та відповіді @ Sean, я бачу, що мені потрібен якийсь концентратор або шлюз. Це абсолютно необхідно? Тобто, чи не можу я просто підключитися безпосередньо до будь-якого вузла, знаючи, що це IP-адреса чи ім’я хоста? Хіба що я намагаюся уникати концентратора чи шлюзу, я просто хочу зрозуміти, чи потрібно це і чому. Дякуємо за допомогу !!
m4l490n

Ви виявили, що Raspberry Pi чудово підходить як "завжди в наявності"? У мене маленький жорсткий диск підключений до мого Pi, який я використовую як мережеве сховище, але не соромтесь залишати його постійно. Чи має бути гаразд, якщо я це роблю? (FWIW У мене є невеликі радіатори)
BruceWayne

1
@ m4l490n Використання концентратора або шлюзу робить його більш простим. Таким чином, ви повинні налаштувати переадресацію порту або таке лише для концентратора або шлюзу. Якщо ви хочете безпосередньо підключитися до всіх пристроїв, що стоять за вашим маршрутизатором, вам, наприклад, потрібно налаштувати переадресацію портів для кожного. Більше ризику, оскільки ви відкриваєте більше шляхів до своєї приватної мережі та більше роботи.
Бенс Каулікс


10

Ви поставили під сумнів обидві попередні відповіді про потребу контролера / концентратора. Вважайте, що для того, щоб все сталося, вам потрібні правила. Якщо ви хочете натиснути велику червону кнопку, щоб відкрити гаражні двері, деяке правило має прив’язати датчик (кнопку) до потрібної дії (відкриття дверей). Є два способи зробити це: ви можете поставити правило безпосередньо на кнопку, або ви можете помістити правило в окремий комп'ютер.

Поміркуймо детальніше про пряме рішення. Якщо ви вчите кнопку про двері гаража, то ваша кнопка дотримується правил всередині. Кнопці потрібен ідентифікатор гаражних дверей, тому якщо ви заміните гаражні двері, кнопка не працює. Якщо кнопка на вашому столі, а ваш будинок використовує власну мережу, кнопка повинна знати як адресу шлюзу вашого будинку, так і адресу дверей. Кнопка повинна знати конкретний протокол, щоб сигналізувати про відкриття вашої двері - чи всі виробники роблять сумісні кнопки, які знають про всі сигнали дверей? Кнопка не може робити нічого іншого, якщо ви не перепрограмуєте її - у вас є програміст спалаху для чіпа кнопки, який знаходиться навколо, і чи сумісний цей програміст з будь-якими іншими пристроями? Якщо ви хочете, щоб двері гаража відкрилися, а через 5 хвилин закрилися, вашій кнопці потрібні всі складності обслуговування годин у режимі реального часу. Ваша кнопка не буде знати стан дверей, тому важко дізнатися, закриваєте чи відкриєте двері. І як створити резервну копію правил, щоб, якщо ваша кнопка зламалася, ваша кнопка заміни може виконати роботу? З іншого боку, це звучить дешево: вам не потрібен окремий комп'ютер.

З контролером все інакше. Всі повідомлення від усіх датчиків доставляються на контролер. Кожен датчик простий: передайте сигнал на контролер. Потім контролер може застосовувати будь-які входи, необхідні для дуже складних правил: він може перевіряти датчик сонячного світла і не включати зовнішні світильники, якщо не темно, або не запускати дощувачі, якщо середня кількість опадів за місяць вище середньої та поточної температури знаходиться на п’ять градусів нижче середнього. Контролер може відстежувати стан. Це може бути важливо, якщо ви хочете кнопку "закрити гаражні двері", але не кнопку "відкритих гаражних дверей" (коли я не вдома, я рідко хочу відкрити двері, але я точно хочу закрити її, якщо вона є випадково залишили відкритим.)

Контролер може забезпечити місце для драйверів пристроїв, які вміють слухати кнопки та інших драйверів, які вміють розмовляти з дверима. Контролер може бути більш модернізованим до нових пристроїв та типів пристроїв, ніж крихітний мікросхем, укладений всередині кнопки.

Контролер також може мати більш складну логіку щодо інфраструктурних завдань, таких як доставка повідомлень, пропонуючи певний рівень обслуговування. Наприклад, протокол MQTT передбачає три різні рівні: спробуйте доставити повідомлення один раз, доставити його повторно, поки воно не буде помічено хоча б один раз, або доставити його один раз і лише один раз.

Контролер пропонує архітектурно логічне місце для консолідації всіх повідомлень до і з шлюзу зв'язку, що дозволяє використовувати зовнішній інтерфейс. Це означає, що ваша кнопка та ваш телефон можуть надсилати сигнали, і за правилами можна визначити, що будь-кому дозволяється відкривати двері гаража. Шлюз може також забезпечити безпеку. Вам не потрібно ставити кнопку і двері гаража в Інтернеті; ви можете розмістити їх як у приватних ізольованих мережах, так і використовувати шлюз для передачі сигналів. Контролер також надає єдину точку для резервного копіювання всіх правил для вашої системи.

Мінуси контролера додають затримку та додаткову складність. Дивно, але контролер не дозволяє помітно подорожчати. Ви можете реалізувати контролер на Raspberry Pi за меншу вартість одного середнього дистанційно керованого вимикача світла. Не скидайте ідею лише на основі вартості.


Що ж, здається, що мати HUB або контролер дуже бажано, особливо якщо мені потрібен функціонал, заснований на правилах, на всіх моїх пристроях IoT, які могли б отримати максимум можливості у всій мережі.
m4l490n

Отже, якщо я правильно зрозумів, я можу мати однорангове з'єднання за умови, що мені не потрібні складні правила або навіть складна мережа пристроїв IoT, і це також передбачає, що пристрої IoT не матимуть ніякої сумісності з інших марок і, наприклад, одна кнопка завжди буде прив’язана до одного відкривача дверей.
m4l490n

В іншому випадку, якщо потрібна більша гнучкість та функціональність, я повинен мати HUB. Це правильно?
m4l490n

Так, це точний підсумок. Практично всі в кінцевому підсумку потребують певного концентратора / контролера. Варіантів для концентраторів як комерційних, так і з відкритим кодом.
Джон Детерс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.