# Alarme

> Die Alarme, die auf eine Antwort warten, dort quittiert, wo sie gelesen werden, über dem dauerhaften Verlauf jedes Alarmzustandswechsels.

Die Registerkarte Alarme ist der Bedienbildschirm für Alarme: was jetzt wartet und die Aufzeichnung
dessen, was bereits geschah, auf einem Bildschirm übereinander. Sie ist die erste Registerkarte von
[Ereignisse](events) (`/events?view=alarms`), die Registerkarte, auf der die Seite öffnet, und das
Ziel der Alarmanzeige in der Statusleiste, wenn Sie darauf klicken. Sie zu sehen setzt
**Ereignisse anzeigen** voraus; einen Alarm hier zu beantworten setzt **Logic bedienen** voraus; die
Historie zu exportieren setzt **Historien exportieren/importieren** voraus. Die Alarme selbst werden
unter [Logic > Alarms](logic-alarms) festgelegt; diese Registerkarte ändert nie einen.

Die Registerkarte stapelt zwei Karten: **Aktuelle Alarme** oben, live aus dem Alarmregister gelesen,
und **Historie** darunter, aus dem dauerhaften Journal gelesen.

## Aktuelle Alarme {#current-alarms}

Die Karte listet jeden Alarm auf, der aktiv ist oder noch auf eine Quittierung wartet: genau die
Menge, die die Statusleiste zählt, so dass die beiden nie widersprechen können. Sie wird direkt aus
dem laufenden Register gelesen und auf dessen eigene Signale hin neu gezeichnet (ein Kommen, ein
Gehen oder eine Quittierung von irgendeiner Fläche, eine gespeicherte, deaktivierte oder gelöschte
Definition), nie nach einer Uhr.

### Der Kopf {#the-head}

| Element | Was es zeigt |
| --- | --- |
| Glocke | Das Alarmzeichen. Es wechselt in seine läutende Form, solange etwas aktiv oder unquittiert ist, und nimmt die Farbe der schlimmsten Priorität in der Liste an. |
| Zusammenfassung | "N aktiv (M unquittiert)": wie viele Bedingungen gerade wahr sind und wie viele Alarme noch auf eine Antwort warten. Ein Alarm, der ging, bevor ihn jemand quittiert hat, bleibt als unquittiert gezählt. Der Text nimmt den Ton der schlimmsten Priorität an. |
| Alle quittieren | Beantwortet jeden wartenden Alarm mit einem Befehl. Nur für eine Rolle mit **Logic bedienen** gezeichnet. Ausgegraut mit dem Grund im Tooltip, solange die Runtime gestoppt ist ("Runtime gestoppt") oder solange nichts wartet ("Kein Alarm wartet auf eine Antwort."); sonst lautet der Tooltip "Jeden Alarm quittieren, der noch auf eine Antwort wartet". Das Aktionsprotokoll antwortet "Alle Alarme quittiert." |

### Die Zeilen {#the-rows}

Die Zeilen sind nach Priorität geordnet, die schlimmste zuerst (Kritisch, Hoch, Mittel, Niedrig),
und innerhalb einer Priorität nach der ältesten Aktivierung zuerst, so dass der Alarm, der eine
Antwort am meisten verdient, dem Kopf am nächsten steht. Das Gitter ist kompakt, höchstens 240 Pixel
hoch, und läuft innerhalb der Karte.

| Spalte | Was sie ist |
| --- | --- |
| Bezeichnung | Ein Punkt im Ton der Priorität, dann der Name des Alarms. Beim Zeigen auf den Namen erscheint die Meldung des Alarms. |
| Adresse | Die verwurzelte Logic-Adresse des Alarms, `Alarms.<folders>.<name>`, so wie Ausdrücke und Dashboards auf ihn verweisen. |
| Zustand | Der Zustand und die Priorität, zum Beispiel "Aktiv, unquittiert · Kritisch". Die Zustandswörter sind die vier des Alarmzustandsautomaten: **Normalzustand**, **Aktiv, unquittiert**, **Aktiv, quittiert** und **Gegangen, unquittiert** (die Bedingung ging in den Normalzustand zurück, bevor jemand geantwortet hat). |
| Seit | Datum und Uhrzeit, zu der die laufende Aktivierung begann; ein Strich, sobald die Bedingung gegangen ist und die Zeile nur noch auf ihre Quittierung wartet. |
| Quittieren | Nur auf einer Zeile gezeichnet, die noch unquittiert ist, und nur für eine Rolle mit **Logic bedienen**. Der Tooltip lautet "Quittieren" gefolgt vom Namen des Alarms; er ist mit "Runtime gestoppt" ausgegraut, solange die Runtime gestoppt ist. Das Aktionsprotokoll antwortet mit dem Namen des Alarms gefolgt von "quittiert." |

