Ir al contenido
MANUAL DE INSTALACIÓN Y OPERACIÓN

Lartek L5-SNMP/LILO

Firmware 1.3-rc10 · Revisado 7 de septiembre de 2026

Descargar Markdown

1. Primera puesta en marcha

  1. Conectar por USB y ejecutar info, status y estado.
  2. Definir un ID de inventario, una dirección LILO de tres caracteres y una MAC única.
  3. Seleccionar el bus y configurar Ethernet y SNMP.
  4. Ejecutar config.save y comprobar que responda save verificado.
  5. Reiniciar con reboot y verificar nuevamente status, estado, config?, net? y params?.
  6. Incorporar los nodos por su pulsador, con params.auto o manualmente.

No instalar varios equipos con la misma MAC ni con la misma dirección LILO.

2. Descripción del equipo

El L5-SNMP/LILO es un gateway basado en STM32F103C8T6 que concentra mediciones de sensores y las publica por Ethernet mediante SNMP. Puede trabajar en dos modos principales:

En modo LILO, el equipo consulta periódicamente los parámetros configurados y también acepta reportes espontáneos. Los valores se pueden consultar por USB, Telnet o SNMP. El gateway no envía traps SNMP.

La versión 1.3-rc10 incluye:

3. Interfaces e indicadores

USB serie: puerto serie virtual a 115200 bit/s. No requiere contraseña y es la interfaz recomendada para instalación y recuperación.

Ethernet: permite acceso por Telnet en el puerto TCP 23 y consultas SNMPv1 en el puerto configurado —161 de fábrica—. No genera notificaciones SNMP espontáneas.

Bus LILO: usa PB12 como RX y TX half-duplex, a 4800 bit/s, 8N1 y sin inversión. La salida es open-drain; la línea necesita un pull-up externo. La alimentación del bus depende de la revisión de hardware: este firmware no conmuta PA0.

LED verde, PC13: indica principalmente el estado de Ethernet. Permanece encendido cuando la red está operativa y se apaga durante inicialización, comprobaciones o error.

LED rojo, PB6: produce un pulso ante actividad LILO o una solicitud SNMP.

Al arrancar, ambos LED destellan durante aproximadamente tres segundos. Durante la prueba killme, ambos quedan encendidos hasta que actúa el watchdog y el equipo vuelve a iniciar.

4. Acceso a la consola

Los comandos se escriben en minúsculas y se terminan con Enter. En los comandos que asignan un valor conviene conservar exactamente el espacio posterior a los dos puntos, por ejemplo net.ip: 192.168.1.20.

Telnet no cifra la contraseña ni el tráfico. Debe utilizarse solamente desde una red de gestión confiable.

Salvo que se indique lo contrario, los cambios de configuración se aplican primero en RAM. Ejecutar config.save para conservarlos después de un reinicio. El alta addme, los SET SNMP que modifican configuración y el cierre normal de params.auto realizan su propio guardado.

5. Usar el configurador web

El configurador permite consultar y configurar el L5 desde la computadora conectada al equipo. Abrí el programa desde el botón Abrir configurador de esta sección.

Conectar el equipo

  1. Usá Chrome o Microsoft Edge en Windows 10 u 11 y una página HTTPS, o el servidor local del programa.
  2. Conectá el equipo por USB o mediante el conversor USB–serie correspondiente a tu instalación. Cerrá Hercules, Arduino y cualquier otro programa que esté usando el puerto.
  3. Elegí Conectar equipo y seleccioná el puerto en el navegador. La conexión usa 115200 baudios, 8N1 y sin control de flujo.
  4. Verificá que el producto sea L5-snmp y que el firmware sea 1.3-rc10. Esperá a que termine la lectura inicial.

La conexión requiere que el navegador admita Web Serial. Si el puerto no aparece, revisá el cable y el controlador del conversor en Windows. En otros navegadores podés consultar la wiki, pero la conexión al equipo puede no estar disponible.

Explorar sin hardware

Ver demostración abre un equipo simulado. Los cambios se mantienen únicamente en memoria y se pierden al recargar. No modifica un dispositivo real.

