Integración BACnet/IP
BACnet/IP (ASHRAE 135) es el protocolo estándar para climatización terciaria: unidades de tratamiento de aire (UTA), cajas VAV, enfriadoras, controladores de bombas de calor, contadores de energía y sistemas de gestión de edificios (BMS). HyperVisu lee y escribe los objetos de los dispositivos BACnet (una entrada analógica para una temperatura, un valor analógico para una consigna, un valor binario para una habilitación o un valor multiestado para la velocidad de un ventilador) mediante UDP en la red local. Los valores se reciben mediante suscripción por cambio de valor (COV) si el dispositivo lo admite, y mediante polling en los demás casos; la selección se realiza de forma automática por cada objeto.
Requisitos: tener activado el servicio BACnet/IP (consulte «Servicios y protocolos»), la dirección IP del dispositivo (o la dirección del router BACnet que lo precede), su puerto UDP (estándar 47808), opcionalmente su instancia de dispositivo y los objetos deseados (tipo e instancia), o bien localizarlos mediante el escaneo de red y el selector de objetos.
Conexiones. BACnet/IP admite múltiples conexiones: una conexión por dispositivo BACnet (consulte «Conexiones»). El servidor abre un único socket UDP para todas ellas. Campos:
| Campo | Descripción |
|---|---|
| Dirección del dispositivo | Dirección IP del dispositivo BACnet o del router que lo precede. |
| Puerto | El puerto UDP en el que escucha el dispositivo (estándar 47808). |
| Instancia del dispositivo | La instancia del objeto de dispositivo BACnet (0–4194302). Déjelo vacío para omitir la comprobación; si se define y un dispositivo responde con otra instancia, se indicará como incorrecto. |
| Duración de la suscripción COV | Tiempo de validez de una suscripción por cambio de valor antes de renovarse. Déjelo vacío para usar el valor predeterminado del servicio (600 s). |
| Intervalo de polling (segundos) | Frecuencia de relectura de los puntos sin suscripción COV (valor predeterminado: 30 s). Al ser COV la vía rápida, es habitual utilizar aquí un polling lento. |
Creación de la conexión. En Añadir conexión, seleccione la tarjeta BACnet e introduzca un Nombre de instancia y la Dirección del dispositivo; el Puerto y la Instancia del dispositivo son opcionales (un puerto vacío corresponde al estándar 47808). El cuadro de diálogo no incluye escaneo de red y no permite crear una conexión sin dirección: si aún no conoce la dirección, introduzca una provisional y corríjala posteriormente con el escaneo. Haga clic en Crear conexión; la nueva conexión se abrirá en su pantalla de configuración.
Escanear red. El escaneo solo está disponible en una conexión guardada. Junto a Punto de conexión, haga clic en Escanear red. El cuadro de diálogo Dispositivos BACnet en la red envía un Who-Is por difusión (broadcast) y lista todos los dispositivos que han respondido (Dispositivo 192.168.1.255) si las difusiones están filtradas entre VLANs, o un dispositivo concreto (192.168.1.70:47808) para consultarlo directamente (la única forma de alcanzar un dispositivo con un puerto no estándar). Escanear de nuevo repite el proceso; el último resultado se conserva mientras el cuadro de diálogo permanezca cerrado.
📘 Nota: Ya configurado indica que una conexión ya apunta a ese dispositivo, ya sea por dirección y puerto o por instancia de dispositivo. La conexión que está editando se incluye en la comprobación, por lo que su propio controlador puede mostrar esta indicación.
Probar envía un Who-Is dirigido al dispositivo y comprueba la respuesta, incluida la instancia del dispositivo si se ha configurado. El resultado indica la instancia de dispositivo que ha respondido; si responde un dispositivo incorrecto, la prueba falla y muestra ambas instancias. En el cuadro de diálogo Añadir conexión, Probar verifica los valores introducidos. En una conexión guardada, comprueba los valores guardados y no los campos aún sin guardar: haga clic primero en Guardar conexión y luego en Probar.

