Sistema completo de control inteligente para repetidora simplex desarrollado en Node.js. Versión Headless con interfaz APRS liviana, decodificación DTMF profesional con anti-falsos positivos, múltiples servicios automatizados, monitoreo sísmico INPRES en tiempo real, sistema TTS híbrido con Google TTS y soporte completo para Raspberry Pi 3.
🚀 Versión 2.10.0 - Optimización Raspberry Pi 3 y Display OLED
- 🍓 Soporte Raspberry Pi 3: Optimización completa para funcionar en Raspberry Pi 3B (1GB RAM)
- 📺 Display OLED MMDVM: Integración completa del display OLED SSD1306 128x64 del MMDVM HAT
- 🎨 8 Pantallas Rotativas: Frecuencia, Reloj, Sistema, APRS, Clima, Sismos, Audio y Stats
- 🔊 Detección Audio Inteligente: Modo output-only automático si no hay dispositivos de captura
- 🎵 Beeps BBC Continuos: Corregido problema de cortes en baliza horaria (VOX ya no cae)
- 📊 Contador APRS Corregido: Fix contador de beacons APRS en OLED
- 💾 Scripts Instalación: Scripts automatizados para instalación en Raspberry Pi desde Arch Linux
- 📖 Guía Completa: Documentación detallada de configuración post-instalación
- 🎙️ Mejora Flujo TTS Multiple Alertas: Corregido flujo de mensaje para múltiples alertas meteorológicas
- ⏸️ Pausas Mejoradas: Implementadas pausas adecuadas entre alertas usando puntos en lugar de comas
- 🔄 Estructura Mensaje Optimizada: Eliminados saltos abruptos de timing a fuente SMN
- 🕐 Formato 24h Perfeccionado: Sin palabra "horas" para pronunciación TTS más natural
- 📅 Días Específicos: Reemplazado "mañana" por nombres de días específicos (ej: "miércoles 10")
- 📡 Fuente SMN Consistente: Agregada fuente SMN al final de todos los anuncios
- 🗺️ Áreas Geográficas Precisas: Identificación específica de zonas dentro de Mendoza
- ⚙️ Sistema Configuración Híbrido: Nuevo ConfigurationService con herencia y compatibilidad total con sistema anterior
- 🔊 Baliza BBC Pips: Implementación de secuencia BBC estándar (5 tonos cortos + 1 largo) sincronizada con horas de reloj
- 🕐 Sincronización Horaria: Baliza transmite exactamente en horas de reloj para máxima precisión
- 🔄 ConfigCompat: Capa de compatibilidad que permite migración gradual sin interrupciones
- 🎯 Config Híbrido: Sistema que usa ConfigurationService como prioritario con fallback al ConfigManager anterior
- 🧹 Limpieza Archivos: Eliminación automática de archivos temporales de audio para mantener espacio limpio
- 🎙️ Sistema TTS Híbrido: Google TTS como motor principal con fallback automático a espeak
- 🔀 Lógica Simplex Completa: Sistema simplex real que pausa recepción durante transmisión
- ❌ Sin Falsos Positivos DTMF: Eliminados completamente los falsos positivos durante transmisiones TTS
- ⏱️ Timeout Extendido: Alertas meteorológicas con timeout de 2 minutos para contenido largo
- 🗺️ Marcadores Optimizados: Eliminadas animaciones pulsantes y emojis internos en marcadores APRS
- 🐛 Fix Duplicación: Solucionado problema de duplicación infinita del marcador de repetidora
- 📡 DuckDNS Integrado: Sistema DNS dinámico completamente funcional con actualización automática
- 🖥️ Sistema Completamente Headless: Eliminado dashboard web completo, ahora funciona solo por consola
- 🗺️ Mapa APRS Liviano: Nueva interfaz web minimalista con Bootstrap 5 y Leaflet.js
- 📊 Datos Enriquecidos Completos: Integración total de datos Direwolf (speed, course, altitude, audioLevel, errorRate)
- 📱 Diseño Responsive Avanzado: Optimizado para dispositivos móviles con iconografía moderna
- 🎯 Marcadores Grandes: Marcadores de 32px con indicadores visuales mejorados para mejor usabilidad
- 📈 Panel de Información Detallada: 6 secciones organizadas que aparecen al clickear marcadores
- ⚡ Puerto Optimizado: Servidor APRS en puerto 3000 para evitar conflictos
- 🔄 Actualización Automática: Datos actualizados cada 30 segundos
- 📡 APIs REST: Endpoints
/api/positionsy/api/repeaterpara integración externa
- Marcadores Visuales: Indicadores de velocidad, curso, altitud y calidad de señal
- Información Completa: Speed (km/h), Course (grados), Altitude (metros), Audio Level, Error Rate
- Panel Detallado: Información organizada en secciones al hacer clic en marcadores
- Charts de Altitud: Visualización gráfica con Canvas HTML5
- Cobertura Dinámica: Círculo de alcance basado en estación más lejana
- Responsive Design: Interfaz optimizada para móviles y tablets
- 📍 Fix APRS Posiciones Reales: Corregido parser para mostrar coordenadas reales transmitidas en lugar de coordenadas fallback del repetidor
- 🗺️ Visualización Completa: Ahora muestra todas las posiciones únicas transmitidas (11 ubicaciones vs 1-2 anteriormente)
- 📊 Contador Preciso: Contador de posiciones ahora refleja packets reales recibidos (71) vs posiciones únicas mostradas
- 📡 Parser Mejorado: Mejorado parser de logs Direwolf para obtener coordenadas exactas por callsign y timestamp
- 🌦️ Fix Audio Alertas Completo: Solucionado problema de audio cortado en repeticiones de alertas meteorológicas
- 🔊 Playlist Secuencial: Sistema de fallback que reproduce todos los fragmentos cuando falla combinación ffmpeg
- ⚡ Anti-Truncamiento: Eliminado fallback que solo reproducía primer fragmento, ahora reproduce mensaje completo siempre
- Funcionamiento solo por consola - Sin interfaz web pesada
- Mapa APRS liviano como única interfaz web
- Optimizado para servidores y dispositivos embebidos
- Menor consumo de recursos sin dashboard completo
- Ideal para implementaciones 24/7 en producción
- Grabación en tiempo real con soporte ALSA/PulseAudio
- Decodificador DTMF Profesional con
dtmf-detection-stream - Anti-falsos positivos con detección de voz integrada
- Lógica Simplex Completa - pausa recepción durante transmisión
- Configuración de sensibilidad (Low/Medium/High)
- Modo debug para desarrollo y pruebas
- Roger Beep estilo Kenwood configurable
- Google TTS como motor principal con calidad de voz natural
- Fallback automático a espeak para máxima confiabilidad
- Fragmentación inteligente para textos largos con ffmpeg
- Integración con lógica simplex para evitar falsos positivos DTMF
- Timeout extendido (2 minutos) para alertas meteorológicas largas
- Estadísticas de uso con tasa de éxito de cada motor TTS
- Limpieza automática de archivos temporales
- TNC Software integrado con Direwolf
- Historial completo de posiciones por estación con persistencia
- Datos enriquecidos completos: Speed, Course, Altitude, Audio Level, Error Rate
- 180+ símbolos APRS oficiales con emojis descriptivos
- Cálculo de distancias precisas desde repetidora (fórmula Haversine)
- Círculo de cobertura dinámico en mapa web
- Widget en tiempo real de estación más lejana recibida
- Detección automática de nuevas ubicaciones (>100m)
- Mapa APRS interactivo con marcadores informativos grandes
- Transmisión de beacons automáticos y manuales
- Estadísticas detalladas de tráfico APRS
- Bootstrap 5 con diseño responsive avanzado
- Leaflet.js para mapas interactivos suaves
- Marcadores grandes (32px) optimizados para móviles
- Indicadores visuales para velocidad, curso, altitud y señal
- Panel de información detallada con 6 secciones organizadas
- Charts de altitud con Canvas HTML5
- Actualización automática cada 30 segundos
- APIs REST para integración externa
El sistema integra soporte completo para el display OLED SSD1306 128x64 del MMDVM HAT.
- Resolución: 128x64 píxeles monocromo
- Interfaz: I2C (dirección 0x3C)
- Actualización: Cada 5 segundos en carousel automático
- 8 Pantallas rotativas con información en tiempo real
| # | Pantalla | Información Mostrada |
|---|---|---|
| 0 | Frecuencia | Frecuencia del repetidor y callsign |
| 1 | Reloj | Hora (HH:MM) y Fecha (DD/MM/YYYY) |
| 2 | Sistema | IP Address y Uptime |
| 3 | APRS | Beacons enviados y posiciones únicas |
| 4 | Clima | Temperatura actual y humedad |
| 5 | Sismos | Último sismo detectado (INPRES) |
| 6 | Audio | Estado TX/RX con tipo de transmisión |
| 7 | Stats | Comandos DTMF ejecutados |
- Se activa automáticamente durante transmisiones
- Muestra ">> TX <<" parpadeante
- Indica tipo de transmisión (TTS, Baliza, Alerta, etc.)
- Diseño simplificado sin callsign
- Vuelve al carousel automáticamente al terminar
// En src/index.js.pi
const OLEDDisplay = require('./display/OLEDDisplay');
this.oledDisplay = new OLEDDisplay({
width: 128,
height: 64,
address: 0x3C,
device: '/dev/i2c-1'
});- 🔊 Baliza BBC Pips: Secuencia estándar 5 tonos cortos + 1 largo sincronizada con horas de reloj (
*9) - DateTime: Anuncio de fecha y hora (
*1) - Weather: Información meteorológica (
*4actual,*5voz) - 🌦️ Weather Alerts: Sistema de alertas SMN Argentina (
*7consultar,*0forzar verificación) - 🌋 INPRES Sísmico: Monitoreo de sismos INPRES (
*3consultar sismos del día)
- Monitoreo automático cada 20 minutos del Instituto Nacional de Prevención Sísmica
- Filtrado inteligente sismos >4.0 magnitud en región Mendoza
- Estados sísmicos diferenciados: Azul (preliminar), Negro (revisado), Rojo (sentido)
- Anuncios selectivos solo sismos revisados/sentidos para evitar falsos positivos
- Zonificación Mendoza automática (Capital, Valle de Uco, San Rafael, etc.)
- *Comando DTMF 3 para consulta manual de sismos del día
- Web scraping robusto con parsing HTML avanzado
- Monitoreo automático cada 90 minutos de alertas SMN Argentina
- Cobertura completa de la provincia de Mendoza
- Filtrado geográfico inteligente por coordenadas y polígonos CAP
- Anuncios automáticos con Google TTS + fragmentación para textos largos
- Integración APRS con comentarios dinámicos incluyendo clima actual
- Repetición automática cada 105 minutos para alertas vigentes
- Node.js 18.x o superior
- NPM o Yarn
- Sistema Linux (probado en Arch Linux)
- Hardware de audio compatible con ALSA
- Direwolf (para funcionalidad APRS)
# Clonar el repositorio
git clone https://github.com/fokerone/vx200RPTController.git
cd vx200RPTController
# Instalar dependencias
npm install
# Configurar variables de entorno
cp .env.example .env
nano .env # Editar configuración
# Ejecutar el sistema
npm start# Verificar dispositivos disponibles
aplay -l
arecord -l
# Configurar en .env
AUDIO_DEVICE=default # o hw:0,0 según tu hardware
AUDIO_SAMPLE_RATE=48000
AUDIO_CHANNEL_THRESHOLD=0.02# Instalar Direwolf
sudo pacman -S direwolf # Arch Linux
sudo apt install direwolf # Ubuntu/Debian
# Configurar TNC en .env
APRS_ENABLED=true
APRS_CALLSIGN=TU_INDICATIVO
APRS_LOCATION=lat,lon🗺️ Mapa APRS disponible en: http://localhost:3000
El sistema está completamente optimizado para ejecutarse en Raspberry Pi 3B con MMDVM HAT.
- Raspberry Pi 3 Model B (1GB RAM)
- MMDVM HAT con display OLED SSD1306 128x64 (I2C @ 0x3C)
- Tarjeta microSD (16GB mínimo recomendado)
- Fuente de alimentación 5V 2.5A
# Desde tu máquina Arch Linux
cd vx200RPTController
chmod +x setup-raspberry-pi.sh
./setup-raspberry-pi.sh
# El script:
# 1. Descarga Raspberry Pi OS Lite
# 2. Configura WiFi y SSH
# 3. Genera script de instalación automática
# 4. Copia archivos al Raspberry Pi# 1. Conectar por SSH al Raspberry Pi
ssh pi@192.168.100.3 # Usar tu IP
# 2. Actualizar sistema
sudo apt update && sudo apt upgrade -y
# 3. Instalar dependencias básicas
sudo apt install -y git curl build-essential
# 4. Instalar Node.js 18.x
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# 5. Instalar herramientas de audio
sudo apt install -y alsa-utils mpg123 espeak-ng ffmpeg
# 6. Instalar Direwolf (para APRS)
sudo apt install -y direwolf
# 7. Configurar I2C para display OLED
sudo raspi-config
# Navegar a: Interfacing Options > I2C > Enable
# Reiniciar: sudo reboot
# 8. Instalar librería OLED
sudo apt install -y i2c-tools python3-pip
sudo pip3 install luma.oled
# 9. Verificar I2C y OLED
sudo i2cdetect -y 1
# Debe mostrar 0x3C (dirección del display)
# 10. Clonar repositorio
cd ~
git clone https://github.com/fokerone/vx200RPTController.git
cd vx200RPTController
# 11. Instalar dependencias Node.js
npm install
# 12. Configurar variables de entorno
cp .env.example .env
nano .env # Editar configuración (ver GUIA-CONFIGURACION.md)
# 13. Copiar archivo principal para Raspberry Pi
cp src/index.js.pi src/index.js
# 14. Ejecutar el sistema
npm startConsulta GUIA-CONFIGURACION.md para:
- Configuración detallada del archivo
.env - Pruebas de audio con aplay/arecord
- Verificación de dispositivos I2C
- Comandos DTMF disponibles
- Troubleshooting específico para Raspberry Pi
El sistema detecta automáticamente las capacidades de audio:
- Modo completo: Con dispositivos de captura y reproducción
- Modo output-only: Solo reproducción (sin captura disponible)
- Funciones disponibles en modo output-only: TTS, beacons, alertas, baliza
# Verificar dispositivos de audio
aplay -l # Dispositivos de reproducción
arecord -l # Dispositivos de captura# Sistema
CALLSIGN=TU_INDICATIVO
NODE_ENV=production
APRS_MAP_PORT=3000
# Audio
AUDIO_DEVICE=default
AUDIO_SAMPLE_RATE=48000
AUDIO_CHANNEL_THRESHOLD=0.02
# TTS
TTS_VOICE=es+f3
TTS_SPEED=160
# Roger Beep
ROGER_BEEP_ENABLED=true
ROGER_BEEP_TYPE=kenwood
ROGER_BEEP_VOLUME=0.7
# Baliza
BALIZA_ENABLED=true
BALIZA_INTERVAL=60
BALIZA_MESSAGE=TU_INDICATIVO Repetidora Simplex
# APRS (Opcional)
APRS_ENABLED=true
APRS_CALLSIGN=YOSHUA
APRS_COMMENT=VX200 RPT
APRS_BEACON_INTERVAL=15
# APIs Opcionales
OPENWEATHER_API_KEY=tu_api_key| Comando | Función | Descripción |
|---|---|---|
*1 |
DateTime | Anuncia fecha y hora actual |
*3 |
🌋 INPRES Sísmico | Consultar sismos >4.0 del día en Mendoza |
*4 |
Weather | Clima actual |
*5 |
Weather Voice | Clima con voz natural |
*7 |
🌦️ Weather Alerts | Consultar alertas meteorológicas activas |
*0 |
🔄 Force Check | Forzar verificación manual de alertas SMN |
*9 |
Baliza | Activa baliza manual |
vx200RPTController/
├── src/
│ ├── index.js # VX200Controller principal
│ ├── constants.js # Constantes del sistema
│ ├── config/ # Sistema de configuración
│ ├── logging/ # Sistema de logging
│ ├── audio/
│ │ ├── audioManager.js # Gestor de audio completo
│ │ ├── dtmfDecoder.js # Decodificador DTMF profesional
│ │ ├── HybridVoiceManager.js # Sistema TTS híbrido Google+espeak
│ │ └── rogerBeep.js # Roger Beep Kenwood
│ ├── modules/
│ │ ├── baliza.js # Módulo de baliza
│ │ ├── datetime.js # Módulo fecha/hora
│ │ ├── weather.js # Módulo meteorológico
│ │ ├── weather-voice.js # Módulo clima con voz
│ │ ├── weatherAlerts.js # Módulo alertas meteorológicas
│ │ ├── inpres.js # Módulo monitoreo sísmico INPRES
│ │ └── aprs.js # Módulo APRS con Direwolf
│ └── aprs-map/
│ ├── server.js # Servidor mapa APRS liviano
│ └── map.html # Interfaz mapa interactivo
├── config/
│ └── default.json # Configuración por defecto
├── .env.example # Template de variables
└── README.md
- 🎯 URL:
http://localhost:3000 - 📱 Responsive: Optimizado para móviles y tablets
- 🔄 Auto-actualización: Datos frescos cada 30 segundos
- 📊 APIs REST:
/api/positionsy/api/repeater
- Marcadores grandes (32px) fáciles de tocar
- Indicadores visuales para velocidad, curso y altitud
- Panel de información completo con 6 secciones
- Charts de altitud dinámicos con Canvas
- Círculo de cobertura basado en estación más lejana
- Estadísticas en tiempo real de tráfico APRS
- Speed: Velocidad en km/h
- Course: Rumbo en grados (0-359°)
- Altitude: Altitud sobre el nivel del mar
- Audio Level: Nivel de señal y estadísticas
- Error Rate: Tasa de errores de recepción
# Iniciar sistema headless completo
npm start
# Modo desarrollo
npm run dev
# Test de salud del sistema
npm run health- Servidor liviano: Solo mapa APRS en puerto 3000
- Sin dashboard pesado: Eliminado para mejor rendimiento
- Optimizado para producción: Ideal para servidores 24/7
- APIs REST: Integración externa simplificada
- dtmf-detection-stream: Librería especializada
- Anti-falsos positivos: Detección de voz integrada
- Configuración avanzada: 3 niveles de sensibilidad
- Modo debug: Para desarrollo y troubleshooting
- Validación temporal: Evita detecciones erróneas
- Direwolf TNC: Software TNC completo
- Datos enriquecidos: Speed, course, altitude, audioLevel, errorRate
- Beacon automático: Transmisión programable
- Position tracking: Seguimiento de estaciones
- Mapa en tiempo real: Visualización web interactiva
- HTTP Server nativo: Sin frameworks pesados
- Bootstrap 5: CSS framework moderno
- Leaflet.js: Mapas interactivos suaves
- Canvas Charts: Gráficos de altitud dinámicos
# Verificar dispositivos
aplay -l && arecord -l
# Permisos de audio
sudo usermod -a -G audio $USER
# Configurar device en .env
AUDIO_DEVICE=default# Activar debug en logs
# Verificar niveles de audio con:
# 1. Cambiar DTMF_SENSITIVITY=high en .env
# 2. Monitorear logs en tiempo real
# 3. Verificar AUDIO_CHANNEL_THRESHOLD# Verificar Direwolf
direwolf -t 0
# Verificar configuración TNC
ps aux | grep direwolf# Verificar puerto disponible
curl http://localhost:3000
# Verificar logs del servidor
npm start # Ver logs en consola- Optimización para hardware limitado
- Sistema adaptado para Raspberry Pi 3B con 1GB RAM
- Gestión eficiente de recursos y memoria
- Configuración específica para arquitectura ARM
- Archivo principal dedicado
src/index.js.pi
- Scripts de instalación automatizada
- Script
setup-raspberry-pi.shpara instalación desde Arch Linux - Descarga automática de Raspberry Pi OS Lite
- Configuración de WiFi y SSH preinstalada
- Instalación de dependencias y servicios
- Script
- Documentación completa
- Guía detallada
GUIA-CONFIGURACION.md - Instrucciones de configuración post-instalación
- Troubleshooting específico para Raspberry Pi
- Guía detallada
- Soporte completo SSD1306 128x64
- Implementación driver I2C (dirección 0x3C)
- Clase
OLEDDisplaycon gestión completa del display - Renderizado optimizado con biblioteca oled-i2c-bus
- Actualización automática cada 5 segundos
- 8 Pantallas rotativas en carousel
- Pantalla 0 - Frecuencia: Frecuencia y callsign del repetidor
- Pantalla 1 - Reloj: Hora (HH:MM) y fecha (DD/MM/YYYY) sin segundos
- Pantalla 2 - Sistema: IP Address y Uptime (simplificada)
- Pantalla 3 - APRS: Beacons enviados y posiciones únicas
- Pantalla 4 - Clima: Temperatura y humedad
- Pantalla 5 - Sismos: Último sismo INPRES
- Pantalla 6 - Audio: Estado TX/RX
- Pantalla 7 - Stats: Comandos DTMF
- Pantalla TX mejorada
- Removido callsign de pantalla de transmisión
- Diseño simplificado: ">> TX <<" parpadeante
- Indicador de tipo de transmisión
- Activación automática durante transmisiones
- Solución problema VOX cortando PTT
- Generación de archivo WAV completo con toda la secuencia
- 5 beeps cortos + 1 largo en archivo continuo de 5500ms
- Implementadas funciones
generateToneBuffer()ygenerateSilenceBuffer() - Función
writeWavFile()para crear archivos WAV con header RIFF - Eliminados cortes entre beeps que causaban caída de VOX
- Reproducción continua
- Uso de
playWithAplay()con duración total especificada - Mantiene PTT activo durante toda la transmisión
- Limpieza automática de archivos temporales
- Uso de
- Corrección contador beacons en OLED
- Cambiado de propiedad inexistente
beaconCountastats.beaconsSent - Contador ahora refleja beacons realmente transmitidos
- Incremento correcto en cada transmisión
- Visualización precisa en pantalla APRS del display
- Cambiado de propiedad inexistente
- AudioDeviceDetector implementado
- Detección automática de dispositivos de captura y reproducción
- Parsing de salida
arecord -lyaplay -l - Información detallada de dispositivos disponibles
- Verificación de capacidades del sistema
- Modo output-only automático
- Sistema se adapta si no hay dispositivos de captura
- Funcionalidad completa de TTS, beacons y alertas sin captura
- Logging claro de modo de operación
- Advertencias apropiadas para funciones no disponibles
- Soporte MP3 mejorado
- Detección automática de archivos MP3
- Uso de mpg123 con amplificación de volumen (200%)
- Fallback a aplay para archivos WAV
- Configuración Direwolf optimizada
- Audio TX configurado para MMDVM HAT (plughw:0,0)
- Sample rate 48000Hz
- Beacons deshabilitados en config (manejados por KISS)
- Puertos KISS y AGW configurables
- Estructura de archivos actualizada
- Archivo principal
src/index.js.pipara Raspberry Pi - Módulo
src/display/OLEDDisplay.jspara display OLED - Módulo
src/audio/audioDeviceDetector.jspara detección audio - Scripts de instalación en directorio raíz
- Archivo principal
- Flujo de mensaje optimizado para múltiples alertas
- Corregida estructura de mensaje para eliminar saltos abruptos
- Implementadas pausas adecuadas entre alertas usando puntos (.) en lugar de comas (,)
- Cada alerta ahora tiene pausas naturales después de su información de timing
- Transición suave hacia la información de fuente SMN al final
- Mejoras de pronunciación TTS
- Formato 24h sin palabra "horas" para pronunciación más natural
- Nombres de días específicos en lugar de "mañana" (ej: "miércoles 10")
- Fuente SMN agregada consistentemente al final de todos los anuncios
- Identificación específica de áreas geográficas dentro de Mendoza
- Estructura de mensaje mejorada
- Separación clara entre información de alerta y timing
- Pausas apropiadas para permitir comprensión completa
- Eliminados problemas de flujo de mensaje reportados por usuarios
- Optimización para diferentes cantidades de alertas simultáneas
- ConfigurationService completo
- Nuevo sistema de configuración con soporte de herencia
- Método get() con notación de punto y valores por defecto
- Extensión automática de configuración padre con override de propiedades
- Validación de esquemas y manejo de errores robusto
- ConfigCompat capa de compatibilidad
- Interfaz de compatibilidad para migración gradual del sistema anterior
- Mapeo automático entre ConfigManager y ConfigurationService
- Permite mantener código existente sin cambios durante migración
- Logging de migraciones para seguimiento del proceso
- Integración híbrida en src/config/index.js
- Sistema híbrido que usa ConfigurationService como prioritario
- Fallback automático al ConfigManager anterior en caso de error
- Compatibilidad total con código existente
- Documentación clara del proceso de migración
- Secuencia BBC estándar
- 5 tonos cortos de 100ms a 1000Hz
- 1 tono largo final de 500ms marca hora exacta
- Patrón temporal: corto-900ms-corto-900ms-corto-900ms-corto-900ms-corto-900ms-largo
- Frecuencia 1kHz estándar para señales horarias internacionales
- Sincronización horaria perfecta
- Transmisión exacta en horas de reloj (00:00, 01:00, 02:00, etc.)
- Cálculo automático de tiempo hasta próxima hora
- Eliminado delay inicial fijo, ahora se sincroniza inmediatamente
- Logs informativos del próximo tiempo de transmisión
- Configuración avanzada
- Duraciones separadas para tonos cortos y largos configurables
- Validación automática de rangos de duración (50-200ms cortos, 300-1000ms largos)
- Modo de sincronización 'clock-hour' documentado en eventos
- Patrón 'bbc-pips' identificado en configuración
- Eliminación archivos temporales
- Removidos 8 archivos temporales MP3 de sistema TTS
- Limpieza automática de directorio temp/ implementada
- Gestión de espacio en disco mejorada
- Tracking de archivos temporales en git ignore
- Compatibilidad durante migración
- SystemOutput.js con comandos DTMF hardcoded temporalmente
- Prevención de errores durante migración gradual de configuración
- Fallbacks robustos en todas las transiciones críticas
- Documentación clara de estado de migración en comentarios
- Google TTS como motor principal
- Implementado HybridVoiceManager con Google TTS prioritario
- Calidad de voz natural superior para anuncios
- Fragmentación inteligente para textos largos con ffmpeg
- Limpieza automática de archivos temporales
- Fallback automático a espeak
- Sistema de fallback robusto en caso de fallo Google TTS
- Mantiene operatividad 24/7 sin interrupciones
- Estadísticas de uso con tasa de éxito por motor
- Configuración de timeout y parámetros de voz
- Fix crítico falsos positivos DTMF
- Implementada lógica simplex real que pausa recepción durante transmisión
- Eliminados completamente falsos positivos DTMF durante TTS
- Integración completa con todos los módulos (weather, datetime, inpres)
- Múltiples capas de protección anti-falsos positivos
- Integración AudioManager
- Método playWeatherAlertWithPaplay() con lógica simplex
- Pausar/reanudar grabación automática durante transmisiones
- Eventos de transmisión para monitoreo del estado
- Timeout extendido (2 minutos) para alertas meteorológicas largas
- Marcadores optimizados
- Eliminadas animaciones pulsantes para mejor rendimiento
- Removidos emojis internos de marcadores de estación
- Marcadores estáticos más limpios y profesionales
- Fix duplicación infinita del marcador de repetidora
- Limpieza de código
- clearMarkers() mejorado elimina todos los elementos
- Gestión correcta de coverageCircle y repeaterMarker
- Sin elementos duplicados en el mapa
- DNS dinámico integrado
- Actualización automática cada 5 minutos
- Dominio vx200-yoshua.duckdns.org operativo
- Resolución DNS correcta verificada
- Integración con sistema de logs
- Dashboard web eliminado completamente
- Removido sistema Express.js pesado con Socket.IO
- Eliminadas 500+ líneas de código frontend innecesario
- Removidos archivos CSS, JavaScript y HTML del dashboard
- Sistema ahora funciona completamente por consola
- Mapa APRS liviano implementado
- Servidor HTTP nativo minimalista en src/aprs-map/server.js
- Interfaz Bootstrap 5 + Leaflet.js en map.html
- Solo 200 líneas de código servidor vs 1500+ anteriores
- Puerto 3000 optimizado sin conflictos
- Datos enriquecidos completos de Direwolf
- Speed (velocidad en km/h)
- Course (rumbo en grados 0-359°)
- Altitude (altitud sobre nivel del mar)
- Audio Level (nivel de señal con estadísticas)
- Error Rate (tasa de errores de recepción)
- Interfaz visual mejorada
- Marcadores grandes de 32px vs 22px anteriores
- Indicadores visuales para velocidad, curso y altitud
- Panel de información detallada con 6 secciones organizadas
- Charts de altitud dinámicos con Canvas HTML5
- Responsive design avanzado
- Optimizado para dispositivos móviles
- Touch-friendly con marcadores grandes
- Iconografía moderna con emojis descriptivos
- Bootstrap 5 con diseño limpio y profesional
- Endpoints optimizados
-
/api/positions- Posiciones con datos enriquecidos -
/api/repeater- Estado del repetidor y estadísticas - Datos JSON limpios para integración externa
-
- Sistema de actualización
- Actualización automática cada 30 segundos
- Enriquecimiento dinámico desde logs de Direwolf
- Persistencia de datos entre reinicios
- Menor consumo de recursos
- Eliminado Express.js y dependencias pesadas
- Servidor HTTP nativo más eficiente
- Sin WebSocket ni Socket.IO innecesarios
- Ideal para dispositivos embebidos y servidores 24/7
- Código más limpio
- Arquitectura simplificada y modular
- Separación clara entre backend y frontend
- Mantenimiento más sencillo
- Fix APRS Posiciones Reales
- Corregido parser para mostrar coordenadas reales transmitidas
- Eliminado uso de coordenadas fallback del repetidor
- Parser mejorado de logs Direwolf para obtener coordenadas exactas
- Ahora muestra 11 ubicaciones reales vs 1-2 anteriormente
- Contador de posiciones preciso
- Refleja packets reales recibidos (71) vs posiciones únicas
- Diferenciación entre packets totales y ubicaciones únicas
- Fix audio alertas meteorológicas
- Solucionado problema de audio cortado en repeticiones
- Sistema de fallback secuencial mejorado
- Eliminado truncamiento que solo reproducía primer fragmento
- Eliminación de falsos positivos DTMF
- Removido
playTone(400, 200, 0.5)dehandleUnknownCommand()que causaba feedback - Fix crítico: El tono de "comando desconocido" generaba loops de retroalimentación
- Eliminado completamente el problema de detecciones DTMF durante conversaciones
- Sistema ahora diferencia correctamente entre DTMF real y artefactos de voz
- Removido
- Pruebas de estabilidad 24/7
- Sistema operativo durante 27+ horas continuas sin interrupciones
- Zero errores no controlados durante test de estabilidad extendido
- Confirmada capacidad de operación 24/7 en producción
- Monitoreo continuo cada hora durante testing nocturno
- Contenedorización Docker para despliegue fácil
- Métricas Prometheus para monitoreo avanzado
- API GraphQL para consultas flexibles
- Multi-repetidora con sincronización
- App móvil nativa con React Native
- Integración LoRa para enlaces remotos
- Machine Learning para predicción de tráfico
- Clustering para alta disponibilidad
Desarrollado por: LU5MCD
- 📧 Email: fokerone@gmail.com
- 🌐 GitHub: https://github.com/fokerone/vx200RPTController
- 📻 QRZ: https://www.qrz.com/db/LU5MCD
- dtmf-detection-stream: Excelente librería para detección DTMF
- Direwolf: Software TNC indispensable para APRS
- Bootstrap 5: Framework CSS moderno y responsive
- Leaflet.js: Biblioteca de mapas interactivos ligera y potente
Este proyecto está bajo la Licencia MIT. Ver archivo LICENSE para más detalles.
✨ VX200 Controller v2.9.1 - Mejoras Críticas en Alertas Meteorológicas TTS 📡🎙️