Es wird immer nur eine Quittierung auf einmal abgesetzt; ein zweiter Druck, während die erste noch
in der Warteschlange der Logik liegt, wird übergangen, statt eine Zeile zu beantworten, die die
Liste bereits losgelassen hat. Jede Quittierung von dieser Karte geht durch denselben protokollierten
Schreibkanal, den die Seite Logic benutzt, und wird in der Historie darunter unter dem Namen des Benutzers aufgezeichnet, der in diesem Fenster angemeldet ist, oder als `Station`,
wenn dort niemand angemeldet ist. Einen Alarm
zu quittieren, bei dem nichts aussteht, bleibt ohne Wirkung. Ein Alarm, dessen Definition keine
Quittierung verlangt, erscheint nie als unquittiert: Er steigt direkt auf "Aktiv, quittiert" und
fällt direkt auf Normal, seine Zeile erscheint also, solange er aktiv ist, und trägt kein
**Quittieren**.

Wenn nichts aktiv ist oder wartet, lautet die Karte "Kein Alarm steht an oder wartet auf eine
Antwort." mit "Wenn ein Alarm kommt, erscheint er hier, damit er quittiert werden kann."

### Abweisungen {#refusals}

| Lage | Was geschieht |
| --- | --- |
| Der Rolle fehlt Logic bedienen | Weder **Quittieren** noch **Alle quittieren** wird gezeichnet; die Zeilen bleiben lesbar. Ein Druck, der dennoch die Verarbeitung erreicht, antwortet "Ihre Rolle darf Logic anzeigen, aber nicht bedienen (Werte schreiben, Aktionen ausführen, Alarme quittieren)." |
| Die Runtime ist gestoppt | Beide Befehle bleiben gezeichnet und sind mit "Runtime gestoppt" ausgegraut; die Liste zeigt weiterhin den Zustand, den das Register hält. |
| Nichts wartet | **Alle quittieren** ist mit "Kein Alarm wartet auf eine Antwort." ausgegraut; keine Zeile trägt **Quittieren**. |

## Historie {#history}