Vinculación de un objeto (consulte «Vinculación BACnet/IP» más abajo). Para cada objeto se selecciona el Tipo de objeto y el Número de instancia; la administración almacena la dirección como <conexión>:<tipo>:<instancia>, por ejemplo 5:AV:12 (Analog Value 12 en la conexión 5). Tipos de objetos:
| Tipo | Objeto BACnet | Valor | Notas |
|---|---|---|---|
AI / AO / AV | Entrada / salida / valor analógico | Número | AO admite comandos. |
BI / BO / BV | Entrada / salida / valor binario | 0/1 | BO admite comandos. |
MSI / MSO / MSV | Entrada / salida / valor multiestado | Número entero, a partir de 1 | MSO admite comandos. |
La cadena del tipo de datos del objeto contiene las opciones ofrecidas por el editor: [TYPE][:PROP=<id>][:PRIORITY=<1-16>][:COV=AUTO | Y | N][:SCALE=<f>][:OFFSET=<f>]:
| Campo | Guardado como | Significado |
|---|---|---|
| Tipo de valor | REAL / BOOL / UINT / INT / ENUM | El tipo de datos BACnet utilizado en la escritura. Déjelo en Automático (se deduce del tipo de objeto) a menos que acceda a una propiedad poco habitual. |
| Identificador de propiedad | PROP= | 85 corresponde a present-value, que es el requerido en casi todas las vinculaciones. Modifíquelo solo para propiedades específicas del fabricante. |
| Escala / Offset | SCALE= / OFFSET= | En lectura: valor = bruto × escala + offset; la escritura aplica la operación inversa. Se ejecuta dentro del protocolo, antes de cualquier transformación en el objeto (consulte «Transformaciones de valor y estado») — no aplique el escalado en ambos sitios. |
| Suscripción por cambio de valor | COV= | Automático: suscribirse y recurrir a polling si se rechaza (predeterminado). Requerido: avisar si el dispositivo la rechaza. Nunca: usar siempre polling. Una suscripción solo reporta la propiedad 85 (present-value); con cualquier otra propiedad se aplica polling. Se muestra bajo Cómo se reciben las actualizaciones, en objetos de lectura. |
| Prioridad de escritura | PRIORITY= | Prioridad de comando BACnet 1–16 para objetos con comando. Déjelo vacío para no enviar ninguna, lo que el dispositivo interpreta como 16. Se muestra bajo Control por comandos, en objetos de escritura. |
📘 Nota: Los valores multiestado BACnet comienzan en 1, mientras que los modos de HyperVisu comienzan en 0. Configure el offset en
-1en una vinculación multiestado a menos que el dispositivo esté realmente basado en 0; el editor se lo recordará. Los números brutos basados en 1 se conservan deliberadamente para coincidir con lo mostrado en YABE o en el BMS.
Selector de objetos. Con la conexión activa, el editor lista los Objetos en este dispositivo: la lista de objetos propia del dispositivo con nombre, tipo e instancia, valor actual y unidad (p. ej., AI:0 · SupplyAirTemp · 21.5 °C). Utilice Buscar un objeto para filtrar por nombre, descripción o AV:12, haga clic en una fila para rellenar tipo e instancia (y Unidades, si el campo está vacío y el controlador reporta una unidad), y Releer para actualizar. La lista de objetos se conserva durante un minuto; Releer fuerza una lectura nueva. El tipo y la instancia permanecen editables: si la lista muestra Lista de objetos no disponible o el dispositivo no admite la enumeración, el punto se puede vincular manualmente.

