Estado y comunicación LoRa

Desde el script se puede forzar el envio de reporte de entradas/salidas sin esperar al criterio regular.

También se pueden enviar y recibir payloads con formato totalmente personalizado.

Estado de conexión

La fuente 11 permite saber si el equipo ya hizo join con el gateway configurado. 9 indica conectado.

Fuente /
Destino
Indice
Valor
R/W
Descripción
Función
11
0
9 -> Conectado
read_io Estado de conexión de nodo

LoRa

Ejemplo: Leer el estado de la conexión

read_io 11,g,0;

Reporte de E/S

Si se desean enviar reportes de los valores de las E/S se pueden forzar desde el script con los destinos 17,18,19 y 23. El valor reportado es el propio de la E/S.

Adicionalmente se puede deshabilitar el reporte automático que hace el equipo luego de realizar un JOIN.

Fuente /
Destino
Indice
Valor
R/W
Descripción
Función
5
6
0 / 1
write_io Deshablitar envio de reportes configurados

LoRa

Reporte E/S

17
1 a 4
-
write_io Forzar reporte de DI
18
1 a 4
-
write_io Forzar reporte de DO
19
1 a 4
-
write_io Forzar reporte de AI
20
1 a 4
-
write_io Forzar reporte de AO
22
1 a 2
-
write_io Forzar reporte de PI
23
1 a 10
-
write_io Forzar reporte de MB

Ejemplo: Enviar reporte de las entradas analógica. (Reporta el último valor medido)

write_io 19,0,0;

Envio/Recepción de payloads personalizados por LoRa

Desde el script se pueden enviar y recibir payloads con formato personalizado.

Se recomienda como primer medida deshabilitar en envío de reportes automáticos despues del JOIN con write_io 5,6,1;

Las fuentes/destinos 402, 403, 404 y 405 usados para acceder al buffer pueden ser compartidos por otra funciones.

Fuente /
Destino
Indice
Valor
R/W
Descripción
Función
5
6
0/ 1
write_io Deshablitar envio de reportes automáticos
LoRa
Envio
402
8
0
write_io Buffer LoRa envio - Selecciona e inicia
405
0
write_io Buffer LoRa envio - Envia datos binarios cargados con 403/404 
405
0
read_io Estado de envio 0-Idle / 1-Enviando / 2-Enviado / 3-Falla
402
9
0 a 199
write_io Buffer LoRa recepción - Selecciona y posiciona
LoRa
Recepción
405
0
write_io Buffer LoRa recepción - Vacia al buffer (0 = Todo)
403
1
10^N
-2 -> 0.01
-1 -> 0.1
0 -> 1
1 -> 10
2 -> 100
write_io Buffers - Configura exponente para flotantes
LoRa
2
0-> MSB / 1 ->LSB
0-> MSW / 1 ->LSW
write_io Buffers - Configura orden bytes/words
404
1
Numero según formato, exponente y orden
read/write_io Buffers - Entero 8 bits sin signo
2
read/write_io Buffers - Entero 8 bits con signo
3
read/write_io Buffers - Entero 16 bits sin signo
4
read/write_io Buffers - Entero 16 bits con signo
6
read/write_io Buffers - Entero 32 bits con signo
7
read/write_io Buffers - Flotante 32 bits

Ejemplo de envío en modo binario

Es posible enviar payloads personalizados.

Antes de enviar se debe seleccionar el buffer de envio, luego cargar los datos con los destinos 403 y 404 y disparar el envío. Luego se puede validar si el envío fue correcto o no.

Ejemplo:Todos estos pasos se muestran a continuación.

read_io 11,a,0;#e=Estado de conexión;
if a = 9 {
  write_io 402,8,1; #Buffer Tx LoRa;
  write_io 404,2,10;#Carga en buffer el numero 10 en formato entero de 8 bits con signo;
  write_io 403,2,0; #Configura orden MSB;
  write_io 404,4,23456;#Carga en buffer el numero 23456 en formato entero de 16 bits con signo y orden MSB;
  write_io 405,8,0; #Envia buffer LoRa;
};

....

read_io 405,a,8; #d=estado envio;
if a = 2 {
  #Envio exitoso ;
};

El payload enviado contendrá estos bytes (se expresan en hexadecimal)

0A 5B A0

Ejemplo de recepción en modo binario

Está a la espera de payloads enviádos desde el gateway. Una vez recibido lee algunos de los bytes que lo componen.

El payload enviado desde el gateway contiene estos bytes (se expresan en hexadecimal)

0A 5B A0

write_io 402,9,0; #Selecciona Buffer RX lora;
read_io 405,a,9; #Lee cantidad de bytes recibidos;
if a!0 {
   write_str 35,'RX LORA: ',a;
   write_io 402,9,1; read_io 404,b,2; #b=primer byte de la trama representado como byte signado;
   write_io 403,2,0;#MSB;
   write_io 402,9,2; read_io 404,c,4; #c=bytes 2 y 3 de la trama en formato entero de 16 bits con signo y orden MSB;
   write_io 405,9,0; #limpia el buffer de recepción;
};
end;

Luego de correr el script 'b' valdrá 10 y 'c' valdrá 23456.

2025-09-08