Skip to content

fokerone/vx200RPTController

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VX200 Controller

📡 Sistema de Control para Repetidora Headless v2.10.0

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

📅 Novedades v2.10.0 (Octubre 2025)

  • 🍓 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

📅 Novedades v2.9.1 (Septiembre 2025)

  • 🎙️ 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

📅 Novedades v2.9.0 (Septiembre 2025)

  • ⚙️ 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

📅 Novedades v2.8.0 (Agosto 2025)

  • 🎙️ 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

📅 Novedades v2.7.0 (Agosto 2025)

  • 🖥️ 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/positions y /api/repeater para integración externa

🗺️ Nuevo Mapa APRS Interactivo

  • 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

📅 Novedades v2.6.2 (Agosto 2025)

  • 📍 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

✨ Características Principales

🖥️ Sistema Headless

  • 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

🎵 Sistema de Audio Avanzado

  • 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

🎙️ Sistema TTS Híbrido Avanzado

  • 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

📡 Sistema APRS Completo con Análisis de Cobertura

  • 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

🗺️ Mapa APRS Interactivo Moderno

  • 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

📺 Display OLED MMDVM (Raspberry Pi 3)

El sistema integra soporte completo para el display OLED SSD1306 128x64 del MMDVM HAT.

Características del Display

  • 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

Pantallas Disponibles

# 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

Pantalla TX (Transmisión)

  • 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

Configuración Técnica

// En src/index.js.pi
const OLEDDisplay = require('./display/OLEDDisplay');
this.oledDisplay = new OLEDDisplay({
    width: 128,
    height: 64,
    address: 0x3C,
    device: '/dev/i2c-1'
});

🔊 Sistema de Módulos

  • 🔊 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 (*4 actual, *5 voz)
  • 🌦️ Weather Alerts: Sistema de alertas SMN Argentina (*7 consultar, *0 forzar verificación)
  • 🌋 INPRES Sísmico: Monitoreo de sismos INPRES (*3 consultar sismos del día)

🌋 Sistema de Monitoreo Sísmico INPRES

  • 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

🌦️ Sistema de Alertas Meteorológicas SMN

  • 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

🚀 Instalación y Configuración

Prerrequisitos

  • 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)

Instalación Rápida

# 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

Configuración de Audio

# 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

Configuración APRS (Opcional)

# 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

🍓 Instalación en Raspberry Pi 3

El sistema está completamente optimizado para ejecutarse en Raspberry Pi 3B con MMDVM HAT.

Hardware Requerido

  • 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

Opción 1: Script de Instalación Automatizada desde Arch Linux

# 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

Opción 2: Instalación Manual en 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 start

Configuración Post-Instalación

Consulta 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

Detección Automática de Audio

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

⚙️ Configuración

Variables de Entorno (.env)

# 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

🎛️ Comandos DTMF

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

📁 Estructura del Proyecto

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

🗺️ Mapa APRS v2.7.0

Características del Mapa

  • 🎯 URL: http://localhost:3000
  • 📱 Responsive: Optimizado para móviles y tablets
  • 🔄 Auto-actualización: Datos frescos cada 30 segundos
  • 📊 APIs REST: /api/positions y /api/repeater

Funcionalidades Destacadas

  • 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

Datos Enriquecidos

  • 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

🔧 Scripts Disponibles

# Iniciar sistema headless completo
npm start

# Modo desarrollo
npm run dev

# Test de salud del sistema
npm run health

🛠️ Características Técnicas v2.7.0

Sistema Headless

  • 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 Profesional

  • 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

APRS Integration

  • 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

Web Architecture

  • HTTP Server nativo: Sin frameworks pesados
  • Bootstrap 5: CSS framework moderno
  • Leaflet.js: Mapas interactivos suaves
  • Canvas Charts: Gráficos de altitud dinámicos

🐛 Troubleshooting

Audio No Funciona

# Verificar dispositivos
aplay -l && arecord -l

