Alertas y notificaciones
Alertas
Gestor de alertas ▸ Alertas lista las alertas que generaron tus reglas: lo que está activo ahora mismo, las resueltas o ambas. Abrir en Mirox
Cada alerta muestra su nivel, la regla, la planta, el componente (en las reglas juzgadas por componente), el valor y desde cuándo — o desde cuándo hasta cuándo — estuvo activa. Una alerta que llegó durante un silencio aparece marcada como Silenciada.
Una alerta se resuelve sola cuando la condición deja de cumplirse, cuando la regla se desactiva, se modifica de forma que ya no coincide o se elimina. Las alertas resueltas permanecen en la lista como historial.
Reconocer indica a tus compañeros que alguien se está ocupando. No cierra la alerta: eso solo lo hacen los valores de la planta.
Los cambios de reglas y silencios también aparecen en la actividad de tu organización.
A quién se notifica
Cuando se abre una alerta, se notifica a todas las personas de tu organización que tienen acceso a la planta — en la app, por notificación push en la app móvil y por correo, exactamente como cada persona eligió en sus propios ajustes de notificación dentro del grupo Gestor de alertas. Allí cada persona elige los canales y el nivel mínimo desde el que quiere enterarse de estas alertas; por defecto es Normal.
Cuando la alerta se resuelve, las personas notificadas reciben un aviso de resolución. La notificación enlaza directamente a la alerta.
Silencios
Un silencio mantiene alejadas las notificaciones durante un tiempo — por mantenimiento, un problema conocido o una parada planificada. Las alertas coincidentes se siguen abriendo y cerrando y aparecen en la lista marcadas como Silenciada; solo las notificaciones y los receptores permanecen en silencio.
Abre Gestor de alertas ▸ Silencios y haz clic en Nuevo silencio. Abrir en Mirox Elige:
- Regla — una regla o todas las reglas.
- Planta — una planta o todas las plantas.
- Empieza — ahora o en un momento planificado.
- Durante — desde 1 hora hasta 1 año, o Hasta una fecha… para una fecha de fin libre (como máximo un año después del inicio).
- Comentario — el motivo, para que tus compañeros lo sepan.
Un silencio termina solo. Quítalo antes con su botón de eliminar. Los silencios los crean y quitan los Administradores y los Moderadores.
Receptores
Un receptor recibe automáticamente cada alerta de las reglas a las que está asociado — un sistema de tickets, un canal de equipo o un buzón compartido. Las personas no necesitan un receptor; reciben la notificación igualmente según sus propios ajustes.
Abre Gestor de alertas ▸ Receptores y haz clic en Nuevo receptor Abrir en Mirox, y luego asócialo a reglas en Receptores dentro del editor de reglas. Enviar prueba entrega una alerta de ejemplo para que compruebes la conexión.
Correo electrónico
Una lista de direcciones de correo. Cada alerta y su resolución llegan como un correo.
Webhook
Una dirección HTTPS que recibe un POST por cada alerta y su resolución, en uno de estos formatos:
- JSON (firmado) — la alerta completa como JSON, véase más abajo.
- Microsoft Teams, Slack, Discord — un mensaje ya preparado para un webhook entrante de ese servicio. Consulta Conectar Microsoft Teams para saber cómo crear uno.
Al crear un receptor webhook, su secreto de firma se muestra una sola vez. Cada petición lleva la cabecera X-Mirox-Signature: sha256=<hex> — el HMAC-SHA256 del cuerpo bruto de la petición con ese secreto — además de X-Mirox-Timestamp y un X-Mirox-Delivery-Id único. Comprueba la firma antes de fiarte de una petición y usa el id de entrega para ignorar una entrega repetida.
El cuerpo de JSON (firmado):
{
"version": "1",
"status": "firing",
"event_id": "1216448682925686786",
"rule_uid": "A1B2C3D4E5F6",
"rule_name": "Inverter without power",
"rule_version": 3,
"priority": "high",
"park_uid": "0A1B2C3D4E5F",
"park_name": "Plant North",
"instance_key": "inverter_id=7",
"labels": { "inverter_id": "7" },
"component": "Inverter 7",
"metric": "AC power per inverter",
"value": 0.0,
"unit": "W",
"op": "lt",
"threshold": 10.0,
"condition_since": 1791200400,
"title": "[FIRING] Inverter without power — Plant North (Inverter 7)",
"body": "Inverter 7 delivers only 0 W (limit 10 W)",
"link": "https://service.mirox.io/#/alertmanager?tab=alerts&alert=1216448682925686786",
"sent_at": "2026-10-06T09:05:12+00:00"
}
status es firing o resolved; una resolución repite la alerta con el último valor juzgado. condition_since es una marca de tiempo Unix. En versiones posteriores pueden añadirse campos: ignora lo que no conozcas. event_id es una cadena: el identificador es más largo de lo que un número de JavaScript puede representar con exactitud.
Tras repetidos fallos de entrega, un receptor se desactiva y se marca como Desactivado; comprueba la dirección y créalo de nuevo.
Interfaz de indisponibilidad BWE
Comunica las indisponibilidades de sus aerogeneradores a su comercializador directo a través de la interfaz de indisponibilidad BWE. Cada alerta de un aerogenerador se convierte en una indisponibilidad: cuando la alerta se activa empieza, cuando se resuelve termina. Su comercializador directo opera la interfaz y le facilita tres datos: la dirección del servicio web, la dirección del token y el nombre de usuario y la contraseña; introdúzcalos en el receptor. La contraseña se guarda cifrada y no vuelve a mostrarse. Probar el inicio de sesión inicia sesión y muestra cuántas plantas tiene asignadas su cuenta; nunca comunica una indisponibilidad.
- Motivo de la indisponibilidad: un receptor por motivo: MAINTENANCE (averías, mantenimiento, operación manual), ADMINISTRATIVE (órdenes administrativas como ruido o protección de murciélagos y aves), GRID (limitación por el operador de red) o MARKET (limitación por el comercializador). Use GRID y MARKET solo si el origen de la limitación es seguro.
- Capacidad restante comunicada: 0 kW (indisponibilidad total) o el valor de la alerta cuando la regla vigila una métrica de potencia; nunca más que la capacidad instalada registrada por el comercializador.
- Comunicar por adelantado: la interfaz exige una hora de fin, así que una alerta abierta se comunica hasta tantos días por adelantado (30 por defecto); su cierre recorta la indisponibilidad hasta su final real.
Cada aerogenerador se busca en la lista de plantas del comercializador por el número de serie de sus datos maestros; si el número coincide, decide el fabricante. Asocie el receptor a reglas que vigilen aerogeneradores uno por uno: los ejemplos Aerogenerador parado por avería y Aerogenerador limitado por condiciones ambientales están pensados para ello. Un aerogenerador que el comercializador no conoce aparece como entrega fallida del receptor.
Plantillas
Una plantilla define exactamente lo que envía un receptor, para que cada sistema reciba el formato que espera: en un webhook el método (POST, PUT o PATCH), sus propias cabeceras y el cuerpo en JSON, XML, CSV, HTML, texto plano o datos de formulario; en un correo el asunto y el texto (texto plano o su propio HTML). Escribe texto fijo e inserta variables de la alerta, la regla, la planta y el componente. Una plantilla es reutilizable: varios receptores pueden usar la misma y un cambio se aplica a todos a la vez.
Abra Gestor de alertas ▸ Receptores Abrir en Mirox: debajo de los receptores están sus plantillas y los ejemplos para empezar. Usar ejemplo copia uno a su organización; Nueva plantilla empieza vacía. La plantilla se abre en el editor: a la izquierda los ajustes, las cabeceras y el cuerpo; en el centro la lista de variables — un clic inserta la variable en el cursor —; y a la derecha la vista previa en vivo: la petición o el correo exactamente como se enviaría, con la alerta de ejemplo o una de sus alertas recientes, y todos los errores y avisos. Después elija la plantilla para un receptor, al crearlo o con el botón de plantilla de su fila. Sin plantilla, el receptor mantiene su formato integrado.
Las plantillas las crean y modifican los administradores y moderadores; todos los miembros pueden verlas. Una plantilla que usa un receptor no se puede eliminar: elija antes otra para ese receptor.
El lenguaje de las plantillas
| Escriba | Significado |
|---|---|
Variable: {{plant.name}} | el valor, p. ej. el nombre de la planta |
Filtro: {{alert.since|date:"DD.MM.YYYY HH:mm"}} | el valor, formateado |
Sección: {{#alert.firing}}…{{/alert.firing}} | la parte intermedia solo si el valor existe; en una lista, una vez por elemento |
Sección inversa: {{^component.name}}…{{/component.name}} | la parte intermedia solo si el valor está vacío |
Comentario: {{! … }} | nada: una nota para usted |
Llaves literales: \{{ | {{ como texto |
Dentro de una sección de lista están disponibles {{@index}} (desde 0), {{@number}} (desde 1), {{@first}} y {{@last}}; por ejemplo, {{^@last}},{{/@last}} pone una coma entre elementos. Una variable que no existe queda vacía y la vista previa la muestra como aviso. En una plantilla no se ejecuta nada; solo produce texto.
Variables
| Variable | Significado |
|---|---|
{{alert.id}} | ID de la alerta (texto) |
{{alert.status}} | firing (activa) o resolved (resuelta) |
{{alert.firing}} | Verdadero mientras la alerta está activa (úsela como sección) |
{{alert.resolved}} | Verdadero en el aviso de resolución |
{{alert.level}} | Nivel: very_low, low, normal, high, very_high, critical |
{{alert.title}} | El título de una línea |
{{alert.text}} | El mensaje de una línea |
{{alert.summary}} | El resumen propio de la regla, si tiene |
{{alert.value}} | El valor evaluado (el último al resolverse) |
{{alert.value_label}} | El valor con su unidad, como en Mirox |
{{alert.value_kw}} | El valor en kW — solo para una métrica de potencia (W, kW, MW) |
{{alert.unit}} | La unidad de la métrica |
{{alert.threshold}} | El umbral de la regla |
{{alert.threshold_label}} | El umbral con su unidad |
{{alert.threshold_kw}} | El umbral en kW — solo para una métrica de potencia |
{{alert.op}} | Comparación: gt, ge, lt, le, eq, ne |
{{alert.op_symbol}} | La comparación como símbolo |
{{alert.since}} | Desde cuándo se cumple la condición |
{{alert.until}} | Cuándo se resolvió (vacío mientras está activa) |
{{alert.duration_s}} | Segundos desde el inicio hasta el fin (o ahora) |
{{alert.close_reason}} | Motivo de la resolución: condition, rule_disabled, … |
{{alert.silenced}} | Verdadero si un silencio coincidió |
{{alert.link}} | Enlace absoluto a la alerta en Mirox |
{{alert.instance_key}} | La instancia de la alerta (etiquetas) |
{{rule.uid}} | ID de la regla |
{{rule.name}} | Nombre de la regla |
{{rule.description}} | Descripción de la regla |
{{rule.version}} | Versión de la regla |
{{rule.window_s}} | Ventana de la regla en segundos |
{{rule.for_s}} | Cuánto debe durar la condición, en segundos |
{{rule.metric.name}} | Nombre de la métrica |
{{rule.metric.unit}} | Unidad de la métrica |
{{plant.uid}} | ID de la planta |
{{plant.name}} | Nombre de la planta |
{{plant.type}} | Tipo: solar, wind, battery |
{{plant.timezone}} | Zona horaria de la planta (por defecto en fechas) |
{{plant.peak_power_kw}} | Potencia pico instalada en kWp |
{{plant.grid_limit_kw}} | Límite de conexión a red en kW, si existe |
{{plant.inverter_limit_kw}} | Límite de potencia de inversores en kW, si existe |
{{plant.latitude}} | Latitud |
{{plant.longitude}} | Longitud |
{{plant.portfolio.uid}} | ID de la cartera |
{{plant.portfolio.name}} | Nombre de la cartera |
{{plant.address.street}} | Calle (línea 1) |
{{plant.address.street2}} | Línea 2 de la dirección |
{{plant.address.zip}} | Código postal |
{{plant.address.city}} | Ciudad |
{{plant.address.state}} | Provincia / región |
{{plant.address.country}} | País |
{{plant.grid_operator}} | Operador de red, si consta |
{{plant.project_company}} | Sociedad del proyecto, si consta |
{{plant.market_zone}} | Zona de mercado, si consta |
{{plant.commissioning_date}} | Fecha de puesta en marcha, si consta |
{{component.name}} | Nombre del componente (vacío en reglas de planta) |
{{component.id}} | ID del componente en Mirox, si se conoce |
{{component.kind}} | Tipo de componente (inverter, string, …) |
{{component.labels}} | Las etiquetas del componente como objeto |
{{component.labels_list}} | Las etiquetas como lista de {name, value} para una sección |
{{organization.uid}} | ID de la organización |
{{organization.name}} | Nombre de la organización |
{{delivery.id}} | ID único de esta entrega |
{{delivery.receiver}} | Nombre del receptor |
{{delivery.test}} | Verdadero en un envío de prueba |
{{now}} | El momento del envío |
Las fechas se muestran en la zona horaria de la planta, salvo que el filtro date indique otra. La planta no tiene campo para un número MaStR ni una ubicación de mercado: escriba esos identificadores como texto fijo en la plantilla.
Los filtros siguen a la variable tras | y se pueden encadenar, por ejemplo {{alert.value|kw|number:1:de}}:
| Filtro | Significado |
|---|---|
date:"DD.MM.YYYY HH:mm":"Europe/Berlin" | Fecha y hora: iso (por defecto), unix, unix_ms, rfc2822 o un patrón de YYYY YY MM DD HH mm ss Z ZZ. La zona horaria es opcional; sin ella se usa la de la planta. |
number:1:de | Un número como texto con los decimales indicados (2 por defecto) y los separadores de en, de, fr, es, it, pt o plain. |
round:1 | Redondea y sigue siendo un número (en JSON sin comillas). |
kw | Divide entre 1.000 o 1.000.000 (W a kW o MW). |
upper | Mayúsculas, minúsculas, sin espacios alrededor. |
truncate:120 | Como máximo n caracteres. |
default:"—" | Este texto si el valor está vacío. |
yesno:"yes":"no" | Un texto si hay valor, otro si está vacío. |
json | El valor como texto JSON, incluidos objetos y listas. |
Formatos y escapado
El formato de la plantilla decide cómo se inserta un valor, para que un nombre de planta con comillas o un «&» nunca rompa el resultado:
- JSON: dentro de una cadena (
"plant": "{{plant.name}}") el valor se escapa como texto; fuera ("value": {{alert.value}}) se convierte en un valor JSON: un número sigue siendo número, el texto lleva comillas, un valor vacío esnull, objetos y listas se escriben como JSON. - XML y HTML: se escapan
<,>,&y las comillas. - CSV: un campo se entrecomilla si contiene el separador, una comilla o un salto de línea; en un campo que la plantilla ya entrecomilla, las comillas se duplican. El separador es el que usa su plantilla (coma, punto y coma, tabulador).
- Datos de formulario: los valores se codifican como URL.
- Texto plano: tal cual.
Los valores de cabecera y el asunto del correo nunca contienen saltos de línea. Al guardar se comprueba la plantilla: debe estar completa (cada sección cerrada, cada filtro conocido), ocupar como máximo 64 KiB y, para JSON y XML, su resultado con la alerta de ejemplo debe ser válido. Cabeceras: como máximo 30, solo nombres estándar. Content-Type sigue el formato; Content-Length, Host y las cabeceras X-Mirox-* las fija Mirox y no se pueden sustituir. Toda petición webhook sigue firmada: X-Mirox-Signature es el HMAC-SHA256 exactamente del cuerpo que produjo su plantilla.
Ejemplos
Cada ejemplo es un punto de partida que copia y adapta:
- JSON genérico (sobre firmado) — El sobre de alerta documentado de Mirox — base para sistemas de tickets.
- Tarjeta de Microsoft Teams — Una Adaptive Card para un webhook de Teams Workflows.
- Mensaje de Slack — Mensaje Block Kit para un webhook entrante de Slack.
- Embed de Discord — Un embed de color para un webhook de canal de Discord.
- Documento XML — La alerta como documento XML.
- Fila CSV — Una cabecera y una fila por alerta, separadas por comas.
- Correo de texto — Un correo de texto compacto con los datos clave.
- Correo HTML — Su propio correo HTML con tabla de datos.
- Comercializador directo: disponibilidad reducida (CSV) — Aviso alemán de disponibilidad reducida en CSV — punto de partida a adaptar.
- Comercializador directo: disponibilidad reducida (correo) — Aviso alemán por correo con planta, inicio, fin y potencia disponible.
Los ejemplos del comercializador directo (en alemán) notifican una disponibilidad reducida de una planta: nombre e ID, inicio y fin, potencia instalada y, para una regla sobre una métrica de potencia, la potencia disponible; una vez como fila CSV con punto y coma y otra como correo. No hay un formato vinculante para este aviso: adapte columnas y redacción a lo que exige su comercializador y escriba el número MaStR y la ubicación de mercado como texto fijo.
Una plantilla para un sistema de tickets que espera XML:
<ticket priority="{{alert.level}}">
<title>{{alert.title}}</title>
<site id="{{plant.uid}}">{{plant.name}}</site>
{{#component.name}}<asset>{{component.name}}</asset>{{/component.name}}
<opened>{{alert.since|date:"iso"}}</opened>
<link>{{alert.link}}</link>
</ticket>
Probar las alertas
Una prueba muestra todo el recorrido de una alerta en una de sus plantas, sin esperar a un problema real y sin tocar los datos de la planta. Abra Gestor de alertas ▸ Resumen y haga clic en Probar alertas Abrir en Mirox; elija la planta, el nivel de la alerta de prueba (hasta Crítico) y, opcionalmente, receptores.
La plataforma escribe entonces una señal de prueba fija para esa planta: 5 minutos tranquila, 15 minutos por encima del umbral y de nuevo tranquila. El agente de la planta la evalúa como cualquiera de sus reglas, así que:
- unos 5–10 minutos después del inicio se abre la alerta de prueba, con el nivel elegido;
- se avisa a todas las personas que recibirían una alerta real de ese nivel en esa planta —en la app, por push y por correo, según su propia configuración— y los receptores elegidos también la reciben;
- unos 15 minutos más tarde se resuelve sola, con su aviso de resolución.
La página sigue la prueba paso a paso. Una prueba termina sola tras unos 30 minutos, o antes con Detener; su alerta queda en el historial. Las pruebas nunca aparecen entre sus reglas y los datos de prueba solo se escriben mientras una prueba está activa. Las inician Admins y Moderadores; pueden ejecutarse hasta tres a la vez.