Pacote de keep-Alive LoRaMESH EndDevice LoRaWAN
O que é: É um uplink gerado pelo módulo EndDevice LoRaWAN em intervalos regulares.
Para que serve: A primeira função é mostrar para a aplicação que o módulo está funcionando normalmente. A segunda é enviar medidas das GPIOs analógicas (valor de tensão) e os estados das GPIOs digitais (nível alto ou baixo).
Como configurar: enviar na serial de do módulo ou via downlink o comando
AT+KEEPALIVE=L:PPP:C:TTTTTTT
Onde:
L = 1 byte 0 ou 1; 1 para Ligado; 0 para desligado
PPP = Port do protocolo LoRaWAN que o pacote utilizará. Valores permitidos de 0 a 255 com as restrições do protocolo LoRaWAN. Vide https://lora-alliance.org/resource-hub/lorawanr-specification-v101
C: pacote confirmado ou não confirmado; 1 para confirmado; 0 para não confirmado.
Obs.: Cuidado com pacotes confirmados! A confirmação enviada pelo Gateway é um downlink e os downlinks ocupam o gateway (“desligam” a recepção enquanto ocorre a transmissão) e são tarifados de forma diferenciada.
TTTTTTT: intervalo de envio do keep alive em ms. Por exemplo: 3600000 = 1 hora
Exemplo: AT+KEEPALIVE=1:85:0:3600000 = ativa o keep alive, na porta 85, sem confirmação e a cada 1 hora.
Tratamento do pacote de keep-alive recebido:
São ao todo 16 Bytes (0 ao 15):
Byte 0: Nível de bateria
Tratamento para chegar no valor em volts: =((1,8/255)*valor)+1,8
Exemplo: =((1,8/255)*192)+1,8 = 3,15Volts
Byte 1: Reservado para uso futuro
Byte 2: Fixo em 0xFF (Decimal 225) para indicar que se trata de um pacote de Keep-Alive
Byte 3: Estado dos pinos configurados como entrada digital (MSB) … dos GPIOs 9 e 8.
Os oito bits deste byte devem ser interpretados individualmente. Cada bit significa o estado de um GPIO.
Exemplo : valor 0x03 ou 3 decimal = 00000011 binário significa que os GPIOs 9 e 8 estão com nível alto em suas entradas.
Byte 4: Estado dos pinos configurados como entrada digital (LSB) … dos GPIOs 7 a 0.
Byte 5 e 6: Valor de tensão na entrada analógica do AD 0 ou GPIO 00.
Tratamento:
[Valor de referência do AD (3,3volts)/precisão do AD (12 bits) ]*[(byte MSB * 256) +(byte LSB)]
=(3,3/4092)*(byte 5 * 256+byte 6)
Exemplo:
Byte 5 = 0x05 = 5 decimal (MSB)
Byte 6 = 0x9D = 157 decilma (LSB)
=(3,3/4092)*(5 * 256+157) = 1,42 volts
Byte 7 e 8: Valor de tensão na entrada analógica do AD 1 ou GPIO 01.
Mesmo tratamento feito para os bytes 5 e 6.
Byte 9 e 10: Valor de tensão na entrada analógica do AD 2 ou GPIO 07.
Mesmo tratamento feito para os bytes 5 e 6.
Byte 11 e 12: Valor de tensão na entrada analógica do AD 3 ou GPIO 08.
Mesmo tratamento feito para os bytes 5 e 6.
Byte 13: SNR Relação sinal ruído do último pacote que o EndDevice recebeu (se nunca recebeu um pacote de downlink ou foi reinicializado recentemente o campo informará 0)
Simplesmente o valor do SNR. Exemplo: 0x013 = 27 que significa 27dB. O sinal de recepção de downlink foi 27dB mais forte que o ruído no receptor do EndDevice.
Byte 14 e 15 : RSSI do último pacote de downlink recebido. RSSI é a intensidade de sinal recebido ou simplesmente nível de RX. Este é um valor negativo em dBm! Terá que ser tratado como signed (o primeiro bit da word formada pelos dois bytes será 1 por ser negativo).
Tratamento :
=(Byte 14 (MSB) * 256 + Byte15) – 65535
Exemplo:
byte 14 = 0xFF; 255 decimal
byte 15 = 0xD2; 210 decimal
225*256 + 210 – 65535 = -45 dBm