{"id":4060,"date":"2022-12-08T12:09:12","date_gmt":"2022-12-08T17:09:12","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=4060"},"modified":"2022-12-08T12:09:12","modified_gmt":"2022-12-08T17:09:12","slug":"5-lorawan-heltec-cubecell-rssi-practicalab-ino","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/5-lorawan-heltec-cubecell-rssi-practicalab-ino\/","title":{"rendered":"5. LoRaWan - HELTEC CubeCell Rssi PracticaLab.ino"},"content":{"rendered":"<p>Ejercicio de conexi\u00f3n a LoRaWan con ChirpStack y HomeAssistant<\/p>\n<h2>Bloque principal<\/h2>\n<pre><span style=\"color: #434f54\">\/\/ Lectura de Rssi Snr, datarate Up\/Downlink<\/span>\r\n<span style=\"color: #434f54\">\/\/ Datos Downlink de la trama de confirmaci\u00f3n anterior<\/span>\r\n<span style=\"color: #434f54\">\/\/ <\/span><u><span style=\"color: #434f54\">http:\/\/blog.espol.edu.ec\/girni\/lorawan-enlaces-up-down-archivo-ino\/<\/span><\/u>\r\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #005c5f\">\"LoRaWan_APP.h\"<\/span>\r\n<span style=\"color: #5e6d03\">#include<\/span> <span style=\"color: #005c5f\">\"Arduino.h\"<\/span>\r\n\r\n<span style=\"color: #95a5a6\">\/* set LoraWan_RGB to Active,the RGB active in loraWan<\/span>\r\n<span style=\"color: #95a5a6\"> * red \u00a0\u00a0|sending; \u00a0\u00a0purple | joined done;<\/span>\r\n<span style=\"color: #95a5a6\"> * blue \u00a0|RxWindow1; yellow | means RxWindow2;<\/span>\r\n<span style=\"color: #95a5a6\"> * green | received done;<\/span>\r\n<span style=\"color: #95a5a6\"> *\/<\/span>\r\n<span style=\"color: #95a5a6\">\/* Conexi\u00f3n LoRa: OTAA parametros*\/<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">devEui<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0xa5<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x3e<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xc6<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x15<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xae<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xde<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x3f<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">appEui<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x00<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">appKey<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0x88<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xbe<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x25<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xca<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x2c<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xcf<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x31<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x85<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">0x51<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x2d<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xee<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xe2<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x80<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x31<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x8e<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x01<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #95a5a6\">\/* ABP parametros*\/<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">nwkSKey<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0x15<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xb1<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xd0<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xef<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xa4<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x63<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xdf<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xbe<\/span><span style=\"color: #434f54\">,<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">0x3d<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x11<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x18<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x1e<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x1e<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xc7<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xda<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x85<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">appSKey<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0x47<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xdc<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xac<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x5f<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xc2<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x32<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x24<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x31<\/span><span style=\"color: #434f54\">,<\/span> \r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #000000\">0xdf<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xf1<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xff<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xf9<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x46<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0xe5<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x2e<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">0x17<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">devAddr<\/span> <span style=\"color: #434f54\">=<\/span> \u00a0<span style=\"color: #000000\">(<\/span> <span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">0x007bc4200<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #95a5a6\">\/*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\">[<\/span><span style=\"color: #000000\">6<\/span><span style=\"color: #000000\">]<\/span><span style=\"color: #434f54\">=<\/span><span style=\"color: #000000\">{<\/span> <span style=\"color: #000000\">0x00FF<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x0000<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x0000<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x0000<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x0000<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">0x0000<\/span> <span style=\"color: #000000\">}<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<span style=\"color: #95a5a6\">\/*Select in arduino IDE tools*\/<\/span>\r\n<span style=\"color: #000000\">LoRaMacRegion_t<\/span> <span style=\"color: #000000\">loraWanRegion<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">ACTIVE_REGION<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #000000\">DeviceClass_t<\/span> \u00a0<span style=\"color: #000000\">loraWanClass<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">LORAWAN_CLASS<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">overTheAirActivation<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">LORAWAN_NETMODE<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">loraWanAdr<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">LORAWAN_ADR<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">keepNet<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">LORAWAN_NET_RESERVE<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">bool<\/span> <span style=\"color: #000000\">isTxConfirmed<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">LORAWAN_UPLINKMODE<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">duermemin<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/15<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">duermeseg<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">30<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/0<\/span>\r\n\r\n<span style=\"color: #00979c\">uint32_t<\/span> <span style=\"color: #000000\">appTxDutyCycle<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">duermemin<\/span><span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">60<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">duermeseg<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">1000<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/ min*seg*ms<\/span>\r\n\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">appPort<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">4<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #95a5a6\">\/* Application port *\/<\/span>\r\n<span style=\"color: #95a5a6\">\/* trials to transmit frame, if didn't receive ack.<\/span>\r\n<span style=\"color: #95a5a6\"> * The MAC performs a datarate adaptation,<\/span>\r\n<span style=\"color: #95a5a6\"> * Tx nb|Data Rate<\/span>\r\n<span style=\"color: #95a5a6\"> * -----|----------<\/span>\r\n<span style=\"color: #95a5a6\"> * 1 \u00a0\u00a0\u00a0|DR \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0* 5 \u00a0\u00a0\u00a0| max(DR-2,0)<\/span>\r\n<span style=\"color: #95a5a6\"> * 2 \u00a0\u00a0\u00a0|DR \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0* 6 \u00a0\u00a0\u00a0| max(DR-2,0)<\/span>\r\n<span style=\"color: #95a5a6\"> * 3 \u00a0\u00a0\u00a0|max(DR-1,0) \u00a0* 7 \u00a0\u00a0\u00a0| max(DR-3,0)<\/span>\r\n<span style=\"color: #95a5a6\"> * 4 \u00a0\u00a0\u00a0|max(DR-1,0) \u00a0* 8 \u00a0\u00a0\u00a0| max(DR-3,0)<\/span>\r\n<span style=\"color: #95a5a6\">*\/<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">confirmedNbTrials<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">4<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<span style=\"color: #434f54\">\/\/ Ack parametros de recepci\u00f3n<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">confirmaRssi<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">confirmaSnr<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">confirmaDatarate<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">itera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0x00<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/0x00, 0x01,\"OFF\",\"ON\"<\/span>\r\n\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">setup<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n\t<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">begin<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">115200<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \r\n<span style=\"color: #5e6d03\">#if<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">AT_SUPPORT<\/span><span style=\"color: #000000\">)<\/span>\r\n\t<span style=\"color: #000000\">enableAt<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #5e6d03\">#endif<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ OLED display status<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/LoRaWAN.displayMcuInit();<\/span>\r\n \u00a0\r\n\t<span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">DEVICE_STATE_INIT<\/span><span style=\"color: #000000\">;<\/span>\r\n\t<span style=\"color: #434f54\">\/\/LoRaWAN.ifskipjoin(); \/\/if joinned,skip<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #5e6d03\">loop<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\".\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">itera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">itera<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #5e6d03\">if<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">itera<\/span><span style=\"color: #434f54\">&gt;<\/span><span style=\"color: #000000\">6<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0<span style=\"color: #000000\">itera<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\u00a0\u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\" \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">}<\/span>\r\n\t<span style=\"color: #5e6d03\">switch<\/span><span style=\"color: #000000\">(<\/span> <span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n\t\t<span style=\"color: #5e6d03\">case<\/span> <span style=\"color: #000000\">DEVICE_STATE_INIT<\/span><span style=\"color: #434f54\">:<\/span> <span style=\"color: #000000\">{<\/span>\r\n<span style=\"color: #5e6d03\">#if<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">LORAWAN_DEVEUI_AUTO<\/span><span style=\"color: #000000\">)<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">generateDeveuiByChipID<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #5e6d03\">#endif<\/span>\r\n<span style=\"color: #5e6d03\">#if<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">AT_SUPPORT<\/span><span style=\"color: #000000\">)<\/span>\r\n\t\t\t<span style=\"color: #000000\">getDevParam<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #5e6d03\">#endif<\/span>\r\n\t\t\t<span style=\"color: #000000\">printDevParam<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">loraWanClass<\/span><span style=\"color: #434f54\">,<\/span><span style=\"color: #000000\">loraWanRegion<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">DEVICE_STATE_JOIN<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t\t<span style=\"color: #5e6d03\">case<\/span> <span style=\"color: #000000\">DEVICE_STATE_JOIN<\/span><span style=\"color: #434f54\">:<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/LoRaWAN.displayJoining();<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">join<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t\t<span style=\"color: #5e6d03\">case<\/span> <span style=\"color: #000000\">DEVICE_STATE_SEND<\/span><span style=\"color: #434f54\">:<\/span>\t<span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/LoRaWAN.displaySending();<\/span>\r\n\t\t\t<span style=\"color: #000000\">prepareTxFrame<\/span><span style=\"color: #000000\">(<\/span> <span style=\"color: #000000\">appPort<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">send<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">DEVICE_STATE_CYCLE<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t\t<span style=\"color: #5e6d03\">case<\/span> <span style=\"color: #000000\">DEVICE_STATE_CYCLE<\/span><span style=\"color: #434f54\">:<\/span> <span style=\"color: #000000\">{<\/span>\r\n\t\t\t<span style=\"color: #434f54\">\/\/ Schedule next packet transmission<\/span>\r\n\t\t\t<span style=\"color: #000000\">txDutyCycleTime<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">appTxDutyCycle<\/span> <span style=\"color: #434f54\">+<\/span> <span style=\"color: #000000\">randr<\/span><span style=\"color: #000000\">(<\/span> <span style=\"color: #000000\">0<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #000000\">APP_TX_DUTYCYCLE_RND<\/span> <span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #000000\">cycle<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">txDutyCycleTime<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">DEVICE_STATE_SLEEP<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t\t<span style=\"color: #5e6d03\">case<\/span> <span style=\"color: #000000\">DEVICE_STATE_SLEEP<\/span><span style=\"color: #434f54\">:<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #434f54\">\/\/LoRaWAN.displayAck();<\/span>\r\n\t\t\t<span style=\"color: #000000\">LoRaWAN<\/span><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">sleep<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t\t<span style=\"color: #5e6d03\">default<\/span><span style=\"color: #434f54\">:<\/span> <span style=\"color: #000000\">{<\/span>\r\n\t\t\t<span style=\"color: #000000\">deviceState<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">DEVICE_STATE_INIT<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t\t<span style=\"color: #5e6d03\">break<\/span><span style=\"color: #000000\">;<\/span>\r\n\t\t<span style=\"color: #000000\">}<\/span>\r\n\t<span style=\"color: #000000\">}<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n\r\n<\/pre>\n<h2>LoraWan transmite<\/h2>\n<pre><span style=\"color: #95a5a6\">\/* Prepares the payload of the frame *\/<\/span>\r\n<span style=\"color: #00979c\">static<\/span> <span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">prepareTxFrame<\/span><span style=\"color: #000000\">(<\/span> <span style=\"color: #00979c\">uint8_t<\/span> <span style=\"color: #000000\">port<\/span> <span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ enciende sensor<\/span>\r\n \u00a0<span style=\"color: #d35400\">pinMode<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">Vext<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">OUTPUT<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">Vext<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">LOW<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/Lectura de Sensor<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ apaga sensor<\/span>\r\n \u00a0<span style=\"color: #d35400\">digitalWrite<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">Vext<\/span><span style=\"color: #434f54\">,<\/span> <span style=\"color: #00979c\">HIGH<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0\r\n \u00a0<span style=\"color: #434f54\">\/\/ lectura de bateria \u00a0<\/span>\r\n \u00a0<span style=\"color: #00979c\">uint16_t<\/span> <span style=\"color: #000000\">batteryVoltage<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">getBatteryVoltage<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #00979c\">unsigned<\/span> <span style=\"color: #00979c\">char<\/span> <span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">puc<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ trama<\/span>\r\n \u00a0<span style=\"color: #000000\">appDataSize<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">5<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">appData<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">confirmaRssi<\/span><span style=\"color: #000000\">;<\/span> <span style=\"color: #434f54\">\/\/Ack leido en dispositivo<\/span>\r\n \u00a0<span style=\"color: #000000\">appData<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">1<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">confirmaSnr<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">appData<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">2<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">confirmaDatarate<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">appData<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">3<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">batteryVoltage<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">appData<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">4<\/span><span style=\"color: #000000\">]<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #000000\">(<\/span><span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">batteryVoltage<\/span><span style=\"color: #434f54\">&gt;&gt;<\/span><span style=\"color: #000000\">8<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"%, Bateria = \"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">batteryVoltage<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<h2>LoRWan Recibe<\/h2>\n<pre><span style=\"color: #434f54\">\/\/downlink data handle function example<\/span>\r\n<span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">downLinkDataHandle<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">McpsIndication_t<\/span> <span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #000000\">)<\/span> <span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ revisa parametros<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ Serial.print(\"\\nLleg\u00f3 un mensaje para dispositivo...\");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ Serial.print(\"Rssi: \");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ Serial.println(mcpsIndication-&gt;Rssi);<\/span>\r\n\r\n \u00a0<span style=\"color: #434f54\">\/\/ Serial.printf(\"+REV DATA:%s,RXSIZE %d,PORT %d\\r\\n\",<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mcpsIndication-&gt;RxSlot ? \"RXWIN2\" : \"RXWIN1\",<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mcpsIndication-&gt;BufferSize, mcpsIndication-&gt;Port);<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ Serial.print(\"+REV DATA:\");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ for (uint8_t i = 0; i &lt; mcpsIndication-&gt;BufferSize; i++) {<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ \u00a0\u00a0Serial.printf(\"%02X\", mcpsIndication-&gt;Buffer[i]);<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/ }<\/span>\r\n\r\n \u00a0<span style=\"color: #000000\">estado<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #434f54\">&gt;<\/span><span style=\"color: #000000\">Buffer<\/span><span style=\"color: #000000\">[<\/span><span style=\"color: #000000\">0<\/span><span style=\"color: #000000\">]<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #005c5f\">\"uplink: rssi = -\"<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">estado<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<b><span style=\"color: #d35400\">Serial<\/span><\/b><span style=\"color: #434f54\">.<\/span><span style=\"color: #d35400\">println<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n<span style=\"color: #434f54\">\/\/ \u00a0uint32_t color = mcpsIndication-&gt;Buffer[0] &lt;&lt; 16 | mcpsIndication-&gt;Buffer[1] &lt;&lt; 8 | mcpsIndication-&gt;Buffer[2];<\/span>\r\n<span style=\"color: #434f54\">\/\/#if (LoraWan_RGB == 1)<\/span>\r\n<span style=\"color: #434f54\">\/\/ \u00a0turnOnRGB(color, 5000);<\/span>\r\n<span style=\"color: #434f54\">\/\/ \u00a0turnOffRGB();<\/span>\r\n<span style=\"color: #434f54\">\/\/#endif<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n<\/pre>\n<h2>LoRaWan recibe confirma (Ack)<\/h2>\n<pre><span style=\"color: #00979c\">void<\/span> <span style=\"color: #000000\">downLinkAckHandle<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">McpsIndication_t<\/span> <span style=\"color: #434f54\">*<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">{<\/span>\r\n \u00a0<span style=\"color: #000000\">confirmaRssi<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #d35400\">abs<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #434f54\">&gt;<\/span><span style=\"color: #000000\">Rssi<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">confirmaSnr<\/span> \u00a0<span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #434f54\">&gt;<\/span><span style=\"color: #000000\">Snr<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #000000\">confirmaDatarate<\/span> <span style=\"color: #434f54\">=<\/span> <span style=\"color: #00979c\">uint8_t<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">mcpsIndication<\/span><span style=\"color: #434f54\">-<\/span><span style=\"color: #434f54\">&gt;<\/span><span style=\"color: #000000\">RxDoneDatarate<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">;<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/Serial.println(' ');<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/Serial.print(\" ack received(rssi,snd,datarate): -\");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/Serial.print(confirmaRssi);Serial.print(\" ,\");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/Serial.print(confirmaSnr);Serial.print(\" ,\");<\/span>\r\n \u00a0<span style=\"color: #434f54\">\/\/Serial.println(confirmaDatarate);<\/span>\r\n<span style=\"color: #000000\">}<\/span>\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio de conexi\u00f3n a LoRaWan con ChirpStack y HomeAssistant Bloque principal \/\/ Lectura de Rssi Snr, datarate Up\/Downlink \/\/ Datos Downlink de la trama de confirmaci\u00f3n anterior \/\/ http:\/\/blog.espol.edu.ec\/girni\/lorawan-enlaces-up-down-archivo-ino\/ #include \"LoRaWan_APP.h\" #include \"Arduino.h\" \/* set LoraWan_RGB to Active,the RGB active in loraWan * red \u00a0\u00a0|sending; \u00a0\u00a0purple | joined done; * blue \u00a0|RxWindow1; yellow | means &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/5-lorawan-heltec-cubecell-rssi-practicalab-ino\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"5. LoRaWan - HELTEC CubeCell Rssi PracticaLab.ino\"<\/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":[1481155],"tags":[],"class_list":["post-4060","post","type-post","status-publish","format-standard","hentry","category-taller-lora-multipunto"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4060","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=4060"}],"version-history":[{"count":1,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4060\/revisions"}],"predecessor-version":[{"id":4061,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/4060\/revisions\/4061"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=4060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=4060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=4060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}