Pacote de keep-Alive LoRaMESH EndDevice LoRaWAN

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:

image

São ao todo 16 Bytes (0 ao 15):
image
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.

image

Byte 4: Estado dos pinos configurados como entrada digital (LSB) … dos GPIOs 7 a 0.

image

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 5256+byte 6)

Exemplo:

Byte 5 = 0x05 = 5 decimal (MSB)

Byte 6 = 0x9D = 157 decilma (LSB)

=(3,3/4092)(5256+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