Configurar y guardar

  1. Abrí Configuración, editá los campos necesarios y revisá el resumen de cambios.
  2. Confirmá el guardado. El programa aplica los comandos, lee los valores para verificarlos y ejecuta config.save.
  3. Esperá la confirmación. Si cambiaste red o comunidades, la aplicación reinicializa Ethernet cuando corresponde.
  4. Verificá la persistencia después de un reinicio y una nueva conexión.

Los cambios se envían uno por uno: una interrupción puede dejar ajustes en RAM. Ante un error, volvé a leer el equipo antes de continuar. Evitá modificarlo simultáneamente por Telnet o SNMP. Durante params.auto, esperá los cinco minutos antes de editar o guardar.

Terminal serie

La sección Terminal permite escribir comandos directamente. Podés elegirla antes de conectar para abrir el puerto sin las consultas iniciales. Con una conexión existente, guardá o descartá las ediciones pendientes antes de activar la terminal.

Hacé clic en Teclado en directo, escribí status y presioná Enter. Cada tecla se transmite al escribir. Eco local solo cambia la visualización: activalo si no ves lo escrito y desactivalo si aparece duplicado. Se puede pegar una línea por vez; el límite del L5 es de 62 bytes por línea.

Limpiar pantalla no borra el texto que todavía está pendiente en el equipo. Usá Backspace para corregirlo. Para volver a los formularios, elegí Finalizar y desconectar, cambiá de sección y conectá nuevamente. Los comandos enviados manualmente necesitan su propio config.save cuando corresponda.

Alcance y compatibilidad

El perfil de edición de los formularios corresponde a 1.3-rc10. Un firmware desconocido queda en modo de consulta; la terminal permite operar manualmente. La aplicación no carga firmware ni controla equipos conectados a otra computadora.

Las consultas automáticas cuentan como actividad del supervisor Ethernet. Desactivalas o desconectá la aplicación para comprobar el reinicio por 30 minutos sin actividad.

La validación con el dispositivo, el adaptador y los navegadores reales sigue pendiente. El programa no se conecta a ningún puerto hasta que lo seleccionás.

6. Referencia de comandos

Estado, sesión y mantenimiento

ComandoFunción
?Muestra los grupos principales de comandos.
infoInforma producto, versión, ID y dirección LILO.
statusMuestra segundos encendido, causa y banderas de reset, y estado del watchdog.
estadoMuestra el estado de Ethernet, la IP efectiva y los valores activos.
m1 / m0Activa o detiene el monitor de valores cada dos segundos. El monitor se detiene solo después de 15 minutos.
se1 / se0Activa o desactiva el eco de caracteres por USB. Requiere config.save para persistir.
rebootReinicia el microcontrolador por software aproximadamente un segundo después.
killmeFuerza un bloqueo para probar el IWDG. Usar únicamente durante una prueba controlada.
passwdCambia interactivamente la contraseña de Telnet y la guarda de inmediato. Se usa desde una sesión Telnet autenticada.
exitCierra la sesión Telnet.

Las causas más habituales informadas por status son software, watchdog independiente (IWDG), encendido/baja tension y pin NRST. El reinicio manual y el automático de 24 horas aparecen como reinicio por software.

Identidad y bus

ComandoFunción
id?Consulta el ID de inventario, de hasta siete caracteres.
id: GW-001Asigna el ID. Una vez asignado, primero debe restablecerse con id: #### para poder cambiarlo.
bus?Consulta el modo de bus actual.
bus: liloActiva el bus LILO por PB12.
bus: dallasActiva un DS18B20 por PB11; utiliza param1 con código temp. Al seleccionar este modo se reconstruye la tabla de parámetros en RAM.
lilo?Consulta dirección, tipo y nombre LILO del gateway.
lilo.address: G01Configura la dirección LILO del gateway. Debe contener exactamente tres caracteres y ser única en el bus.
lilo.name: GW1Configura el nombre LILO; en esta versión se conservan tres caracteres.
lilo: 007v0?Envía a 007 el mensaje v0? y muestra la respuesta o un timeout. Es una prueba de diagnóstico.

Ethernet

El prefijo ethernet es alias de net; por ejemplo, ethernet? equivale a net?.

