Реалізація удалену перезавантаження IoT-пристрою через мобільний додаток
Удалена перезавантаження IoT-пристрою — одна з перших функцій, яку запрашують при експлуатації розподіленої мережі датчиків або шлюзів. Пристрій перестав відповідати, але живлення є — класичний сценарій для промислових ESP32-шлюзів, Raspberry Pi, маршрутизаторів з OpenWRT.
Реалізація: команда через MQTT або REST
Якщо пристрій підключений до MQTT-брокера — publish в управляючий топік:
suspend fun rebootDevice(deviceId: String) {
val topic = "devices/$deviceId/commands/reboot"
val payload = MqttMessage(
jsonOf("action" to "reboot", "timestamp" to System.currentTimeMillis(),
"requestedBy" to currentUser.id).toByteArray()
).apply { qos = 1 } // QoS 1 — гарантія доставки хоча б раз
mqttClient.publish(topic, payload)
// Чекаємо підтвердження від пристрою у ответному топіку
withTimeout(30_000) {
deviceStateFlow.first { it.deviceId == deviceId && it.event == "rebooting" }
}
}
QoS 1 замість 0 — пристрій міг тимчасово відключитися від брокера, при відновленні отримає команду з retained черги.
Підтвердження та timeout
Після відправки команди перезавантаження пристрій повинен відповісти «отримав, перезавантажуюсь», а потім з'явитися online знову. В додатку — індикатор статусу: «відправлено → підтверджено → offline → online». Якщо за 60 секунд пристрій не повернувся — сповіщення про можливу проблему з живленням або прошивкою.
Реалізація удаленої перезавантаження IoT-пристрою з підтвердженням та моніторингом відновлення: 1–2 тижні. Вартість розраховується індивідуально.







