У меня есть программное обеспечение (Windows Server - немного отличающееся от «вещей», но основной принцип тот же), которое вызывает каждые 24 часа - оно отправляет обратно различные метаданные о себе:
- имя клиента (или уникальный идентификатор)
- версия программного обеспечения
- отметка времени звонка / запроса
- тип продукта / идентификатор
Веб-служба анализирует данные и вставляет (или обновляет, если у клиента есть существующая строка) строку в базе данных.
Таким образом, новый клиент автоматически добавляется в БД, существующие клиенты обновляют свою «последнюю увиденную» метку времени, и у нас всегда есть их последняя версия программного обеспечения. Я могу выполнять запросы к БД, которые сообщают мне, какие клиенты используют более старые версии и / или какие клиенты не обращались в течение некоторого времени.
Мы также недавно внедрили автоматическое обновление (например, обновление OTA), и потому что это очень важный процесс, мы внедрили для этого специальную телеметрию, которая записывает:
- Текущая версия.
- Версия для обновления.
- Кто / когда это разрешил (если требуется согласие клиента).
- Отметки времени и коды состояния для каждого из основных этапов.
Это позволяет нам определить, не работают ли определенные аспекты автоматического обновления, и во многих случаях позволяет часто звонить клиенту, прежде чем он даже заметит, что что-то не так.
Большая разница с «вещами» заключается в том, что вы, как правило, ограничены в памяти, поэтому для OTA-обновления xxx Kb
прошивки вам необходима xxx Kb * 2
доступная память (существующая прошивка + достаточно памяти для хранения новой прошивки перед началом фактического обновления прошивки)