Detalles de funcionamiento relevantes
- COV prioritario, polling como respaldo. Los puntos suscritos son reportados por el dispositivo a medida que cambian y se excluyen del ciclo de polling; la suscripción se renueva antes de expirar. Si un dispositivo rechaza la suscripción, se consulta mediante polling. Un polling lento de verificación (cada 10 intervalos de polling) lee periódicamente los puntos suscritos para recuperar suscripciones canceladas silenciosamente tras el reinicio de un dispositivo.
- Polling agrupado. Las solicitudes se agrupan (varias propiedades por petición) y pasan a lecturas individuales por propiedad en dispositivos que no admiten agrupación.
- Confirmación de escritura. Tras una escritura, un punto sin suscripción COV activa muestra el valor escrito inmediatamente en lugar de revertirse hasta el siguiente polling; con COV, la propia notificación del dispositivo confirma el cambio.
- Estado. Al ser UDP un protocolo sin conexión, up significa «ha respondido recientemente» (dentro del doble del intervalo de polling, mínimo 90 s) y down indica ausencia de respuesta; si un dispositivo deja de responder, se reintentan las consultas (cada 30 s tras cinco fallos de polling) y vuelve automáticamente a up al responder.
- Matrices de prioridad (Priority Arrays). Un objeto que admite comandos gestiona 16 niveles de prioridad. Si un BMS escribe con un número de prioridad inferior (mayor prioridad), anulará los comandos de HyperVisu y el dispositivo parecerá ignorar el widget; el editor lo advierte en los tipos con comando. La Prioridad de escritura permite ajustar este comportamiento.
Vinculaciones habituales: un interruptor en BV/BO; un regulador o posición de persiana en AV/AO (0–100); la temperatura de un termostato en AI (Entrada), su consigna en AV (Entrada/Salida) y su modo en MSV con offset -1; un contador en AI con la escala correspondiente a la unidad del equipo; una velocidad de ventilador en MSV/MSO con offset -1.
Ejemplo práctico: controlador de una unidad de tratamiento de aire (UTA)
El controlador es el dispositivo BACnet 1234 en 192.168.1.70:47808 con temperatura de impulsión AI:0, consigna AV:1, habilitación BV:2 y velocidad de ventilador MSV:3 (1–4).
- Active BACnet/IP en Servicios (consulte «Servicios y protocolos»).
- Cree una conexión BACnet (consulte «Conexiones»): en Añadir conexión, introduzca la Dirección del dispositivo
192.168.1.70y haga clic en Crear conexión. En la conexión guardada, haga clic en Escanear red, seleccione Dispositivo 1234 y haga clic en Usar este dispositivo; mantenga el intervalo de polling en30. Haga clic en Guardar conexión y luego en Probar: el resultado confirmará la instancia de dispositivo 1234. - En Dispositivos, añada una Entrada analógica «UTA Aire de impulsión» y seleccione su conexión BACnet en Protocolo; en su objeto de valor, seleccione
AI:0desde el selector de objetos. - Añada una Salida analógica «UTA Consigna»: objeto
AV:1, dirección In/Out, tipo de valor Automático. - Añada un Interruptor «UTA Habilitación»: objeto
BV:2. - Añada un dispositivo de Salida analógica llamado «UTA-2 Velocidad ventilador» para el control del ventilador: vincule su objeto de valor a
MSV:3con offset-1(los estados BACnet 1–4 se convierten en 0–3). Un objeto multiestado requiere un widget numérico; el widget de Ventilación gestiona sus velocidades mediante objetos on/off independientes, por lo que no admite valores multiestado directos. - Haga clic en Guardar objeto en cada elemento, luego pulse Aplicar cambios en la barra lateral y confirme. La temperatura de impulsión se actualizará por COV conforme cambie; los demás objetos seguirán el polling o su propia suscripción.
Vinculación BACnet/IP
Los objetos BACnet se configuran en el cuadro de diálogo de ajustes del objeto (consulte «Ajustes de objetos, registro y notificaciones»). Las tarjetas disponibles son:
Objeto BACnet
| Campo | Descripción |
|---|---|
| Objetos en este dispositivo | Lista de objetos del propio dispositivo (AI:0 · nombre · valor actual unidad) con Buscar un objeto (nombre, descripción o AV:12) y Releer. Haga clic en una fila para rellenar los dos campos inferiores. Se muestra si la conexión está habilitada y el servicio BACnet/IP está en ejecución; de lo contrario, introduzca el tipo y la instancia manualmente. |
| Tipo de objeto | Entrada / salida / valor analógico (AI/AO/AV), Entrada / salida / valor binario (BI/BO/BV), Entrada / salida / valor multiestado (MSI/MSO/MSV). |
| Número de instancia | La instancia del objeto en el dispositivo (0–4194302). La dirección guardada es <conexión>:<tipo>:<instancia>, p. ej. 5:AV:12. |
Valor y escalado
| Campo | Descripción |
|---|---|
| Tipo de valor | Automático (deducido del tipo de objeto: REAL para analógico, ENUM para binario, UINT para multiestado) o un tipo explícito REAL / BOOL / UINT / INT / ENUM, utilizado en la escritura. |
| Identificador de propiedad | 85 corresponde a present-value y es el utilizado habitualmente. Modifíquelo solo para propiedades específicas de fabricante. |
| Escala / Offset | valor = bruto × escala + offset en lectura; operación inversa en escritura. Se ejecuta dentro del protocolo, antes de cualquier transformación en este objeto (consulte «Transformaciones de valor y estado») — no escale en ambos apartados. En objetos multiestado el editor recuerda aplicar un offset de -1 (los estados BACnet inician en 1, los modos de HyperVisu en 0). |
Cómo se reciben las actualizaciones
| Campo | Descripción |
|---|---|
| Suscripción por cambio de valor | Automático: suscribirse y recurrir a polling (predeterminado), Requerido: avisar si el dispositivo la rechaza o Nunca: usar siempre polling. Las suscripciones solo informan del present-value, por lo que una vinculación a otra propiedad utilizará polling. |
Control por comandos (tipos de objeto con comando)
| Campo | Descripción |
|---|---|
| Prioridad de escritura | Prioridad de comando BACnet 1–16. Déjelo vacío para no enviar ninguna (el dispositivo asumirá 16). Si otro sistema escribe con una prioridad más baja (más prioritaria), anulará a HyperVisu y el dispositivo parecerá ignorar el widget. |
Los tipos de objetos, la estructura de la cadena de datos y un ejemplo completo se detallan en el apartado BACnet/IP anterior.