ComandoFunción
net?Muestra la configuración, IP efectiva, estado interno, enlace físico, segundos desde la última actividad y diagnóstico de reinicios de Ethernet.
net.mac: 18:0a:1a:91:40:01Configura la MAC. Debe ser única para cada equipo.
net.ip: 192.168.1.20Configura una IP fija. Usar 0.0.0.0 para DHCP.
net.subnet: 255.255.255.0Configura la máscara de red.
net.gateway: 192.168.1.1Configura la puerta de enlace.
net.dns: 192.168.1.1Configura el servidor DNS.
net.startReinicia la inicialización de Ethernet con los valores que están en RAM.

La máscara (net.subnet) debe corresponder a la red: por ejemplo, 255.255.255.0 en una red /24. No ingresar allí la dirección del gateway. Después de modificarla, ejecutar config.save y net.start. El firmware conserva la máscara guardada al actualizar; no la corrige automáticamente.

En la respuesta de net?, .status describe el estado interno de la máquina Ethernet y .link consulta el enlace físico real del ENC28J60 (up, down o unknown). Un .status: ok por sí solo no demuestra conectividad extremo a extremo.

.last_activity_seconds cuenta el tiempo desde la última solicitud SNMP válida, conexión o comando Telnet, o comando serie. .restart_count cuenta los reinicios de Ethernet solicitados desde que arrancó el microcontrolador y .last_restart_reason puede indicar startup, manual, periodic, idle, link_restored o error.

Ethernet se reinicia preventivamente cada seis horas. Además, si transcurren 30 minutos sin las actividades anteriores, se reinicia y el temporizador vuelve a quedar armado. Cuando se detecta que un enlace caído volvió a subir, también se reinicializa la interfaz.

SNMP

Usar SNMPv1, la comunidad de lectura configurada (public de fábrica) y el puerto UDP configurado (161 de fábrica). Cada solicitud admite un solo OID. Para recorrer el árbol, usar WALK basado en GET NEXT con un OID por paquete; GET BULK y SNMPv2c/v3 no están implementados.

Desde 1.3-rc9, una consulta incompatible, con comunidad incorrecta o malformada se descarta liberando la escucha para los demás clientes. Se corrige además una pérdida de consultas introducida en rc8 cuando llegaban entre dos comprobaciones de recepción. No se requiere net.start para recuperarse de esos descartes.

Una vez obtenida una IP válida, SNMP y Telnet se inicializan en las siguientes pasadas del programa, sin la espera adicional de cinco a siete segundos de versiones anteriores. La obtención de IP por DHCP conserva sus tiempos internos.

ComandoFunción
snmp?Consulta comunidades, puerto, contacto, nombre y ubicación.
snmp.getcom: lecturaConfigura la comunidad de lectura, máximo 20 caracteres.
snmp.setcom: escrituraConfigura la comunidad de escritura, máximo 20 caracteres.
snmp.port: 161Configura el puerto UDP del agente SNMP.
snmp.contact: soporte@empresaConfigura sysContact.
snmp.name: SalaMaquinasConfigura sysName.
snmp.location: Planta 1Configura sysLocation.

Desde 1.3-rc10 se eliminaron el envío de traps, los comandos trap?, trap.* y paramN.ttl, y el OID de destino 1.3.6.1.2.1.52686.4.1. Los ajustes antiguos se ignoran aunque estuvieran habilitados. Las consultas de mediciones, GET NEXT/WALK y los demás SET SNMP siguen disponibles; no es necesario borrar la configuración al actualizar desde otra versión 1.3.

Después de cambiar el puerto o las comunidades SNMP, guardar y ejecutar net.start o reboot para reinicializar el agente.

Los nueve valores están disponibles en los OID 1.3.6.1.2.1.52686.1.0 a 1.3.6.1.2.1.52686.1.8. También se exponen los objetos estándar sysDescr, sysUpTime, sysContact, sysName y sysLocation. El agente implementa SNMPv1.

Parámetros y aprendizaje LILO

N puede valer de 0 a 8; la capacidad total es de nueve parámetros.

