Інтеграція Google Cloud IoT у мобільне IoT-додаток
Google Cloud IoT Core була офіційно знята з експлуатації 16 серпня 2023 року. Якщо ви прийшли сюди з питанням «як інтегрувати GCP IoT Core» — важливо знати це прямо зараз. Проекти, які на неї полягали, мали мігрувати на альтернативи.
Що замість Google Cloud IoT Core
Google рекомендує кілька шляхів міграції:
1. MQTT-мост через Cloud Pub/Sub напрямки. Пристрої публікують у Cloud Pub/Sub через користувацький MQTT-брокер (HiveMQ, EMQX, Mosquitto), а не через управлюваний GCP IoT Core. Мобільний додаток підписується на Pub/Sub топіки через gRPC API.
2. Партнерські платформи. Google офіційно відсилає до Clearblade IoT Core та Cognite, які пропонують сумісний API. Міграція з Cloud IoT Core на Clearblade — мінімальні зміни у клієнтському коді.
3. Перехід на інший хмарний IoT-провайдер — AWS IoT Core або Azure IoT Hub, якщо привязки до GCP немає.
Ми найчастіше рекомендуємо Cloud Pub/Sub + користувацький MQTT-брокер для клієнтів, які хочуть залишитися в GCP-екосистемі.
Архітектура мобільного додатку на базі GCP
Прямое подключение к Cloud Pub/Sub через gRPC требует Google Cloud credentials. Встраивать Service Account key в приложение — нельзя. Используем Firebase Authentication + Cloud Firestore/Realtime Database как transport-слой для IoT-состояний.
Схема работает так: IoT-устройства публикуют телеметрию → MQTT-брокер → Cloud Pub/Sub → Cloud Function → Firestore. Мобільний додаток читає стани з Firestore через realtime-підписки та пише команди туди же. Окрема Cloud Function слухає зміни у Firestore та публікує команди назад у MQTT-брокер до пристрою.
На Flutter через пакет cloud_firestore:
FirebaseFirestore.instance
.collection('devices')
.doc(deviceId)
.snapshots()
.listen((snapshot) {
final state = DeviceState.fromJson(snapshot.data()!);
// оновлюємо UI
});
На React Native — @react-native-firebase/firestore з аналогічним API.
Cloud Run + MQTT для IoT
Більш правильна production-архітектура: EMQX або HiveMQ на Cloud Run / GKE → Cloud Pub/Sub → Cloud Functions → Firestore. EMQX підтримує Rule Engine (аналог AWS IoT Rules): можна прямо з брокера публікувати у Pub/Sub за умовами без окремих Lambda/Functions.
Мобільний клієнт підключається до EMQX через MQTT over WebSocket з JWT-аутентифікацією (видається Firebase Auth). EMQX перевіряє токен через HTTP Authentication hook — запит до вашого бекенду при кожному підключенні.
Firebase Cloud Messaging для IoT-подій
Push-повідомлення за IoT-подіями — нативна сильна сторона GCP-стека. Cloud Function триггерится по Pub/Sub сообщению, отправляет FCM notification через Admin SDK:
await admin.messaging().send({
token: userFcmToken,
notification: { title: 'Датчик руху', body: 'Рух виявлено у прихожій' },
data: { deviceId: '...', eventType: 'motion' }
});
На Flutter firebase_messaging обробляє повідомлення у background через onBackgroundMessage handler. Важливо: handler має бути top-level функцією, не методом класу — інакше крах при отриманні повідомлення у killed state.
Терміни
Базова архітектура (MQTT-брокер + Pub/Sub + Firestore + мобільний клієнт) — 3–4 тижні. Push-повідомлення, Cloud Functions для автоматизації — ще 1–2 тижні. Стоимость рассчитывается индивидуально, GCP-инфраструктура тарифицируется по объёму сообщений и compute.







