Реализация удалённой перезагрузки 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 очереди.
Подтверждение и таймаут
После отправки команды устройство должно ответить «получил, перезагружаюсь», а затем появиться online снова. В приложении — статусный индикатор: «отправлено → подтверждено → offline → online». Если через 60 секунд устройство не вернулось — уведомление о возможной проблеме с питанием или прошивкой.
Реализация удалённой перезагрузки IoT-устройства с подтверждением и мониторингом восстановления: 1–2 недели. Стоимость рассчитывается индивидуально.







