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