#
Konfiguration
Die Konfiguration von BOSWatch 3 ist im YAML Format abgelegt und wird nachfolgend beschrieben.
Immer wenn für eine Einstellung ein **Default** Wert angegeben ist, muss diese Einstellung nicht
zwingend in die Konfiguration eingetragen werden.
## Client
---
### `client:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|name|Name zur Identifizierung der Client Instanz||
|inputSource|Art der zu nutzenden Input Quelle (`sdr`, `lineIn` oder `PulseAudio`)||
|useBroadcast|Verbindungsdaten per [Broadcast](information/broadcast.md) beziehen|no|
|reconnectDelay|Verzögerung für erneuten Verbindungsversuch zum Server|3|
|sendTries|Anzahl der Sendeversuche eines Pakets|3|
|sendDelay|Verzögerung für einen erneuten Sendeversuch|3|
---
### `server:`
Der Abschnitt `server:` wird nur genutzt, wenn `useBroadcast: no` gesetzt ist.
Ansonsten wird versucht die Verbindungsdaten per Broadcast Paket direkt vom Server zu beziehen.
|Feld|Beschreibung|Default|
|----|------------|-------|
|ip|IP Adresse des Servers|127.0.0.1|
|port|Port des Sever|8080|
**Beispiel:**
```yaml
server:
ip: 10.10.10.2
port: 9123
```
---
### `inputSource:`
Es gibt die Auswahl zwischen `sdr`, `lineIn` oder `PulseAudio` als Input Quelle.
Mit `sdr` wird direkt per **rtl_sdr** die zu empfangende Frequenz an Multimon-NG weitergereicht.
Mit `lineIn` wird eine Quelle die (per **ALSA**) direkt an die Soundkarte angeschlossen ist an Multimon-NG weitergereicht.
Mit `PulseAudio` wird ein PulseAudio-Sink an Multimon-NG weitergereicht, z.B. in Kombination mit [RTLSDR-Airband](https://github.com/szpajder/RTLSDR-Airband) und/oder Docker.
#### `sdr:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|device|rtl_fm Device ID|0|
|frequency|Zu empfangende Frequenz||
|error|Frequenz Abweichung in ppm|0|
|squelch|Einstellung der Rauschsperre|1|
|gain|Verstärkung des Eingangssignals|100|
|fir_size| niedrig leckagearmen Filter|None|
|rtlPath|Pfad zur rtl_fm Binary|rtl_fm|
**Beispiel:**
```yaml
inputSource:
sdr:
device: 0
frequency: 85M
error: 0
squelch: 1
gain: 100
rtlPath: /usr/bin/rtl-fm
```
#### `lineIn:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|device|die device Id der Soundkarte|1|
**Device herausfinden**
Durch eingabe des Befehls `aplay -l` werden alle Soundkarten ausgegeben. Das schaut ungefähr so aus:
```console
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
```
Wir betrachten das letzte Gerät: `card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]`
In dem Fall ist das letzte Gerät - `card 1` - unsere USB-Audio Schnittstelle die wir verwenden wollen.
In der Konfiguration wird das Feld `card` nun auf den Wert 1 gesetzt.
Nach dem Typ der Soundkarte steht das device, in diesem Fall `device 0`.
In der Konfiguration wird das Feld `device` nun auf den Wert 0 gesetzt.
**Beispiel:**
```yaml
inputSource:
...
lineIn:
card: 1
device: 0
```
#### `PulseAudio:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|device|Der Sinks-Name der Quelle|boswatch|
**Device herausfinden**
Durch eingabe des Befehls `pacmd list-sinks | grep name:` werden alle Sinks ausgegeben. Beispiel:
```console
bash-5.0# pacmd list-sinks | grep name:
name:
```
In der Konfiguration wird das Feld `device` nun auf den den Namen des gewünschten Sinks gesetzt (ohne spitze Klammern, <>).
**Beispiel:**
```yaml
inputSource:
...
PulseAudio:
device: boswatch
```
---
### `decoder:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|fms|FMS Decoder|no|
|zvei|ZVEI Decoder|no|
|poc512|POCSAG Decoder (Bitrate 512)|no|
|poc1200|POCSAG Decoder (Bitrate 1200)|no|
|poc2400|POCSAG Decoder (Bitrate 2400)|no|
|path|Pfad zur multimon-ng Binary|multimon-ng|
|char|multimon-ng char-Set|not set|
**Beispiel:**
```yaml
decoder:
fms: yes
zvei: yes
poc512: no
poc1200: no
poc2400: yes
path: /opt/multimon/multimon-ng
char: DE
```
---
Server
Nachfolgend alle Parameter der Server Konfiguration
### `server:`
|Feld|Beschreibung|Default|
|----|------------|-------|
|port|Port auf dem der Server lauscht| 8080
|name|Name zur Identifizierung der Server Instanz||
|useBroadcast|Verbindungsdaten per Broadcast Server bereitstellen|no|
|logging|Aktivieren / Deaktivieren des Schreibens von Statistik-Dateien|False|
---
### `alarmRouter:`
Enthält eine Liste der Router Namen, welche bei einem Alarm direkt gestartet werden sollen.
**Beispiel:**
```yaml
alarmRouter:
- Name des Routers
- ein weiter Router
```
---
### `router:`
Mit den Routern kann der Verarbeitungsweg eines Alarm-Paketes festgelegt werden. Es können beliebig viele Router in Form einer Liste angegeben werden.
|Feld|Beschreibung|Default|
|----|------------|-------|
|name|Name des Routers||
|route|Definiten des Routenverlaufs
#### `route:`
Jeder Router kann eine beliebige Anzahl einzelner Routenpunkte enthalten. Diese werden innerhalb des Routers sequentiel abgearbeitet. Mögliche Typen der Routenpunkte sind dabei ein Modul, ein Plugin oder ein anderer Router. Sie werden ebenfalls in Form einer Liste definiert.
|Feld|Beschreibung|Default|
|----|------------|-------|
|type|Art des Routenpunktes (module, plugin, router)||
|res|Zu ladende Resource (Siehe entsprechende Kapitel)||
|name|Optionaler Name des Routenpunktes|gleich wie Resource|
|config|Konfigurationseinstellungen des Routenpunktes (Siehe entsprechende Kapitel)||
**Beispiel:**
```yaml
router:
- name: Router 1
route:
- type: module
res: filter.modeFilter
name: Filter Fms/Zvei
config:
allowed:
- fms
```
---
## Module/Plugins
Die möglichen Einstellungen der einzelnen Module und Plugins sind im jeweiligen Kapitel aufgelistet.
---
## Logging
Um den Datenträger, auf dem Boswatch läuft, zu schützen ist das Logging in
Dateien standartmäßig auf Fehlermeldungen begrenzt.
In den Dateien `logger_client.ini` bzw `logger_server.ini` kann dies
entsprechend im Bereich `handler_file` unter `level=` angepasst werden.
Das Schreiben einer Statistik-Datei, welche die Durchläufe aller Module
und Plugins dokumentiert, kann in der Server-Konfiguration über den Parameter
`logging` aktiviert werden.
(siehe [Server-Konfiguration](#server-configuration))