Saltar al contenido
Elausys

HyperVisu / Integraciones

Integración TCP/UDP

Controle equipos AV y dispositivos personalizados con tramas de comandos directas por TCP o UDP: plantillas, patrones de coincidencia y sondeo.

elausys · 21 agosto 2026
En esta página

Integración TCP/UDP

El protocolo TCP/UDP está pensado para dispositivos que utilizan un lenguaje de comandos sencillo directamente sobre un socket de red, sin API web ni modelo de registros: reproductores y matrices de audio profesionales (AUDAC XMP44 y módulos SourceCon), proyectores (PJLink), pantallas y amplificadores detrás de pasarelas RS-232 a IP, y placas de microcontroladores personalizadas. Usted define las tramas de comandos que HyperVisu envía al cambiar un valor, los patrones que extraen valores de las tramas de respuesta que devuelve el equipo y las tramas de consulta opcionales para el sondeo. Toda la lógica específica del equipo se gestiona en la configuración, sin requerir adaptaciones en el servidor.

Cada conexión corresponde a un dispositivo, ya sea mediante TCP (una única conexión persistente, mantenida abierta y reconectada automáticamente) o UDP (datagramas). En TCP, todos los objetos del dispositivo comparten ese único socket, lo cual es imprescindible para equipos que solo admiten un cliente simultáneo (como el XMP44).

Requisitos previos: la dirección IP y el puerto del dispositivo, su manual de comandos (sintaxis de tramas, delimitador, comandos y respuestas de estado) y determinar si envía cambios de estado de forma autónoma o requiere sondeo.

Conexiones. TCP/UDP admite múltiples conexiones: una conexión por dispositivo (consulte «Conexiones»). Campos:

CampoDescripción
Dirección del dispositivoDirección IP o nombre de host del dispositivo.
PuertoEl puerto TCP o UDP en el que escucha el dispositivo (AUDAC XMP44: 5001).
Intervalo de sondeo (segundos)Frecuencia de lectura del dispositivo. 0 para un dispositivo que envía su estado de forma autónoma.
TransporteTCP · conexión persistente o UDP · datagramas.
Delimitador de tramaCarácter o secuencia que separa dos tramas; \r\n en la mayoría de protocolos de texto.
Codificación de la carga útilTexto ASCII para protocolos de texto, Bytes HEX para protocolos binarios.
Puerto de escuchaSolo UDP. Para dispositivos que envían datos a un puerto fijo; si se deja vacío, las respuestas se reciben en el puerto de origen del servidor.
Trama de latido / CadaSolo TCP, opcional. Trama enviada durante la inactividad para evitar que el dispositivo cierre la conexión (mínimo cada 5 s); la vista previa de Trama enviada muestra los caracteres de control.
Tiempo de espera de conexiónTiempo máximo de espera para que el dispositivo acepte la conexión (ms, por defecto 5000).
Retardo entre comandosMuchos dispositivos descartan comandos consecutivos muy rápidos; aumente este valor si se ignoran comandos (ms, por defecto 50).
Leer todo al conectarActivado: HyperVisu envía todas las consultas una vez tan pronto como el dispositivo responde, mostrando el estado real en la aplicación sin esperar al primer ciclo de sondeo.

La ventana Añadir conexión solicita el Nombre de la instancia, la Dirección del dispositivo, el Puerto, el Intervalo de sondeo (segundos), el Transporte y el Delimitador de trama (valores predeterminados 30, TCP · conexión persistente y \r\n). El resto de campos se encuentra en Tramas y temporización dentro de la conexión guardada: seleccione la nueva conexión, ajuste los parámetros y haga clic en Guardar conexión.

El botón Probar en la ventana Añadir conexión abre un socket hacia la dirección introducida. Esto confirma que el dispositivo es accesible, no que entienda la sintaxis de las tramas. En una conexión ya guardada, mientras el servicio mantiene abierta la única conexión del dispositivo, Probar informa del estado en tiempo real y del recuento de tramas entrantes y salientes sin abrir un segundo socket.

Editor de conexión TCP/UDP.

Vinculación de un objeto (consulte «Vinculación TCP/UDP» más abajo). Para cada objeto se define una Clave (Key): un texto breve que contienen todas las respuestas asociadas a este valor. Solo las tramas entrantes que contengan dicha clave se evaluarán con el patrón de coincidencia del objeto (en AUDAC, el identificador de respuesta: OG1, FREQ2). La comprobación distingue mayúsculas de minúsculas y la clave no puede contener :. Dos objetos pueden compartir la misma clave, por ejemplo un objeto de comando y su objeto de estado. La interfaz almacena <conexión>:<clave>. El resto corresponde a la cadena de tipo de datos del objeto, generada a partir de los campos del editor:

