La configuración de la pregunta aquí es un poco engañosa, porque en realidad estos protocolos no pueden compararse en absoluto. Son como TCP e IP, capas superpuestas. [1]
Websockets es un protocolo de bajo nivel para proporcionar cosas que su RESTful http 'competidora' que está en el mismo nivel no proporciona: un canal siempre abierto sin necesidad de abrir y cerrar en cada solicitud. [2]
MQTT proporciona una forma ligera de publicar o suscribirse a datos. La confusión puede ser que esas suscripciones son algún tipo de canal, pero ese es un tipo diferente de canal. Para hacer una conexión abierta constante en MQTT, necesita Websockets Y MQTT al mismo tiempo.
En IoT, así como en cualquier diseño, debe seleccionar si necesita una transmisión o no (WebSockets vs RESTful) y sobre MQTT puede tener que pensar si desea una suscripción y un mecanismo de publicación en su aplicación.
En algunas circunstancias, puede considerar MQTT sobre WebSockets, si hay algo común. [3]
Respuesta a la pregunta:
Dices que tienes una configuración de un Rasperry Pi y varios sensores alrededor del lugar. Si los sensores están lejos de Rasperry con sus propios controladores, puede usar MQTT para recopilar los datos. Para almacenar datos en la nube, envíe los datos en HTTP. En la nube proporcione datos a través del descanso. [4]
Para websockets no hay necesidad, pero si lo encuentra útil, úselo.
Fuentes:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Cosas
[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