AWS IoT Core: як підключити пристрої до хмари?
Friday, Mar 21, 2025 | 3 | Friday, Mar 21, 2025
Що таке AWS IoT Core?
Як підключити ваш пристрій до хмари? Через HTTP? FTP? Телепатію? AWS має простіший спосіб — IoT Core.
AWS IoT Core — це сервіс для підключення пристроїв до хмари через MQTT, HTTP або WebSockets. Він дозволяє отримувати, обробляти та зберігати дані, а також відправляти команди на пристрої.
Наприклад, ви розробляєте розумну лампу. Коли ви натискаєте кнопку в додатку, AWS IoT Core відправляє команду лампі через MQTT, і вона вмикається. Просто? Так. Потужно? Дуже.
Основні компоненти AWS IoT Core
-
MQTT: основа AWS IoT Core
-
Теми (Topics) — канали MQTT.
-
Тіньовий пристрій (Device Shadow) — останній стан пристрою, навіть якщо він офлайн(ми записали і забули).
-
Правила (Rules Engine) — маршрутизація даних до інших сервісів AWS (Lambda, DynamoDB, S3 тощо).
-
Jobs — Віддалені команди та контроль виконання цих команд.
-
Policy — безпека та керування доступом.
MQTT — це легкий протокол для обміну повідомленнями між пристроями та сервером. Він працює за принципом «видавець-підписник» (publisher-subscriber).
Як це виглядає?
- Лампа підписується на тему home/lamp/status.
- Додаток публікує { “state”: “on” } у тему home/lamp/status.
- Лампа отримує повідомлення та вмикається.
Як налаштувати IoT Core
-
Створити річ (Thing) в AWS IoT Core.
-
Згенерувати код, сертифікат та завантажити їх на пристрій.
Код можна згенерувати для NodeJS, нам з того архіву треба буде тільки ключі дістати(які потом можна буде залити в ESP32 for example).
-
Запускаємо там приклад start.sh (я взяв NODEJS тому не забудьте скачати npm, NodeJS)
-
Після чого йдемо в тест вкладку і дивимось на повідомлення які йдуть з нашого комп’ютера на IoT Core.
УРА, ми маємо повідомлення з нашого комп’ютера на нашій хмарі… А тепер уявіть що у вас тисячі комп’ютерів, АБО навіть мікроконтролерів ESP32/NRF7001+nrf5*/etc.)
AWS IoT Jobs: віддалені команди та оновлення
Ваш пристрій знаходиться в іншому місті, і вам потрібно оновити прошивку? AWS IoT Jobs допоможе.
Як це працює?
- Ви створюєте Job у AWS IoT.
- Пристрій отримує повідомлення та завантажує нову прошивку.
- Прошивка застосовується, і пристрій повідомляє про успіх. Приклад JSON-завдання:
"jobDocument": {
"operation": "ota_update",
"firmware_url": "https://s3.amazonaws.com/my-bucket/firmware.bin"
}
}
Як підключити Lambda до IoT Core?
Щоб реагувати на повідомлення в темах MQTT, використовуйте Rules Engine:
- Створіть правило (Rule) в AWS IoT Core.
- Вкажіть SQL-запит: SELECT * FROM ‘sensors/temperature’.
Виберіть дію: Викликати Lambda.
- Ваша Lambda-функція отримує дані та обробляє їх (наприклад, зберігає в DynamoDB).
Приклад коду для Lambda:
import json
def lambda_handler(event, context):
temperature = event['temperature']
print(f"Температура: {temperature}°C")
return {
'statusCode': 200,
'body': json.dumps('OK')
}
AWS IoT Core у реальному житті
Приклад використання:
Заміна MQTT mosquitto, EMQX, etc., в хмарі для великих Enterprice продуктів.
- Це дозволяє платити тільки за данні і за N кількість пристроїв(не за всі сервера)
- Відповідно зменшити кількість сапорта для серверів(в основному все зводиться до DevOps)
- Швидка масштабованість
З мінусів:
- Ну це не своє… Це не так гнучко(можливо) як наприклад взяти EMQX і контролювати все)