CampoAlmacenado comoSignificado
Codificación de la carga útilASCII / HEXPrimer elemento de la cadena. No modifica el formato de envío ni de recepción: la codificación efectiva se define en la conexión, dentro de Tramas y temporización.
Plantilla de comandoSEND=Trama enviada al cambiar el valor (objetos Salida y Entrada/Salida). ${value} se sustituye por el valor.
Comandos distintos para ON y OFF → Comando para ON / Comando para OFFSEND1= / SEND0=Para objetos booleanos cuyos dispositivos utilizan dos comandos independientes (SPPLAY1 / SPSTOP1) en lugar de un único comando con argumento 0/1. Deje OFF vacío para pulsadores.
Plantilla de consultaPOLL=Enviada en cada ciclo de sondeo y una vez al conectar (objetos Entrada y Entrada/Salida). Dejar vacío si el dispositivo envía datos de forma autónoma.
Patrón de coincidenciaMATCH=Aplicado a cada trama entrante que contenga la clave; el valor capturado se asigna al objeto. Sin este patrón, un objeto de entrada nunca recibirá valores.
Escala / OffsetSCALE= / OFFSET=Lectura: valor = bruto × escala + offset; la escritura aplica la operación inversa. Solo para capturas numéricas.
Patrón de confirmación / Tiempo de espera de confirmación (ms)ACK= / ACKTIMEOUT=Opcional. Si se define, la escritura solo se considera correcta cuando una trama entrante coincide con el patrón dentro del tiempo límite (por defecto 2000 ms).

Las plantillas admiten ${value}, así como ${value:d} para redondear un valor escalado a un número entero (un control deslizante de 0–100 % en un dispositivo que requiere enteros), ${value:02d} para rellenar con ceros a la izquierda y ${value:1f} para un número fijo de decimales; en modo HEX se dispone de ${value:u8}, ${value:u16be}, ${value:u16le}, ${value:u32be} y ${value:u32le} para bytes de longitud fija. \r, \n, \t y \xNN son secuencias de escape de bytes. En modo ASCII, si una plantilla no incluye el delimitador, este se añade automáticamente.

Los patrones de coincidencia utilizan los siguientes identificadores; cualquier otro carácter se evalúa de forma literal:

IdentificadorCaptura / función
\vun número
\hvalor hexadecimal, interpretado como número
\atexto, hasta el siguiente carácter literal del patrón
\iTexto\iomite la cadena "Texto"
\sNomite N caracteres
\d \w \.un dígito / una palabra / cualquier carácter

