{"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":"2023-06-23T18:05:32","modified_gmt":"2023-06-23T23:05:32","slug":"lorawan-interruptor-temporizado-gateway-y-broker","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/lorawan-interruptor-temporizado-gateway-y-broker\/","title":{"rendered":"LoRaWan \u2013 Interruptor temporizado. Gateway y Broker"},"content":{"rendered":"<h2>Gateway ChirpStack<\/h2>\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<pre>\/\/ Encode encodes the given object into an array of bytes.\r\n\/\/  - fPort contains the LoRaWAN fPort number\r\n\/\/  - obj is an object, e.g. {\"temperature\": 22.5}\r\n\/\/  - variables contains the device variables e.g. {\"calibration\": \"3.5\"} (both the key \/ value are of type string)\r\n\/\/ The function must return an array of bytes, e.g. [225, 230, 255, 0]\r\nfunction Encode(fPort, obj, variables) {\r\n  var estado = obj[\"estado\"];\r\n  var duracion = obj[\"duracion\"];\r\n  var mensaje = [50,20];\r\n  if (estado == \"ON\") {\r\n  \tmensaje = [49,duracion];\r\n  }\r\n  if (estado == \"OFF\") {\r\n  \tmensaje = [50,20];\r\n  }\r\n  return mensaje;\r\n}\r\n<\/pre>\n<p>Mensaje MQTT<\/p>\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<p>el mensaje contiene si se confirma la trama, el puerto de la aplicaci\u00f3n y un diccionario \"object\" con las variables\u00a0 sus valores correspondientes en texto o num\u00e9rico.<\/p>\n<p>El ejemplo de la instruccion para el dispositivo es:<\/p>\n<pre>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}}'<\/pre>\n<p>Para observar el estado en mqtt para probar el envio del mensase se\u00a0 usa la instrucci\u00f3n de suscripci\u00f3n:<\/p>\n<pre>mosquitto_sub -h \"localhost\" -u \"usuarioprueba\" -P \"usuarioclave\" -t \"application\/3\/device\/bc55318912bfd090\/command\/down\"<\/pre>\n<h2>Home Assitant - configuraci\u00f3n<\/h2>\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<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3473 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/04\/regarPlanta02.png\" alt=\"\" width=\"348\" height=\"262\" 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><\/p>\n<pre>light:\r\n  - platform: mqtt\r\n    schema: template\r\n    name: 'RegarPlanta'\r\n    state_topic: \"application\/3\/device\/bc55318912bfd090\/estado\"\r\n    command_topic: \"application\/3\/device\/bc55318912bfd090\/command\/down\"\r\n    command_on_template:  '{\"confirmed\":true,\"fPort\":3,\"object\":{\"estado\":\"ON\",\"duracion\":{{states(\"input_number.regar_seg\") | int}}}}'\r\n    command_off_template: '{\"confirmed\":true,\"fPort\":3,\"object\":{\"estado\":\"OFF\",\"duracion\":0}}'\r\n\r\ninput_number:\r\n  regar_seg:\r\n    name: regar_segundos\r\n    initial: 10\r\n    min: 0\r\n    max: 254\r\n    step: 1\r\n    mode: box\r\n    icon: mdi:timer-outline\r\n    unit_of_measurement: \"s\"\r\n<\/pre>\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<p>Input Number, <a href=\"https:\/\/www.home-assistant.io\/integrations\/input_number\">https:\/\/www.home-assistant.io\/integrations\/input_number<\/a><\/p>\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: \/\/ Encode encodes the given object into an array of bytes. \/\/ - fPort contains the LoRaWAN fPort number \/\/ - obj is an object, e.g. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/lorawan-interruptor-temporizado-gateway-y-broker\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"LoRaWan \u2013 Interruptor temporizado. Gateway y Broker\"<\/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":[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":9,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3465\/revisions"}],"predecessor-version":[{"id":4075,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3465\/revisions\/4075"}],"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}]}}