Die Karte unter den aktuellen Alarmen ist der dauerhafte Verlauf: eine Zeile je
Alarmzustandswechsel, im gemeinsamen Verhalten der drei Verläufe, das unter
[Ereignisse](events#how-the-three-timelines-behave) beschrieben ist.

### Suche und Filter {#search-and-filter}

| Bedienelement | Werte | Was es tut |
| --- | --- | --- |
| Suche | Platzhalter "Name, Text oder Quelle durchsuchen" | Vergleich auf "enthält" mit dem Namen des Alarms, seiner Meldung und der Quelle des Übergangs, so wie sie damals in der Momentaufnahme festgehalten wurden. |
| Priorität | **Alle Prioritäten** (Vorgabe), **Kritisch**, **Hoch**, **Mittel**, **Niedrig** | Behält nur Übergänge von Alarmen, die zum Zeitpunkt des Geschehens diese Priorität hatten. |
| Von, Bis | Zwei Datumsfelder, anfangs leer | Behält nur die Übergänge innerhalb des Zeitraums, jedes Feld ein Ende davon: Ein leeres Feld ist keine Grenze, und der unter **Bis** gewählte Tag zählt vollständig mit. Solange eines der Felder ein Datum enthält, leert ein Kreuz daneben ("Den Zeitraum aufheben") beide. Es gelten die Regeln, die alle Verläufe teilen, unter [Ereignisse](events#how-the-three-timelines-behave). |
| Aktualisieren | | Liest das Journal neu; Tooltip "Alarmereignisse aktualisieren". |
| Exportieren | **Als CSV exportieren…**, **Als JSON exportieren…** | Schreibt jeden Übergang, auf den Suche, Priorität und Zeitraum passen, Seite um Seite und nicht nur die gerade aufgelisteten Zeilen. Nur mit **Historien exportieren/importieren** gezeichnet; ausgegraut, solange die Liste leer ist. |

### Die Zeilen {#the-rows-1}

| Teil der Zeile | Inhalt |
| --- | --- |
| Zeit | Datum und Uhrzeit des Übergangs. |
| Punkt | Der Ton der Priorität: kritisch für Kritisch, warnend für Hoch, hinweisend für Mittel, neutral für Niedrig. |
| Name | Der Name des Alarms zum Zeitpunkt des Übergangs. |
| Zusammenfassung | "Von → Nach · Quelle", zum Beispiel "Normalzustand → Aktiv, unquittiert · Logic". |
| Stufe | Das Wort der Priorität. |

Jeder Wechsel des Zustandsautomaten wird aufgezeichnet, gleich wodurch er ausgelöst wurde. Die
**Quelle** nennt den Ursprung:

| Quelle | Bedeutung |
| --- | --- |
| Logic | Der Zyklus der Logik hat die Bedingung ausgewertet: ein Kommen nach der Einschaltverzögerung oder ein Gehen nach der Ausschaltverzögerung. |
| *Der Name eines Benutzers* | Eine Quittierung, die der dort angemeldete Benutzer auf dieser Registerkarte, auf der Seite Logic oder an einem [Alarmhinweis](component-alarm-banner) gegeben hat. |
| Station | Dieselbe Quittierung, wenn dort niemand angemeldet ist, und **Quittieren** auf der Snackbar-Karte des Alarms, das immer die Station aufzeichnet. |
| Agent über MCP | Eine Quittierung, die ein Agent über MCP vorgenommen hat; das Journal zeichnet sie als MCP auf. |
| Konfiguration | Der Alarm wurde auf Normal zurückgesetzt, weil seine Definition mit geänderter Bedingung, geänderten Verzögerungen, geänderter Quittierpflicht oder geändertem Aktivierungszustand gespeichert oder weil sie gelöscht wurde. |

Die Zeile und der Detailbereich nennen den Ursprung in der Sprache der Station, und die Suche findet
ihn sowohl unter diesem Wort als auch unter dem, das das Journal aufgezeichnet hat. Die kopierte
Zeile und die exportierten Dateien schreiben ihn so, wie das Journal ihn aufgezeichnet hat: Logic,
Station, MCP, Configuration oder der Name des Benutzers.

### Der Detailbereich {#the-detail-panel}

Das Auswählen einer Zeile öffnet den Bereich mit dem Abzeichen der Priorität und dem Namen, dem
vollständigen Zeitstempel, der Zusammenfassung des Übergangs, der Meldung, die der Alarm damals
angesagt hat (oder "Kein Text aufgezeichnet."), und zwei Karten:

| Karte | Feld | Inhalt |
| --- | --- | --- |
| EREIGNIS | Stufe | Die Priorität. |
| EREIGNIS | Ereignis-ID | Die Kennung dieses Übergangs im Journal. |
| MOMENTAUFNAHME DES ALARMS | Übergang | "Von → Nach" in den Zustandswörtern. |
| MOMENTAUFNAHME DES ALARMS | Quelle | Logic, der Name eines Benutzers, Station, Agent über MCP oder Konfiguration. |
| MOMENTAUFNAHME DES ALARMS | Alarm-ID | Die stabile Kennung der Alarmdefinition, nach einer Umbenennung dieselbe. |

**Ereignis kopieren** kopiert "Zeitstempel | Alarm | Priorität | Name | Von → Nach · Quelle |
Meldung" als eine Zeile und antwortet "Ereignis in die Zwischenablage kopiert."

### Spalten des Exports {#export-columns}

| Spalte | CSV | JSON |
| --- | --- | --- |
| Zeitstempel | Erste Spalte, überschrieben mit "Timestamp (UTC-03:00)" (der Zeitversatz der Station selbst) | `Timestamp` |
| Priorität | `Priority` | `Priority` |
| Name | `Name` | `Name` |
| Übergang | `Transition`, geschrieben als "Von → Nach" | `From` und `To`, zwei Felder |
| Quelle | `Source` | `Source` |
| Meldung | `Message` | `Message` |
| Ereigniskennung | `EventId` | `EventId` |
| Alarmkennung | `AlarmId` | `AlarmId` |

Die JSON-Datei ist ein Umschlag, `{ "TimeZone": "...", "Events": [ ... ] }`. Die Dateinamen lauten
`alarm-history-<yyyyMMdd-HHmmss>.csv` und `.json`. Die CSV folgt der Einstellung der Station für das
Dezimaltrennzeichen wie jeder andere Export: Bei Dezimalpunkt ist das Listentrennzeichen `,`, bei
Dezimalkomma ist es `;`. Einer Zelle, die mit `=`, `+`, `-` oder `@` beginnt, wird ein Apostroph
vorangestellt, damit eine Tabellenkalkulation sie als Text liest.

### Leerzustände und die Statuszeile {#empty-states-and-the-status-line}

- "Noch keine Alarmereignisse" mit "Übergänge von Alarmen erscheinen hier, sobald die Runtime sie beobachtet."
- "Keine Alarmereignisse passen zu diesen Filtern" mit "Ändern Sie die Priorität oder die
  Suchbegriffe, um diese Historie zu erweitern."
- Die Statuszeile lautet "N angezeigt · Seite 1", dann " · gefiltert", wenn eine Suche, eine
  Priorität oder ein Zeitraum wirkt; rechts "1 ausgewählt" und "Aktualisiert hh:mm:ss".

## Was die Registerkarte Alarme nicht tut {#what-the-alarms-tab-does-not-do}

- Sie legt keinen Alarm an, ändert, aktiviert, deaktiviert oder löscht keinen; das ist
  [Logic > Alarms](logic-alarms).
- Sie blendet keinen Alarm aus und schaltet keinen stumm, und sie gibt keinen Ton aus.
- Sie stellt den Quittierzustand nach einem Neustart nicht wieder her: Das Register leitet jeden
  Zustand aus dem ersten Zyklus neu ab, und eine ausstehende Quittierung muss erneut gegeben werden.
  Die Historie bewahrt die Übergänge von davor und danach.
- Sie sagt nicht, wer über **Quittieren** auf der Snackbar-Karte geantwortet hat: Diese Quittierung
  wird als Station aufgezeichnet, wer auch immer angemeldet ist.
- Sie filtert die Historie nicht nach Alarm oder nach Zustand; suchen Sie nach dem Namen, grenzen
  Sie den Zeitraum mit **Von** und **Bis** ein oder exportieren Sie das Ergebnis.
- Die Historie hat keinen eigenen Befehl: Nichts hier löscht einen Übergang.