El editor muestra la Trama enviada visualizando los caracteres de control (# | D001 | hv | SOG1 | 28 | U | <CR><LF>), junto con la cadena resultante guardada. La Trama enviada es una vista previa de prueba, no un registro de tráfico: cualquier ${value…} se sustituye por el valor de muestra 28, sin aplicar el formato ni el escalado, y en objetos con comandos ON/OFF independientes solo se muestra el comando ON. Tampoco incluye el delimitador que el servidor añade automáticamente en modo ASCII. Compruebe siempre el formato real con el dispositivo.

Editor de objetos TCP/UDP para ganancia de audio.

Comportamiento del sistema

  • Dirección. Los objetos de Entrada procesan patrones (y realizan sondeo si tienen plantilla de consulta); los de Salida envían tramas; los de Entrada/Salida realizan ambas funciones (la respuesta de confirmación del dispositivo actualiza el estado, de forma análoga a los objetos de estado en KNX).
  • Una trama para múltiples objetos. Cada trama recibida se comprueba con todos los objetos de entrada de la conexión que contengan su clave, lo que permite actualizar varios objetos con una sola trama. Las plantillas de consulta idénticas se envían una única vez por ciclo de sondeo.
  • TCP. Tras un error de comunicación, la reconexión se realiza con intervalos crecientes; al restablecer la conexión, se relanzan las consultas si Leer todo al conectar está activo. Las tramas salientes se gestionan mediante una cola respetando el Retardo entre comandos.
  • UDP. Cada datagrama equivale a una trama. Los envíos no solicitados requieren configurar el Puerto de escucha.
  • Los comandos enviados mientras el dispositivo no está disponible fallan sin bloquear el sistema; la aplicación mantiene el último estado registrado.

Ejemplo práctico: reproductor multimedia AUDAC XMP44

El XMP44 escucha en el puerto TCP 5001, admite un solo cliente y utiliza tramas con la estructura # | D001 | <origen> | <comando> | <argumento> | <checksum> | <CR><LF> (se acepta el carácter literal U como suma de control). El ajuste de ganancia se realiza mediante SOG1 | <arg> con arg = 8 − dB; el equipo responde con una trama de estado … | OG1 | <arg> | …, que también emite automáticamente al modificar la ganancia desde el panel frontal. La reproducción y parada emplean dos comandos independientes (SPPLAY1, SPSTOP1).

  1. Cree una conexión TCP/UDP (consulte «Conexiones»): dirección 192.168.1.60, puerto 5001, transporte TCP, delimitador \r\n, intervalo de sondeo 30. Haga clic en Probar y después en Crear conexión. Seleccione la conexión creada y, en Tramas y temporización, mantenga activado Leer todo al conectar y configure la trama de latido # | D001 | hv | GTPS | 0 | U | \r\n cada 120 s. Haga clic en Guardar conexión.

  2. En Dispositivos, añada un widget de Audio «Reproductor XMP44» y seleccione esta conexión en Protocolo.

  3. En el objeto volumen (Entrada/Salida): clave OG1, plantilla de comando # | D001 | hv | SOG1 | ${value:d} | U | \r\n, plantilla de consulta # | D001 | hv | GOG1 | 0 | U | \r\n, patrón de coincidencia \i | OG1 | \i\v, escala -1, offset 8 (de este modo, −20 dB se envía como 28 y un valor recibido de 28 se interpreta como −20 dB).

  4. En el objeto reproducción (Salida, booleano): clave PLAY1, active Comandos distintos para ON y OFF: ON # | D001 | hv | SPPLAY1 | 0 | U | \r\n, OFF # | D001 | hv | SPSTOP1 | 0 | U | \r\n.

  5. En el objeto título de pista (Entrada, texto): clave SON1, consulta # | D001 | hv | GSON1 | 0 | U | \r\n, patrón \i | SON1 | \i\a | .

  6. Haga clic en Guardar objeto en cada uno de ellos, pulse Aplicar cambios en la barra lateral y confirme. Al mover el regulador de volumen se envía SOG1, la respuesta OG1 confirma el nivel en la interfaz y cualquier cambio físico en el panel frontal se actualiza en la aplicación.

💡 Consejo: Mantenga a mano la tabla de comandos del dispositivo: la clave corresponde al identificador de respuesta (OG1), que en AUDAC difiere del comando de control (SOG1).

Vinculación TCP/UDP

Los objetos TCP/UDP se configuran en el diálogo de ajustes del objeto (consulte «Ajustes de objetos, registro y notificaciones»). Secciones disponibles:

Direccionamiento de trama

CampoDescripción
ClaveTexto identificativo presente en cada respuesta asociada a este objeto (ej. OG1). Solo las tramas que incluyan esta clave se evaluarán con el patrón de coincidencia; distingue mayúsculas de minúsculas. No admite :. La clave puede ser compartida entre objetos, como un comando y su estado correspondiente. La dirección guardada es <conexión>:<clave>.
Codificación de la carga útilTexto ASCII para protocolos de texto, Bytes HEX para binarios.

Comandos enviados (objetos de salida)

CampoDescripción
Plantilla de comandoEnviada al cambiar el valor. ${value} se sustituye por el valor (${value:d} redondea a entero); \r, \n, \xNN son secuencias de escape.
Comandos distintos para ON y OFFObjetos booleanos: habilita Comando para ON y Comando para OFF en equipos con comandos independientes en lugar de parámetros 0/1. Deje OFF vacío para pulsadores.
Patrón de confirmación / Tiempo de espera (ms)Opcional. Si se define, la escritura solo se da por correcta cuando se recibe una trama que coincide con el patrón dentro del tiempo configurado.

Valores leídos (objetos de entrada)

CampoDescripción
Plantilla de consultaEnviada en cada sondeo y al conectar. Dejar en blanco si el dispositivo transmite cambios de forma autónoma.
Patrón de coincidenciaEvaluado en cada trama recibida que contenga la clave; extrae el valor del objeto. Identificadores: \v número · \h hex a número · \a texto hasta el siguiente literal · \iTexto\i salta "Texto" · \sN salta N caracteres · \d \w \. dígito / palabra / cualquier carácter. Sin patrón de coincidencia, el objeto no recibe datos.
Escala / OffsetLectura: valor = bruto × escala + offset; la escritura aplica el cálculo inverso.

Debajo de las secciones, Trama enviada muestra la trama resultante de prueba con los caracteres de control visibles (… | 28 | U | <CR><LF>), y Almacenado como detalla la cadena de configuración guardada. Las reglas de sintaxis de patrones, plantillas y el ejemplo práctico de AUDAC se detallan en la sección superior.

Configuración de objeto TCP/UDP para ganancia de audio.

Preguntas frecuentes

¿Abre HyperVisu un socket TCP independiente para cada objeto?

No. Todos los objetos asociados a un dispositivo comparten un único socket TCP persistente, permitiendo la integración con equipos que solo aceptan un cliente simultáneo.

¿Por qué un objeto de entrada no recibe nunca ningún valor?

Su clave debe figurar en la trama de respuesta recibida y debe contar con un patrón de coincidencia para extraer el dato. Compruebe ambos elementos con la tabla de comandos del dispositivo.

¿Cómo se configura un dispositivo que envía su estado de forma autónoma?

Establezca el intervalo de sondeo en 0 y deje vacías las consultas innecesarias. Para transmisiones UDP no solicitadas, defina el puerto de escucha.

¿Por qué se ignoran algunos comandos?

Compruebe la estructura de la trama en la vista previa de Trama enviada, teniendo en cuenta que muestra un valor de muestra. Aumente el retardo entre comandos si el equipo descarta peticiones consecutivas.

¿Qué función realiza el botón Probar si la conexión TCP ya está establecida?

Informa del estado actual de la conexión activa en lugar de intentar abrir un segundo socket que el dispositivo podría rechazar.

Seguir explorando

Encuentre las demás guías de este producto en la documentación.

Volver a Integraciones