# Permisos de audio
sudo usermod -a -G audio $USER

# Configurar device en .env
AUDIO_DEVICE=default

DTMF No Detecta

# 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

APRS No Conecta

# Verificar Direwolf
direwolf -t 0

# Verificar configuración TNC
ps aux | grep direwolf

Mapa APRS No Carga

# Verificar puerto disponible
curl http://localhost:3000

# Verificar logs del servidor
npm start  # Ver logs en consola

📋 Changelog

v2.10.0 - Optimización Raspberry Pi 3 y Display OLED 🍓📺

🍓 Soporte Completo para Raspberry Pi 3

  • 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.sh para 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
  • Documentación completa
    • Guía detallada GUIA-CONFIGURACION.md
    • Instrucciones de configuración post-instalación
    • Troubleshooting específico para Raspberry Pi

📺 Integración Display OLED MMDVM

  • Soporte completo SSD1306 128x64
    • Implementación driver I2C (dirección 0x3C)
    • Clase OLEDDisplay con 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

🔊 Fix Crítico Baliza BBC Pips

  • 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() y generateSilenceBuffer()
    • 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

📊 Fix Contador APRS

  • Corrección contador beacons en OLED
    • Cambiado de propiedad inexistente beaconCount a stats.beaconsSent
    • Contador ahora refleja beacons realmente transmitidos
    • Incremento correcto en cada transmisión
    • Visualización precisa en pantalla APRS del display

🎵 Detección Audio Inteligente

  • AudioDeviceDetector implementado
    • Detección automática de dispositivos de captura y reproducción
    • Parsing de salida arecord -l y aplay -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

🛠️ Mejoras Adicionales

  • 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.pi para Raspberry Pi
    • Módulo src/display/OLEDDisplay.js para display OLED
    • Módulo src/audio/audioDeviceDetector.js para detección audio
    • Scripts de instalación en directorio raíz

v2.9.1 - Mejoras Críticas en Alertas Meteorológicas TTS 🎙️

🎙️ Sistema de Alertas Meteorológicas Mejorado

  • 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

v2.9.0 - Sistema Configuración Híbrido y Baliza BBC Pips ⚙️🔊

⚙️ Sistema de Configuración Híbrido Implementado

  • 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

🔊 Baliza BBC Pips Estándar Implementada

  • 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

🧹 Limpieza y Mantenimiento

  • 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

v2.8.0 - Sistema TTS Híbrido y Mejoras de Estabilidad 🎙️

🎙️ Sistema TTS Híbrido Avanzado

  • 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

🔀 Lógica Simplex Completa Implementada

  • 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

🗺️ Mejoras Mapa APRS

  • 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

📡 DuckDNS Completamente Funcional

  • 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

v2.7.0 - Sistema Headless con Mapa APRS Completo 🖥️

🚀 Transformación Headless

  • 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

🗺️ Mapa APRS Interactivo Avanzado

  • 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

📊 APIs REST y Actualización Automática

  • 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

🎯 Optimizaciones de Rendimiento

  • 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

v2.6.2 - Fix APRS Posiciones y Alertas Meteorológicas Completas 📍

🔧 Correcciones Críticas

  • 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

v2.6.1 - Fix DTMF Anti-Falsos Positivos y Estabilidad 24/7 🔇

🔧 Correcciones Críticas

  • Eliminación de falsos positivos DTMF
    • Removido playTone(400, 200, 0.5) de handleUnknownCommand() 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
  • 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

🎯 Próximas Versiones

v2.9 - Planificado

  • Contenedorización Docker para despliegue fácil
  • Métricas Prometheus para monitoreo avanzado
  • API GraphQL para consultas flexibles
  • Multi-repetidora con sincronización

v3.0 - Futuro

  • 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

📞 Soporte y Contacto

Desarrollado por: LU5MCD


🏆 Reconocimientos

  • 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

📄 Licencia

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 📡🎙️

About

Controlador para repetidora Simplex experimental

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •