{"id":2842,"date":"2020-08-06T11:20:48","date_gmt":"2020-08-06T16:20:48","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=2842"},"modified":"2025-09-11T17:05:38","modified_gmt":"2025-09-11T22:05:38","slug":"chirpstack-anadir-un-dispositivo","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/chirpstack-anadir-un-dispositivo\/","title":{"rendered":"2.5 ChirpStack v3 - A\u00f1adir un dispositivo"},"content":{"rendered":"<p>Para a\u00f1adir un dispositivo en el Broker ChirpStack, el ejemplo b\u00e1sico env\u00eda una trama solo para leer los datos de niveles de se\u00f1al RSSI y SNR.<\/p>\n<h2>1.\u00a0 Application Service Profile<\/h2>\n<p>El perfil de servicio en la aplicaci\u00f3n se asigna un nombre acorde a la aplicaci\u00f3n que la usar\u00e1.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2843 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01.png\" alt=\"Chirpstack service profile create\" width=\"1293\" height=\"490\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01.png 1293w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01-300x114.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01-768x291.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile01-1024x388.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>se ingresan los par\u00e1metros requeridos, por simplicidad solo se a\u00f1ade un nombre. Ejemplo:<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2844 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile02.png\" alt=\"Chirpstack service profile add gateway meta-data\" width=\"968\" height=\"585\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile02.png 968w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile02-300x181.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationServiceProfile02-768x464.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<h2>2. Device Profile<\/h2>\n<p>El perfil de dispositivos describe la forma de conexi\u00f3n y autenticaci\u00f3n de un grupo de dispositivos.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2845 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01.png\" alt=\"Chirpstack device profile create\" width=\"1298\" height=\"422\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01.png 1298w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01-300x98.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01-768x250.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile01-1024x333.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Por ejemplo, si los dispositivos autentican por medio de OTTA\/ABP, si se incluir\u00e1n dispositivos clase B, clase C y las instrucciones para codificar o decodificar los datos del dispositivo (CODEC).<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2846 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile02.png\" alt=\"Chirpstack device-profiles general\" width=\"965\" height=\"608\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile02.png 965w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile02-300x189.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile02-768x484.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>para conexi\u00f3n OTAA\/ABP<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2847 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile03.png\" alt=\"Chirpstack device-profiles OTTAA\" width=\"980\" height=\"290\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile03.png 980w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile03-300x89.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile03-768x227.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>soporte de dispositivos clase B<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2848 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile04.png\" alt=\"Chirpstack device-profiles Class-B\" width=\"979\" height=\"276\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile04.png 979w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile04-300x85.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile04-768x217.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>soporte de dispositivos clase C<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2849 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile05.png\" alt=\"Chirpstack device-profile class-C\" width=\"984\" height=\"430\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile05.png 984w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile05-300x131.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_ApplicationDeviceProfile05-768x336.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Para el tema de CODEC se recomienda revisar la secci\u00f3n de <a href=\"http:\/\/blog.espol.edu.ec\/girni\/lorawan-mensajes-y-datos-entre-componentes\/\">LoRaWAN \u2013 Mensajes y datos entre componentes<\/a><\/p>\n<h2>3. Applications<\/h2>\n<p>La aplicaci\u00f3n agrupa dispositivos que realizan funciones semejantes, mediante el perfil del dispositivo, donde se encuentra tambi\u00e9n el CODEC de los datos.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2850 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01.png\" alt=\"Chirpstack applications create\" width=\"1298\" height=\"496\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01.png 1298w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01-300x115.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01-768x293.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application01-1024x391.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Se asigna un nombre y una descripci\u00f3n de lo que va a realizar con los dispositivos:<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2852 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application02.png\" alt=\"Chirpstack application create\" width=\"981\" height=\"432\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application02.png 981w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application02-300x132.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application02-768x338.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>para finalmente registrar la aplicaci\u00f3n<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2851 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application03.png\" alt=\"Chirpstack applications service profile\" width=\"984\" height=\"275\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application03.png 984w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application03-300x84.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application03-768x215.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<h2>4. A\u00f1adir dispositivos a la aplicaci\u00f3n<\/h2>\n<p>Hay que crear cada dispositivo con identificadores \u00fanicos y autenticar en la red.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2853 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application04.png\" alt=\"Chirpstack leerRssiSNR\" width=\"985\" height=\"432\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application04.png 985w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application04-300x132.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application04-768x337.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>los primeros datos corresponden a nombre y nombre y descripci\u00f3n.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2854 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application05.png\" alt=\"Chirpstack applications device general\" width=\"965\" height=\"583\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application05.png 965w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application05-300x181.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application05-768x464.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>El identificador \u00fanico de dispositivo: Device EUI es primordial para la conexi\u00f3n por OTAA. El Device EUI se puede generar con el bot\u00f3n mostrado en la pantalla y se usa en la programaci\u00f3n del dispositivo.<\/p>\n<p>El\u00a0 perfil del dispositivo se selecciona desde la pesta\u00f1a y se despliegan las opciones.<\/p>\n<p><a href=\"https:\/\/heltec-automation-docs.readthedocs.io\/en\/latest\/esp32\/lorawan\/config_parameter.html\">https:\/\/heltec-automation-docs.readthedocs.io\/en\/latest\/esp32\/lorawan\/config_parameter.html<\/a><\/p>\n<p><a href=\"https:\/\/www.thethingsnetwork.org\/docs\/lorawan\/addressing.html\">https:\/\/www.thethingsnetwork.org\/docs\/lorawan\/addressing.html<\/a><\/p>\n<p>los par\u00e1metros para OTAA se pueden visualizar, generar en la pesta\u00f1a correspondiente. Hay un bot\u00f3n para visualizar el que se est\u00e9 usando, o en otro caso se puede generar para usar en la programaci\u00f3n del dispositivo.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2855 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application06.png\" alt=\"Chirpstack applications device KEYS OTAA\" width=\"982\" height=\"469\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application06.png 982w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application06-300x143.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application06-768x367.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Si el dispositivo no ha sido conectado al menos una vez, la pesta\u00f1a de activaci\u00f3n aparece vac\u00eda. Para obtener los datos de activaci\u00f3n es necesario realizar al menos un intento de conexi\u00f3n, con lo que la ventana llena los datos para completar la programaci\u00f3n del dispositivo.<\/p>\n<p>Para observar los datos de activaci\u00f3n debe usar el bot\u00f3n de visualizaci\u00f3n en la parte derecha de la ventana.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application07.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2856 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application07.png\" alt=\"Chirpstack applications activation\" width=\"980\" height=\"607\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application07.png 980w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application07-300x186.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application07-768x476.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Los intentos de conexi\u00f3n se pueden visualizar en la pesta\u00f1a de LoRaWAN Frames<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2857 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application08.png\" alt=\"Chirpstack applications devices lorawan frames\" width=\"1002\" height=\"333\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application08.png 1002w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application08-300x100.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application08-768x255.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>mientras que los datos recibidos se observan en la pesta\u00f1a de Device Data<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application09.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2858 size-full\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application09.png\" alt=\"Chirpstack applications device data\" width=\"970\" height=\"375\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application09.png 970w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application09-300x116.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/12\/CS_Application09-768x297.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Hay que considerar que la primera vez que se conecta el dispositivo, la autenticaci\u00f3n puede llevar algunos intentos, por lo que hay que esperar para que se comiencen a recibir los datos, a pesar que las tramas LoRaWAN si se registran en el programa.<\/p>\n<h2>5. Instrucciones Arduino IDE ejemplo b\u00e1sico<\/h2>\n<p>Los datos para la configuraci\u00f3n del dispositivo se obtienen en el proceso descrito anteriormente, por lo que es necesario actualizar los datos.<\/p>\n<p>En el caso de dispositivos HELTEC es necesario obtener los datos de <strong><em>licencia<\/em><\/strong> que se encuentran al inicio de las instrucciones. La licencia de cada dispositivo se puede revisar en: <a href=\"https:\/\/resource.heltec.cn\/search\/\">https:\/\/resource.heltec.cn\/search\/<\/a><\/p>\n<pre><span style=\"color: #95a5a6\">\/*<\/span>\r\n<span style=\"color: #95a5a6\"> * HelTec Automation(TM) LoRaWAN 1.0.2 OTAA example use OTAA, CLASS A<\/span>\r\n<span style=\"color: #95a5a6\"> * Solo ESP32+LoRa series boards con licencia <\/span><u><span style=\"color: #95a5a6\">http:\/\/www.heltec.cn\/search\/<\/span><\/u><span style=\"color: #95a5a6\">);<\/span>\r\n<span style=\"color: #95a5a6\"> *<\/span><u><span style=\"color: #95a5a6\">https:\/\/github.com\/HelTecAutomation\/ESP32_LoRaWAN<\/span><\/u>\r\n*\/\r\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #434f54\">&lt;<\/span><span style=\"color: #000000\">ESP32_LoRaWAN<\/span>.<span style=\"color: #000000\">h<\/span><span style=\"color: #434f54\">&gt;<\/span>\r\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #005c5f\">\"Arduino.h\"<\/span>\r\n\r\n<span style=\"color: #95a5a6\">\/*licencia Heltec ESP32 LoRaWan <\/span><u><span style=\"color: #95a5a6\">http:\/\/resource.heltec.cn\/search<\/span><\/u>  \r\n<span style=\"color: #00979c\">uint32_t<\/span>  license[<span style=\"color: #000000\">4<\/span>] = {<span style=\"color: #000000\">0xBE21335B<\/span>, <span style=\"color: #000000\">0xAEC3C5CE<\/span>, <span style=\"color: #000000\">0xCC0A1CF4<\/span>, <span style=\"color: #000000\">0xB836F981<\/span>};\r\n<span style=\"color: #95a5a6\">\/* OTAA parametros <\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> DevEui[] = { <span style=\"color: #000000\">0x01<\/span>, <span style=\"color: #000000\">0x20<\/span>, <span style=\"color: #000000\">0x08<\/span>, <span style=\"color: #000000\">0x93<\/span>, <span style=\"color: #000000\">0xdf<\/span>, <span style=\"color: #000000\">0x80<\/span>, <span style=\"color: #000000\">0x37<\/span>, <span style=\"color: #000000\">0x74<\/span> };\r\n<span style=\"color: #00979c\">uint8_t<\/span> AppEui[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };\r\n<span style=\"color: #00979c\">uint8_t<\/span> AppKey[] = { <span style=\"color: #000000\">0x05<\/span>, <span style=\"color: #000000\">0x8e<\/span>, <span style=\"color: #000000\">0xeb<\/span>, <span style=\"color: #000000\">0xff<\/span>, <span style=\"color: #000000\">0x24<\/span>, <span style=\"color: #000000\">0xf1<\/span>, <span style=\"color: #000000\">0x01<\/span>, <span style=\"color: #000000\">0x84<\/span>, <span style=\"color: #000000\">0xd0<\/span>, <span style=\"color: #000000\">0x07<\/span>, <span style=\"color: #000000\">0xbe<\/span>, <span style=\"color: #000000\">0xd4<\/span>, <span style=\"color: #000000\">0x65<\/span>, <span style=\"color: #000000\">0xe7<\/span>, <span style=\"color: #000000\">0x6b<\/span>, <span style=\"color: #000000\">0xb5<\/span> };\r\n\r\n<span style=\"color: #95a5a6\">\/* ABP parametros <\/span>\r\n<span style=\"color: #00979c\">uint32_t<\/span> DevAddr =  ( <span style=\"color: #00979c\">uint32_t<\/span> )<span style=\"color: #000000\">0x0174b1fd<\/span>;\r\n<span style=\"color: #00979c\">uint8_t<\/span> NwkSKey[] = { <span style=\"color: #000000\">0xc1<\/span>, <span style=\"color: #000000\">0x45<\/span>, <span style=\"color: #000000\">0x31<\/span>, <span style=\"color: #000000\">0x28<\/span>, <span style=\"color: #000000\">0x5f<\/span>, <span style=\"color: #000000\">0xb2<\/span>, <span style=\"color: #000000\">0x56<\/span>, <span style=\"color: #000000\">0x3b<\/span>, <span style=\"color: #000000\">0x9d<\/span>, <span style=\"color: #000000\">0x5f<\/span>, <span style=\"color: #000000\">0x27<\/span>, <span style=\"color: #000000\">0x15<\/span>, <span style=\"color: #000000\">0xed<\/span>, <span style=\"color: #000000\">0x3a<\/span>, <span style=\"color: #000000\">0x0e<\/span>, <span style=\"color: #000000\">0xbc<\/span>}; \r\n<span style=\"color: #00979c\">uint8_t<\/span> AppSKey[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};\r\n\r\n<span style=\"color: #434f54\">\/\/LoraWan channelsmask, default channels 0-7\/<\/span>\r\n<span style=\"color: #00979c\">uint16_t<\/span> <span style=\"color: #000000\">userChannelsMask<\/span>[<span style=\"color: #000000\">6<\/span>]={ <span style=\"color: #000000\">0x00FF<\/span>,<span style=\"color: #000000\">0x0000<\/span>,<span style=\"color: #000000\">0x0000<\/span>,<span style=\"color: #000000\">0x0000<\/span>,<span style=\"color: #000000\">0x0000<\/span>,<span style=\"color: #000000\">0x0000<\/span> };\r\n\r\nDeviceClass_t  loraWanClass = <span style=\"color: #000000\">CLASS_A<\/span>;  <span style=\"color: #95a5a6\">\/*Soporte de A and C <\/span>\r\n<span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">appTxDutyCycle<\/span> = <span style=\"color: #000000\">15000<\/span>;        <span style=\"color: #95a5a6\">\/*15000; en [ms] <\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">overTheAirActivation<\/span> = <span style=\"color: #00979c\">true<\/span>;       <span style=\"color: #95a5a6\">\/*OTAA or ABP <\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">loraWanAdr<\/span>    = <span style=\"color: #00979c\">true<\/span>;              <span style=\"color: #95a5a6\">\/*ADR enable <\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">isTxConfirmed<\/span> = <span style=\"color: #00979c\">true<\/span>;              <span style=\"color: #95a5a6\">\/*confirmed or unconfirmed messages  <\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">appPort<\/span> = 2;                    <span style=\"color: #95a5a6\">\/* Application port  <\/span>\r\n\r\n<span style=\"color: #95a5a6\">\/* reintentos de transmisi\u00f3n, en caso de no recibir ack  <\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">confirmedNbTrials<\/span> = <span style=\"color: #000000\">8<\/span>;\r\n\r\n<span style=\"color: #95a5a6\">\/* Seleccionado de Arduino IDE tools  <\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> debugLevel = LoRaWAN_DEBUG_LEVEL; \r\nLoRaMacRegion_t loraWanRegion = ACTIVE_REGION;\r\n\r\n<span style=\"color: #434f54\">\/\/ variables de sensor\/actuador<\/span>\r\n<span style=\"color: #00979c\">byte<\/span>    contador1 = 0;\r\n<span style=\"color: #00979c\">uint8_t<\/span> contador2 = 0;  \r\n<span style=\"color: #00979c\">int<\/span>    unalectura = 221;\r\n\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">setup<\/span>(){\r\n  <b><span style=\"color: #d35400\">Serial<\/span><\/b>.<span style=\"color: #d35400\">begin<\/span>(<span style=\"color: #000000\">115200<\/span>);\r\n  <span style=\"color: #5e6d03\">while<\/span> (<span style=\"color: #434f54\">!<\/span><b><span style=\"color: #d35400\">Serial<\/span><\/b>);\r\n  <b><span style=\"color: #d35400\">SPI<\/span><\/b>.<span style=\"color: #d35400\">begin<\/span>(<span style=\"color: #000000\">SCK<\/span>,<span style=\"color: #000000\">MISO<\/span>,<span style=\"color: #000000\">MOSI<\/span>,<span style=\"color: #000000\">SS<\/span>);\r\n  Mcu.init(SS,RST_LoRa,<span style=\"color: #000000\">DIO0<\/span>,<span style=\"color: #000000\">DIO1<\/span>,license);\r\n  deviceState = DEVICE_STATE_INIT;\r\n}\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">loop<\/span>(){\r\n  <span style=\"color: #5e6d03\">switch<\/span>( deviceState )  {\r\n    <span style=\"color: #5e6d03\">case<\/span> DEVICE_STATE_INIT<span style=\"color: #434f54\">:<\/span>    {\r\n      LoRaWAN.init(loraWanClass,<span style=\"color: #000000\">loraWanRegion<\/span>);\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n    }\r\n    <span style=\"color: #5e6d03\">case<\/span> DEVICE_STATE_JOIN<span style=\"color: #434f54\">:<\/span>    {\r\n      LoRaWAN.join();\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n    }\r\n    <span style=\"color: #5e6d03\">case<\/span> DEVICE_STATE_SEND<span style=\"color: #434f54\">:<\/span>    {\r\n      prepareTxFrame( appPort );\r\n      LoRaWAN.<span style=\"color: #d35400\">send<\/span>(<span style=\"color: #000000\">loraWanClass<\/span>);\r\n      deviceState = DEVICE_STATE_CYCLE;\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n      \r\n    }\r\n    <span style=\"color: #5e6d03\">case<\/span> DEVICE_STATE_CYCLE<span style=\"color: #434f54\">:<\/span>    {\r\n      <span style=\"color: #434f54\">\/\/ Schedule next packet transmission<\/span>\r\n      txDutyCycleTime = appTxDutyCycle <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">randr<\/span>( <span style=\"color: #434f54\">-<\/span><span style=\"color: #000000\">APP_TX_DUTYCYCLE_RND<\/span>,\r\n                                                APP_TX_DUTYCYCLE_RND );\r\n      LoRaWAN.cycle(txDutyCycleTime);\r\n      deviceState = DEVICE_STATE_SLEEP;\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n    }\r\n    <span style=\"color: #5e6d03\">case<\/span> DEVICE_STATE_SLEEP<span style=\"color: #434f54\">:<\/span>    {\r\n      LoRaWAN.<span style=\"color: #d35400\">sleep<\/span>(<span style=\"color: #000000\">loraWanClass<\/span>,<span style=\"color: #000000\">debugLevel<\/span>);\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n    }\r\n    <span style=\"color: #5e6d03\">default<\/span><span style=\"color: #434f54\">:<\/span>    {\r\n      deviceState = DEVICE_STATE_INIT;\r\n      <span style=\"color: #5e6d03\">break<\/span>;\r\n    }\r\n  }\r\n}\r\n\r\n<span style=\"color: #00979c\">static<\/span> <span style=\"color: #00979c\">void<\/span> prepareTxFrame( <span style=\"color: #00979c\">uint8_t<\/span> port ){\r\n    contador1 = contador1 + 1;\r\n    contador2 = contador2 - 1;\r\n\r\n    \/\/orden de trama\r\n    appDataSize = 4         \/\/AppDataSize max value is 64\r\n    appData[0] = contador1; \/\/0x01;\r\n    appData[1] = contador2;\r\n    appData[2] = <span style=\"color: #d35400\">highByte<\/span>(unalectura);\r\n    appData[3] = <span style=\"color: #d35400\">lowByte<\/span>(unalectura);\r\n\r\n    \/\/ mostrar en puerto USB\r\n    <b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span>(contador1);\r\n    <b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span>(contador2);\r\n    <b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span>(unalectura);\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Para a\u00f1adir un dispositivo en el Broker ChirpStack, el ejemplo b\u00e1sico env\u00eda una trama solo para leer los datos de niveles de se\u00f1al RSSI y SNR. 1.\u00a0 Application Service Profile El perfil de servicio en la aplicaci\u00f3n se asigna un nombre acorde a la aplicaci\u00f3n que la usar\u00e1. se ingresan los par\u00e1metros requeridos, por simplicidad &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/chirpstack-anadir-un-dispositivo\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"2.5 ChirpStack v3 - A\u00f1adir un dispositivo\"<\/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":[1481159],"tags":[602214,1457736],"class_list":["post-2842","post","type-post","status-publish","format-standard","hentry","category-chirpstack-v3","tag-iot","tag-lorawan"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2842","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=2842"}],"version-history":[{"count":10,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2842\/revisions"}],"predecessor-version":[{"id":4209,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2842\/revisions\/4209"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}