ComandoFunción
params?Lista los nueve códigos y muestra .auto: on si hay una ventana de aprendizaje activa.
paramN?Muestra código, valor, calificador y errores del parámetro N.
paramN.code: 007v0Asocia manualmente el parámetro N a la medición v0 del nodo 007.
paramN.code:Deja libre el parámetro N.
params.autoAbre durante cinco minutos una ventana de aprendizaje. Agrega los nodos nuevos que reporten v0, conserva los existentes y guarda la tabla al terminar.
params.clearVacía la tabla en RAM y cancela el aprendizaje. No guarda automáticamente.

El antiguo comando params.discover ya no está disponible.

Alta por pulsador: en modo LILO no hace falta abrir una ventana. Cuando un nodo transmite addme por broadcast, el gateway toma los tres caracteres de origen, guarda el código <ID>v0 en el primer lugar libre y recién entonces responde added a la dirección específica del nodo. Si el nodo ya estaba asociado, conserva su configuración y vuelve a responder. Si la tabla está llena o falla la escritura en Flash, no envía la confirmación.

Persistencia y diagnóstico

ComandoFunción
config.saveGuarda y verifica la configuración. Alterna entre las copias A y B; si nada cambió evita otra escritura.
config.loadRecupera la última copia válida. Se recomienda reiniciar después para reinicializar todos los servicios.
config.defaultRestaura en RAM la mayoría de los valores de fábrica. Conserva la MAC actual y no reasigna el ID ni la dirección LILO. Luego debe ejecutarse config.save.
config?Muestra la copia activa (config_slot), su secuencia (config_sequence) y el resultado del último guardado (config_last_save).
debug?Muestra los diagnósticos activos.
debug: 1 / debug: 0Activa o desactiva todos los diagnósticos.
debug.main: 1Diagnóstico general. También existen debug.ethernet, debug.lilo, debug.snmp, debug.params y debug.dallas; usar 0 para desactivar.

7. Ejemplos de configuración

Configuración inicial con IP fija

config.default
id: GW-001
bus: lilo
lilo.address: G01
lilo.name: GW1
net.mac: 18:0a:1a:91:40:01
net.ip: 192.168.1.20
net.subnet: 255.255.255.0
net.gateway: 192.168.1.1
net.dns: 192.168.1.1
snmp.getcom: monitor
snmp.setcom: administrar
config.save
reboot

Después del arranque:

info
status
estado
config?
net?
params?

Cambiar la contraseña Telnet conectándose con la clave vigente y ejecutando passwd.

Uso de DHCP

net.ip: 0.0.0.0
config.save
net.start

Esperar la negociación y consultar estado o net? para conocer la IP asignada.

Alta automática por pulsador

  1. Confirmar bus: lilo y al menos un lugar libre con params?.
  2. Pulsar el botón de aprendizaje del nodo.
  3. El nodo transmite addme; el gateway guarda, responde added y comienza a consultar <ID>v0.
  4. Ejecutar params? y luego paramN? sobre el lugar ocupado.
  5. Ejecutar reboot y confirmar que la asociación continúa presente.

Aprender todos los nodos que reportan

Para conservar la lista existente y sumar nodos:

params.auto

Mantener el equipo encendido durante los cinco minutos. Para reconstruir completamente la tabla:

params.clear
params.auto

Esta segunda secuencia borra la lista en RAM y guarda el resultado nuevo al cerrar la ventana. No reiniciar el equipo antes de que terminen los cinco minutos.

Alta manual y consulta de una medición

param0.code: 007v0
config.save
param0?

Prueba de reinicio y watchdog

reboot
status

Después de reboot, la causa debe incluir software y el tiempo encendido debe ser bajo, indicando que comenzó nuevamente. Para probar el watchdog en banco:

killme

El equipo deja de responder, enciende ambos LED y debe reiniciar por IWDG aproximadamente diez segundos después. Al reconectar el USB, status debe informar watchdog independiente (IWDG).

8. Resolver problemas frecuentes

El navegador no muestra el puerto

Usá Chrome o Edge y abrí el configurador por HTTPS o localhost. Revisá el cable, la alimentación y el controlador del conversor. Cerrá cualquier otra aplicación que tenga abierto el mismo puerto.

El equipo no responde por Ethernet

