{"id":3465,"date":"2021-04-15T11:04:41","date_gmt":"2021-04-15T16:04:41","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=3465"},"modified":"2026-08-04T22:37:21","modified_gmt":"2026-08-05T03:37:21","slug":"lorawan-interruptor-temporizado-gateway-broker","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/lorawan-interruptor-temporizado-gateway-broker\/","title":{"rendered":"LoRaWan - Interruptor temporizado: Gateway y Broker"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Gateway ChirpStack<\/h2>\n\n\n\n<p>La funci\u00f3n Encode se encarga de preparar los valores para ser enviados por la red LoRaWan. El ejemplo muestra el uso de las variables estado y duraci\u00f3n:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: arduino; title: ; notranslate\" title=\"\">\n\/\/ Encode encodes the given object into an array of bytes.\n\/\/  - fPort contains the LoRaWAN fPort number\n\/\/  - obj is an object, e.g. {&quot;temperature&quot;: 22.5}\n\/\/  - variables contains the device variables e.g. {&quot;calibration&quot;: &quot;3.5&quot;} (both the key \/ value are of type string)\n\/\/ The function must return an array of bytes, e.g. &#x5B;225, 230, 255, 0]\nfunction Encode(fPort, obj, variables) {\n  var estado = obj&#x5B;&quot;estado&quot;];\n  var duracion = obj&#x5B;&quot;duracion&quot;];\n  var mensaje = &#x5B;50,20];\n  if (estado == &quot;ON&quot;) {\n  \tmensaje = &#x5B;49,duracion];\n  }\n  if (estado == &quot;OFF&quot;) {\n  \tmensaje = &#x5B;50,20];\n  }\n  return mensaje;\n}\n<\/pre><\/div>\n\n\n<p>Mensaje MQTT<\/p>\n\n\n\n<p>El mensaje Mqtt que activa la instrucci\u00f3n tiene un formato que requiere para el tema o t\u00f3pico: identificador de aplicaci\u00f3n del ChirpStack, deviceEUI,<\/p>\n\n\n\n<p>el mensaje contiene si se confirma la trama, el puerto de la aplicaci\u00f3n y un diccionario \"object\" con las variables&nbsp; sus valores correspondientes en texto o num\u00e9rico.<\/p>\n\n\n\n<p>El ejemplo de la instruccion para el dispositivo es:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>mosquitto_pub -h \"localhost\" -u \"usuarioprueba\" -P \"usuarioclave\" -t \"application\/3\/device\/bc55318912bfd090\/command\/down\" -m '{\"confirmed\":true,\"fPort\":3,\"object\":{\"estado\":\"ON\",\"duracion\":46}}'<\/code><\/pre>\n\n\n\n<p>Para observar el estado en mqtt para probar el envio del mensase se&nbsp; usa la instrucci\u00f3n de suscripci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>mosquitto_sub -h \"localhost\" -u \"usuarioprueba\" -P \"usuarioclave\" -t \"application\/3\/device\/bc55318912bfd090\/command\/down\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Home Assitant - configuraci\u00f3n<\/h2>\n\n\n\n<p>Se realiza combinando una variable num\u00e9rica (input_number) para la duraci\u00f3n en segundos, y se env\u00eda como una instrucci\u00f3n de control usando una plantilla de foco dim (light).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"348\" height=\"262\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02.png\" alt=\"\" class=\"wp-image-3473\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02.png 348w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02-300x226.png 300w\" sizes=\"auto, (max-width: 348px) 100vw, 348px\" \/><\/a><\/figure>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>light:\n  - platform: mqtt\n    schema: template\n    name: 'RegarPlanta'\n    state_topic: \"application\/3\/device\/bc55318912bfd090\/estado\"\n    command_topic: \"application\/3\/device\/bc55318912bfd090\/command\/down\"\n    command_on_template:  '{\"confirmed\":true,\"fPort\":3,\"object\":{\"estado\":\"ON\",\"duracion\":{{states(\"input_number.regar_seg\") | int}}}}'\n    command_off_template: '{\"confirmed\":true,\"fPort\":3,\"object\":{\"estado\":\"OFF\",\"duracion\":0}}'\n\ninput_number:\n  regar_seg:\n    name: regar_segundos\n    initial: 10\n    min: 0\n    max: 254\n    step: 1\n    mode: box\n    icon: mdi:timer-outline\n    unit_of_measurement: \"s\"\n<\/code><\/pre>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Send JSON command with MQTT?, <a href=\"https:\/\/community.home-assistant.io\/t\/send-json-command-with-mqtt\/37663\">https:\/\/community.home-assistant.io\/t\/send-json-command-with-mqtt\/37663<\/a><\/p>\n\n\n\n<p>Input Number, <a href=\"https:\/\/www.home-assistant.io\/integrations\/input_number\">https:\/\/www.home-assistant.io\/integrations\/input_number<\/a><\/p>\n\n\n\n<p class=\"title indent\">MQTT Light, <a href=\"https:\/\/www.home-assistant.io\/integrations\/light.mqtt\/\">https:\/\/www.home-assistant.io\/integrations\/light.mqtt\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gateway ChirpStack La funci\u00f3n Encode se encarga de preparar los valores para ser enviados por la red LoRaWan. El ejemplo muestra el uso de las variables estado y duraci\u00f3n: Mensaje MQTT El mensaje Mqtt que activa la instrucci\u00f3n tiene un formato que requiere para el tema o t\u00f3pico: identificador de aplicaci\u00f3n del ChirpStack, deviceEUI, el [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1465791],"tags":[],"class_list":["post-3465","post","type-post","status-publish","format-standard","hentry","category-lorawan-interruptor-temporizado"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3465","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=3465"}],"version-history":[{"count":12,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3465\/revisions"}],"predecessor-version":[{"id":4905,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3465\/revisions\/4905"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=3465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=3465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=3465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}