2019-10-27 21:08:23 +01:00
# <center>Descriptor</center>
---
## Beschreibung
2025-12-01 16:29:58 +01:00
Mit diesem Modul können einem Alarmpaket beliebige Beschreibungen in Abhängigkeit der enthaltenen Informationen hinzugefügt werden.
2019-10-27 21:08:23 +01:00
2025-12-01 16:29:58 +01:00
## Unterstützte Alarmtypen
2020-02-24 23:38:13 +01:00
- Fms
- Pocsag
- Zvei
- Msg
2019-10-27 21:08:23 +01:00
## Resource
`descriptor`
## Konfiguration
Informationen zum Aufbau eines [BOSWatch Pakets ](../develop/packet.md )
2025-12-01 16:29:58 +01:00
**Achtung:** Zahlen, die führende Nullen enthalten, müssen in der YAML-Konfiguration in Anführungszeichen gesetzt werden, z.B. `'0012345'` . In CSV-Dateien ist dies nicht zwingend erforderlich.
2021-02-04 17:07:30 +01:00
2019-10-27 21:08:23 +01:00
|Feld|Beschreibung|Default|
|----|------------|-------|
2025-12-01 16:29:58 +01:00
|scanField|Feld des BW Pakets, welches geprüft werden soll||
|descrField|Name des Feldes im BW Paket, in welchem die Beschreibung gespeichert werden soll||
2019-10-27 21:08:23 +01:00
|wildcard|Optional: Es kann für das angelegte `descrField` automatisch ein Wildcard registriert werden|None|
|descriptions|Liste der Beschreibungen||
2025-07-30 13:00:51 +02:00
|csvPath|Pfad der CSV-Datei (relativ zum Projektverzeichnis)||
2019-10-27 21:08:23 +01:00
#### `descriptions:`
|Feld|Beschreibung|Default|
|----|------------|-------|
2025-12-01 16:29:58 +01:00
|for|Wert im `scanField` , der geprüft werden soll||
|add|Beschreibungstext, der im `descrField` hinterlegt werden soll||
|isRegex|Muss explizit auf `true` gesetzt werden, wenn RegEx verwendet wird|false|
2019-10-27 21:08:23 +01:00
**Beispiel:**
```yaml
- type: module
res: descriptor
config:
2020-04-14 22:17:53 +02:00
- scanField: tone
2019-10-27 21:08:23 +01:00
descrField: description
wildcard: "{DESCR}"
descriptions:
- for: 12345
add: FF DescriptorTest
2021-02-04 17:07:30 +01:00
- for: '05678' # führende Nullen in '' !
2019-10-27 21:08:23 +01:00
add: FF TestDescription
2025-07-30 13:00:51 +02:00
- for: '890(1[1-9]|2[0-9])' # Regex-Pattern in '' !
add: Feuerwehr Wache \\1 (BF)
isRegex: true
2019-10-27 21:08:23 +01:00
- scanField: status
descrField: fmsStatDescr
wildcard: "{STATUSTEXT}"
descriptions:
- for: 1
add: Frei (Funk)
- for: 2
add: Frei (Wache)
- ...
```
2025-07-30 13:00:51 +02:00
**Wichtige Punkte für YAML-Regex:**
- Apostroph: Regex-Pattern sollten in `'` stehen, um YAML-Parsing-Probleme zu vermeiden
- isRegex-Flag: Muss explizit auf `true` gesetzt werden
- Escaping: Backslashes müssen in YAML doppelt escaped werden (`\\1` statt `\1` )
- Regex-Gruppen: Mit `\\1` , `\\2` etc. können Teile des Matches in der Beschreibung verwendet werden
#### `csvPath:`
**Beispiel:**
```
- type: module
res: descriptor
config:
- scanField: tone
descrField: description
wildcard: "{DESCR}"
csvPath: "config/descriptions_tone.csv"
```
`csvPath` gibt den Pfad zu einer CSV-Datei an, relativ zum Projektverzeichnis (z. B. `"config/descriptions_tone.csv"` ).
Eine neue CSV-Datei (z. B. `descriptions_tone.csv` ) hat folgendes Format:
**Beispiel**
```
for,add,isRegex
11111,KBI Landkreis Z,false
12345,FF A-Dorf,false
2025-12-01 16:29:58 +01:00
23456,FF B-Dorf
^3456[0-9]$,FF Grossdorf,true
2025-07-30 13:00:51 +02:00
```
2025-12-01 16:29:58 +01:00
**Hinweis:** In CSV-Dateien müssen Werte mit führenden Nullen **nicht** in Anführungszeichen gesetzt werden (können aber, falls gewünscht). Die Spalte `isRegex` gibt an, ob der Wert in `for` als regulärer Ausdruck interpretiert werden soll (true/false). Falls kein Wert angegeben ist, ist die Paarung standardmäßig `false` , wie z.B. beim Eintrag der FF B-Dorf im obigen Beispiel.
2025-07-30 13:00:51 +02:00
### Kombination von YAML- und CSV-Konfiguration
2025-12-01 16:29:58 +01:00
Beide Varianten können parallel genutzt werden. In diesem Fall werden die Beschreibungen aus der YAML-Konfiguration und aus der angegebenen CSV-Datei in einer gemeinsamen Datenbank zusammengeführt.
2025-07-30 13:00:51 +02:00
2025-12-01 16:29:58 +01:00
#### Matching-Reihenfolge und Priorität
2025-07-30 13:00:51 +02:00
2025-12-01 16:29:58 +01:00
Das Modul wendet folgende Prioritäten beim Matching an:
1. **Exakte Matches** (aus YAML und CSV) werden zuerst geprüft
2. **Regex-Matches** (aus YAML und CSV) werden nur geprüft, wenn kein exakter Match gefunden wurde
**Beispiel für Kombination:**
```yaml
2025-07-30 13:00:51 +02:00
- type: module
res: descriptor
config:
- scanField: tone
descrField: description
wildcard: "{DESCR}"
descriptions:
- for: 12345
2025-12-01 16:29:58 +01:00
add: FF YAML-Test (exakt)
- for: '123.*'
add: FF YAML-Regex
isRegex: true
2025-07-30 13:00:51 +02:00
csvPath: "config/descriptions_tone.csv"
```
2025-12-01 16:29:58 +01:00
Bei einem `scanField` -Wert von `12345` wird **immer** "FF YAML-Test (exakt)" verwendet, auch wenn der Regex ebenfalls zutreffen würde. Regex-Matches werden nur verwendet, wenn kein exakter Match gefunden wurde - unabhängig davon, ob die Einträge aus YAML oder CSV stammen.
2019-10-27 21:08:23 +01:00
---
2020-02-24 23:38:13 +01:00
## Modul Abhängigkeiten
- keine
2019-10-27 21:08:23 +01:00
2020-02-24 23:38:13 +01:00
---
## Externe Abhängigkeiten
2019-10-27 21:08:23 +01:00
- keine
---
## Paket Modifikationen
- Wenn im Paket das Feld `scanField` vorhanden ist, wird das Feld `descrField` dem Paket hinzugefügt
2019-10-27 21:53:00 +01:00
- Wenn keine Beschreibung vorhanden ist, wird im Feld `descrField` der Inhalt des Feldes `scanField` hinterlegt
2019-10-27 21:08:23 +01:00
---
## Zusätzliche Wildcards
2025-07-30 13:00:51 +02:00
- Von der Konfiguration abhängig