Conectá por USB y consultá:

status
estado
net?
config?

Revisá .link: up, la IP efectiva, la máscara y la puerta de enlace. Un .status: ok no confirma por sí solo la comunicación con otra computadora. En net.subnet va una máscara, por ejemplo 255.255.255.0, y no la dirección del gateway. Después de corregir la red, ejecutá config.save y net.start. Con DHCP, esperá la negociación antes de consultar la IP.

Hay red, pero SNMP no responde

Usá SNMPv1, la comunidad correcta y el puerto UDP configurado. Cada solicitud admite un solo OID. Para recorrer el árbol usá GET NEXT; GET BULK y SNMPv2c/v3 no están implementados. Revisá también las reglas de red del sistema de monitoreo.

No esperes traps: desde 1.3-rc10, el equipo solo responde solicitudes. Si necesitás alarmas, configurá consultas y reglas en tu sistema de monitoreo.

Un nodo no se incorpora

Confirmá bus: lilo, un lugar libre en params? y direcciones únicas. El pulsador del nodo envía addme; el gateway responde added después de guardar. No confirma si la tabla está llena o falla Flash. params.auto aprende durante cinco minutos los nodos que reportan v0; no es un barrido activo de todos los nodos.

El sensor no tiene lectura

Consultá paramN?: revisá código, calificador y errores. En LILO, el código típico es 007v0. Comprobá conexión, dirección, pull-up y configuración del nodo. En Dallas, se utiliza PB11 y param1 con código temp; el valor válido está en décimas de °C. No interpretes un calificador de error como una temperatura.

Los cambios desaparecen al reiniciar

Los cambios por consola suelen quedar primero en RAM. Ejecutá config.save, comprobá save verificado y revisá .config_last_save: ok en config?. Confirmá los ajustes después de reboot. No hagas un borrado total de Flash si necesitás conservar la configuración.

El equipo se reinició

status informa la causa y el tiempo encendido. El reinicio preventivo ocurre cada 24 horas y aparece como software. IWDG indica actuación del watchdog. net? distingue los reinicios de Ethernet del reinicio completo del microcontrolador. Anotá la causa y las condiciones antes de intervenir. Usá killme solo para una prueba controlada en banco.

9. Actualizar el firmware

Para compilar con Arduino 1.8.13 seleccionar:

El BIN se carga manualmente con STM32 ST-Link Utility en 0x08000000. La versión compilada se comprueba con info. No usar una variante con bootloader DFU ni otra distribución de memoria.

Las dos últimas páginas de Flash, 0x0800F800 y 0x0800FC00, contienen la configuración A/B. Un borrado total elimina ambas copias. Si se desea comenzar desde cero, esto es válido, pero luego deben provisionarse como mínimo MAC, ID, dirección LILO, red, contraseña y comunidades antes de conectar el equipo a producción.

10. Operación y mantenimiento

11. Versión y cambios

Firmware documentado: 1.3-rc10

Esta documentación corresponde al código fuente 1.3-rc10. Es un candidato compilado; la validación de estabilidad con hardware real sigue pendiente. Consultá info en el equipo para conocer la versión que está instalada.

Cambios de rc10

Correcciones anteriores relevantes

rc9: corrige pérdidas y descartes de consultas SNMP y libera la escucha después de solicitudes incompatibles o malformadas.

rc8: añade defensas del parser SNMP y limita las solicitudes a un OID por paquete.

rc7: incorpora supervisión del enlace físico y recuperación de Ethernet.

rc6: expone tiempo encendido y causa del último reinicio con status.

rc5: ajusta el aprendizaje pasivo de nodos mediante params.auto.

rc4: establece el bus LILO de un hilo en PB12.

Antes y después de actualizar

Registrá los valores particulares del equipo y conservá el BIN anterior. La programación se realiza por ST-Link; el configurador web no carga firmware. Evitá borrar las páginas A/B si querés conservar los ajustes.

Después de cargar, verificá versión, configuración persistente, enlace Ethernet, Telnet, consultas SNMPv1 y lecturas LILO desde un arranque en frío. Una compilación correcta y pruebas con periféricos simulados no sustituyen esa comprobación.