Resposta curta: é possível.
Resposta longa: é complicado. É por isso que tantas implementações muito ruins estão por aí.
No mínimo, você tem duas etapas em qualquer processo de atualização remota / remotamente.
- Transmissão de firmware
- Instalando firmware.
Obviamente, esse é o mínimo absoluto. Se você estiver trabalhando em iterações, também é um primeiro passo muito válido. Se você tiver mais de um dispositivo, poderá associar o firmware correto ao dispositivo correto . Se você quiser reduzir a chance de bloquear o dispositivo, desejará uma maneira de verificar o estado do dispositivo antes e depois da atualização , também desejará proteger o transporte e torná-lo o mais confiável possível e, naturalmente, tenha uma estratégia de fallback em caso de erro de atualização .
São mais cinco etapas que levam você a um produto confiável. Existem práticas recomendadas para essas coisas, mas elas dependem do ambiente do seu projeto. Talvez seja algo barato e a taxa de falha de 5% nas atualizações esteja correta, talvez seja um marcapasso e até um erro no total seja inaceitável, pois leva a um cenário fatal. Você precisará encontrar soluções para os princípios básicos que se encaixam no seu produto.
Além disso, existem dezenas de coisas diferentes a considerar. Você vai ter clientes? Você tem que informá-los? Eles têm alguma influência no tempo / instalação da atualização? Seus dispositivos estão em diferentes países? As restrições legais se aplicam? Os padrões normativos se aplicam? Quantos dispositivos você está atualizando? 1? Uma dúzia? Centenas? Milhões?
Se você atualizar cinco dispositivos, o processo poderá ser bastante falador. Se você estiver atualizando milhões, pode ficar muito caro. E sim, isso afeta o que listei acima como etapa um, transmitindo o firmware. Talvez você crie um marca-passo e um custo de processo de centenas de mensagens por atualização seja bom, considerando a alternativa.
Essas são apenas as perguntas que escrevi em dois minutos, portanto essa lista certamente não é exaustiva. Meu argumento é que sem informações sobre o cenário, não podemos realmente ajudá-lo adequadamente.