# T.3.1.2 Aplicativo de lectura para Smartphone usando MQTT A continuación se describe un ejemplo que permite inicializar la lectura de datos en un teléfono móvil mediante el protocolo MQTT. Más detalles se indicará en clases. --- ## Lectura del protocolo MQTT usando un smartphone ![](https://hackmd.io/_uploads/Hy2t--m6Y.png) 1. En la figura siguiente se encuentran tres bloques, la primera corresponde para el tópico que se va usar; el segundo y tercer bloque son los métodos para inicializar y cerrar la conexión a MQTT. Reemplace la parte en blanco con el servidor MQTT y tópico respectivo. ![](https://hackmd.io/_uploads/Sk55ulXaF.png) 2. El diagrama siguiente corresponde al estado de la conexión de MQTT y la subscripción al tópico previamente definido. Tambien, en dicho diagrama mediante una condicional se cambia el estado a las diferentes etiquetas que tiene la apliación. Además, se deshabilita las acciones de los botones como las de "iniciar" y "parar" el proceso de transmisión. Finalmente, se muestra un mensaje de error si la conexión no ha tenido éxito. ![](https://hackmd.io/_uploads/BkdW9lQTt.png) 3. En el diagrama de bloque siguiente se usa el estado mqtt.PublishedReceived para recibir/publicar cualquieras de las variables que se muestra en la figura como: Topic, Payload, Message, RetainFlag y DupFlag. En particular, nos interesas el mensaje (pyload no usado, se puede reemplazar por el topic). En el diagrama se utiliza un procedimiento que permite decodificar el mensaje y transformarlo en diccionario. Esto permite que los datos sean tratados más facilmente y de manera independiente. Posteriormente los datos del mensaje y payload se cargan al procedimiento "llenarDatos". ![](https://hackmd.io/_uploads/Byzt5lX6t.png) 4. En el diagrama de bloque siguiente se declara el procedimiento "llenarDatos". El procedimiento recibe dos parametros "msg" y "pyload". En dicho procedimiento se les asigna los valores a cada una de las etiquetas como son las de temperatura y humedad respectivamente. Esto último se los realiza accediendo al Key Value del mensaje. Finalmente también se muestra el mensaje en general (se podría enviar el nombre del tópico). ![](https://hackmd.io/_uploads/ryawRl76F.png) 5. Finalmente el siguente bloque corresponde a un procedimiento que permite limpiar los datos cada vez que se presiona el boton stop. ![](https://hackmd.io/_uploads/Bk4KkZQ6Y.png) :::info :bulb: **Tarea**: Se le solicita que realice lo siguiente: 1. Modifique el programa de tal manera que pueda mostrar el nombre del topico que está transmitiendo el mensaje. ::: ### Bibliografía: By Willian Zamora Mero.