{"id":2579,"date":"2018-12-17T11:37:52","date_gmt":"2018-12-17T16:37:52","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=2579"},"modified":"2025-04-07T11:49:30","modified_gmt":"2025-04-07T16:49:30","slug":"mqtt-esquema-del-mensaje-de-estado-o-accion","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/mqtt-esquema-del-mensaje-de-estado-o-accion\/","title":{"rendered":"3.1 MQTT - Esquema del mensaje de estado o acci\u00f3n"},"content":{"rendered":"<p><em><strong>Referencia<\/strong><\/em>: MQTT, <a href=\"https:\/\/mqtt.org\/\">https:\/\/mqtt.org\/<\/a> . Mosquitto, <a href=\"https:\/\/mosquitto.org\/\">https:\/\/mosquitto.org\/<\/a><\/p>\n<h2>1. MQTT\u00a0 Concepto<\/h2>\n<p><span class=\"ILfuVd\"><span class=\"hgKElc\">MQTT (Message Queing Telemetry Transport) es un protocolo de comunicaci\u00f3n entre m\u00e1quinas (M2M) ligero y simplificado que sirve para comunicar estados o acciones de los dispositivos.<br \/>\n<\/span><\/span><\/p>\n<p>Una vez conectado el dispositivo a la red WiFi (secci\u00f3n anterior), el siguiente paso consiste en enviar los mensajes de estado, o recibir las instrucciones de acci\u00f3n que son llamados los mensajes MQTT.<\/p>\n<table>\n<caption>mensajes MQTT<\/caption>\n<tbody>\n<tr>\n<th>Estado<\/th>\n<th>Acci\u00f3n<\/th>\n<th rowspan=\"4\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mensaje_Paloma01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-3278 size-thumbnail\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mensaje_Paloma01-150x150.png\" alt=\"Mensaje Paloma01\" width=\"150\" height=\"150\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mensaje_Paloma01-150x150.png 150w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mensaje_Paloma01-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/th>\n<\/tr>\n<tr>\n<td>encendido\/apagado<\/td>\n<td>encender\/apagar<\/td>\n<\/tr>\n<tr>\n<td>ON \/ OFF<\/td>\n<td>1\/0<\/td>\n<\/tr>\n<tr>\n<td>26\u00b0 C<\/td>\n<td>bajar a 26\u00b0 C<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Para administrar los mensajes de requiere servidor que opere como oficina de correos, tambi\u00e9n llamado \"<em><strong>broker<\/strong><\/em>\".<\/p>\n<p>El 'broker' recibe los mensajes publicados por los dispositivos (pub) y los re-env\u00eda a los destinatarios o suscriptores (sub) conectados al servicio de mensajer\u00eda.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3277 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01.png\" alt=\"Mqtt inicia 01\" width=\"1234\" height=\"614\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01.png 1234w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01-300x149.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01-768x382.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/09\/Mqtt_inicia01-1024x510.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>El broker MQTT seleccionado para el ejercicio es <em><strong><a href=\"https:\/\/mosquitto.org\/\">Mosquitto<\/a> <\/strong><\/em>por ser de tipo \"open source\". El broker se puede implementar en un equipo servidor e incluso en una laptop con objetivos de pruebas b\u00e1sicas.<\/p>\n<h2>2. MQTT - Protocolo<\/h2>\n<p>Los mensajes MQTT en los dispositivos tienen dos tipos de procesos:<\/p>\n<ul>\n<li>Publicaci\u00f3n o env\u00edo de mensajes de estado (<strong>pub<\/strong>)<\/li>\n<li>Suscripci\u00f3n o recepci\u00f3n de mensajes de estado (<strong>sub<\/strong>)<\/li>\n<\/ul>\n<p>Por ejemplo, para anunciar el cambio de estado de una puerta como abierta o cerrada usando un sensor se realiza la acci\u00f3n de <strong>pub<\/strong>licaci\u00f3n hacia un broker.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/EsquemaMQTT01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1960 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/EsquemaMQTT01.png\" alt=\"Esquema MQTT 01\" width=\"836\" height=\"464\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/EsquemaMQTT01.png 836w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/EsquemaMQTT01-300x167.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/EsquemaMQTT01-768x426.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<h2>3. MQTT - Par\u00e1metros de comunicaci\u00f3n<\/h2>\n<p>Un mensaje MQTT tiene\u00a0 elementos semejantes a un correo electr\u00f3nico. Para mostrar la semejanza, se usa como ejemplo un mensaje con la acci\u00f3n de apagar una l\u00e1mpara de la oficina en la siguiente tabla.<\/p>\n<table>\n<tbody>\n<tr>\n<th style=\"background-color: lightgrey\" colspan=\"2\">correo electr\u00f3nico<\/th>\n<th style=\"background-color: purple;color: white\" colspan=\"2\">MQTT<\/th>\n<\/tr>\n<tr>\n<td><em>De<\/em>:<\/td>\n<td>Juan<\/td>\n<td>Dispositivo\/MQTT_ID:<\/td>\n<td>lampara01<\/td>\n<\/tr>\n<tr>\n<td><em>Para<\/em>:<\/td>\n<td>Mar\u00eda<\/td>\n<td>Broker\/puerto:<\/td>\n<td>192.168.10.50:1883<\/td>\n<\/tr>\n<tr>\n<td><em>Asunto<\/em>:<\/td>\n<td>l\u00e1mpara de oficina<\/td>\n<td>t\u00f3pico:<\/td>\n<td>'oficina\/lampara'<\/td>\n<\/tr>\n<tr>\n<td><em>Mensaje<\/em>:<\/td>\n<td>Apagar por favor, la dej\u00e9 encendida<\/td>\n<td>estado\/acci\u00f3n:<\/td>\n<td>'OFF'<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Los elementos del mensaje en el esquema IoT y MQTT se muestran sobre el esquema IoT para el caso del sensor en una puerta. Se observa la forma de identificar cada elemento en cada componente o capa del modelo IoT.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3295 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02.png\" alt=\"Mqtt inicia 02\" width=\"1235\" height=\"615\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02.png 1235w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02-300x149.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02-768x382.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/Mqtt_inicia02-1024x510.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Semejante a la conexi\u00f3n de WiFi hacia el Router, en MQTT se requiere disponer de los datos de un \"administrador de mensajes\" o \"broker MQTT\", que lo identifiquen en la red y a la vez tambi\u00e9n alg\u00fan medio de control de uso como usuario y contrase\u00f1a.<\/p>\n<table>\n<caption>broker MQTT<\/caption>\n<tbody>\n<tr>\n<th>Par\u00e1metro<\/th>\n<th>valor<\/th>\n<\/tr>\n<tr>\n<td>direcci\u00f3n IP<\/td>\n<td>192.168.10.50<\/td>\n<\/tr>\n<tr>\n<td>puerto<\/td>\n<td>1883<\/td>\n<\/tr>\n<tr>\n<td>usuario<\/td>\n<td>usuarioprueba<\/td>\n<\/tr>\n<tr>\n<td>contrase\u00f1a<\/td>\n<td>usuarioclave<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>El broker MQTT adem\u00e1s de identificarse por la direcci\u00f3n IP y usa un n\u00famero de puerto para identificar tambi\u00e9n el servicio, pues pueden existir otros procesos en el mismo \"servidor\". El puerto b\u00e1sico es 1883, en el caso que se use encriptaci\u00f3n de mensajes por TLS\/SSL el puerto cambia a 8883.<\/p>\n<p>En el ejemplo, se presentan valores que deben ser actualizados con los datos correspondientes a la configuraci\u00f3n del broker que est\u00e9 usando.<\/p>\n<pre><span style=\"color: #434f54\">\/\/ MQTT: Servidor<\/span>\r\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_IP<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"192.168.10.50\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint16_t<\/span> <span style=\"color: #000000\">MQTT_puerto<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">1883<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_usuario<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"usuarioprueba\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_contrasena<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"usuarioclave\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<\/pre>\n<p>El dispositivo tambi\u00e9n debe ser identificado para el mensaje, teniendo como par\u00e1metros complementarios el identificador MQTT_ID.<\/p>\n<p>Otro par\u00e1metro es el tema o <strong>t\u00f3pico<\/strong> (MQTT_TOPIC) que tambi\u00e9n se usa para ubicar el dispositivo en un entorno o \u00e1rea y una variable de estado o acci\u00f3n separada mediante una barra de divisi\u00f3n \"\/\".<\/p>\n<p>El <strong>estado<\/strong> del dispositivo o valor de sensor se establece en una variable MQTT_Estado.<\/p>\n<pre><span style=\"color: #434f54\">\/\/ MQTT: Dispositivo<\/span>\r\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_ID<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"DispositivoLED\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">char<\/span><span style=\"color: #434f54\">*<\/span> <span style=\"color: #000000\">MQTT_TOPIC<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"oficina\/mensaje\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">char<\/span> <span style=\"color: #000000\">MQTT_SensorEstado<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">boolean<\/span> <span style=\"color: #000000\">mqtt_desconectado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">;<\/span>\r\n<\/pre>\n<p>Para el proceso tambi\u00e9n se puede usar una bandera de conectado o desconectado, para determinar si es posible enviar el mensaje sobre la red de datos.<\/p>\n<p>En la pr\u00e1ctica un dispositivo podr\u00eda disponer de uno o mas sensores y\/o actuador. Por ejemplo el sensor DHT11 entrega valores de temperatura y humedad, y disponer de un interruptor rel\u00e9 para encender o apagar un foco. En estos casos ser\u00eda necesario distinguir varios t\u00f3picos o estados para el dispositivo.<\/p>\n<h2>4.\u00a0 Esquema de instrucciones por Bloques<\/h2>\n<p>En el esquema de instrucciones por bloques para el dispositivo se requiere a\u00f1adir algunas partes para operar con MQTT.\u00a0 El mensaje MQTT viaja sobre una red de datos como WiFi, por lo que es necesario haber completado la parte de conexi\u00f3n a Wifi descrita en la secci\u00f3n anterior.<\/p>\n<h3>4.1 Bloque de inicio<\/h3>\n<p>Los procesos para mensajer\u00eda con MQTT se pueden manejar con la librer\u00eda es <code>PubSubClient.h<\/code> que se a\u00f1ade en el gestor de librer\u00edas del IDE.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/ArduinoLibreria_MQTT01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3084 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/ArduinoLibreria_MQTT01.png\" alt=\"Arduino Libreria MQTT 01\" width=\"944\" height=\"291\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/ArduinoLibreria_MQTT01.png 944w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/ArduinoLibreria_MQTT01-300x92.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2019\/08\/ArduinoLibreria_MQTT01-768x237.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Revise que se encuentre disponible en el men\u00fa de <code>programa\/incluir librer\u00eda\/gestor de librerias<\/code>, de no ser as\u00ed, aparece el bot\u00f3n de instalar en la ventana de la figura.<\/p>\n<p>Con lo que se puede incluir la librer\u00eda y los proceso para establecer un cliente en el broker MQTT.<\/p>\n<pre><span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><b><span style=\"color: #d35400\">PubSubClient<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ Clientes WiFi y MQTT<\/span>\r\n<b><span style=\"color: #d35400\">WiFiClient<\/span><\/b> <span style=\"color: #000000\">wificlient<\/span><span style=\"color: #000000\">;<\/span>\r\n<b><span style=\"color: #d35400\">PubSubClient<\/span><\/b> <span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">wificlient<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<\/pre>\n<h3>4.2 Bloque de configuraci\u00f3n setup()<\/h3>\n<p>Se requiere realizar una conexi\u00f3n con el broker MQTT, se forma semejante a la conexi\u00f3n al router, por lo que se crea un proceso denominado inicia_mqtt() solamente si se ha establecido una conexi\u00f3n WiFi.<\/p>\n<h3>4.3 Blucle o lazo de operaci\u00f3n Loop()<\/h3>\n<p>Una vez realizada la lectura del sensor, de tener disponible una conexi\u00f3n WiFi y una conexi\u00f3n a un broker MQTT se realiza la publicaci\u00f3n del valor del sensor en el t\u00f3pico correspondiente.<\/p>\n<pre> \u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<\/pre>\n<h3>4.4 Bloques de procedimiento inicia_mqtt() y publica_estado()<\/h3>\n<p>El procedimiento inicia_mqtt() se encarga de establecer los par\u00e1metros del broker y la conexi\u00f3n, que de completarse inicializa el estado del dispositivo publicando el valor del sensor o actuador.<\/p>\n<pre> \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">setServer<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_IP<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_puerto<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connect<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_ID<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_usuario<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">MQTT_contrasena<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/mqttclient.setCallback(callback);<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ Si conectado, inicializa estado<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">publica_estado<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<p>El procedimiento de publicaci\u00f3n de estado tiene dos partes, la conformaci\u00f3n del mensaje y el env\u00edo del mensaje.<\/p>\n<pre> \u00a0<span style=\"color: #434f54\">\/\/ formato para envio (Texto)<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">sensor_estado<\/span> <span style=\"color: #434f54\">==<\/span> <span style=\"color: #00979c\">true<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_SensorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #005c5f\">\"ON\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span><span style=\"color: #5e6d03\">else<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">snprintf<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_SensorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">10<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #005c5f\">\"OFF\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ publicar estados<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">connected<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">==<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">mqttclient<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">publish<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">MQTT_TOPIC<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">MQTT_SensorEstado<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #00979c\">true<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<p>La siguiente p\u00e1gina presenta el archivo con las instrucciones completas para la operaci\u00f3n de un dispositivo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Referencia: MQTT, https:\/\/mqtt.org\/ . Mosquitto, https:\/\/mosquitto.org\/ 1. MQTT\u00a0 Concepto MQTT (Message Queing Telemetry Transport) es un protocolo de comunicaci\u00f3n entre m\u00e1quinas (M2M) ligero y simplificado que sirve para comunicar estados o acciones de los dispositivos. Una vez conectado el dispositivo a la red WiFi (secci\u00f3n anterior), el siguiente paso consiste en enviar los mensajes de &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/mqtt-esquema-del-mensaje-de-estado-o-accion\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"3.1 MQTT - Esquema del mensaje de estado o acci\u00f3n\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1464959],"tags":[1457944],"class_list":["post-2579","post","type-post","status-publish","format-standard","hentry","category-3-iot-mqtt-mensajes-de-estado-accion","tag-iot-wifi"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=2579"}],"version-history":[{"count":37,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2579\/revisions"}],"predecessor-version":[{"id":4161,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2579\/revisions\/4161"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}