A configuração das perguntas aqui é um pouco enganadora, porque na verdade esses protocolos não podem ser comparados. Eles são como TCP e IP, camadas acima uma da outra. [1]
Websockets é um protocolo de baixo nível para fornecer coisas que o http RESTful 'concorrente' que está no mesmo nível não fornece: um canal sempre aberto sem a necessidade de abrir e fechar a cada solicitação. [2]
O MQTT fornece uma maneira leve de publicar ou assinar dados. A confusão pode ser que essas assinaturas sejam algum tipo de canal, mas esse é um tipo diferente de canal. Para estabelecer uma conexão aberta constante no MQTT, você precisa de Websockets AND MQTT ao mesmo tempo.
Na IoT, assim como em qualquer design, é necessário selecionar se você precisa de um fluxo ou não (WebSockets vs RESTful) e sobre o MQTT, talvez seja necessário pensar se deseja um mecanismo de assinatura e publicação em seu aplicativo.
Em algumas circunstâncias, você pode considerar o MQTT sobre WebSockets, se houver algo em comum. [3]
Responda a pergunta:
Você diz que tem uma configuração de um Rasperry Pi e vários sensores ao redor do local. Se os sensores estiverem longe do Rasperry com seus próprios controladores, você poderá usar o MQTT para coletar os dados. Para armazenar dados na nuvem, envie os dados em HTTP. Na nuvem, forneça dados através do descanso. [4]
Para websockets, não há necessidade, mas se você achar útil, use-o.
Fontes:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Coisas
[2] https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-api-understanding-the-difference/
[3] /programming/30624897/direct-mqtt-vs-mqtt-over-websocket
[4] http://www.theinternetofthings.eu/antonio-grasso-mqtt-vs-http-what-best-protocol-iot