From 35ada90130bbab886cf5ff05c11311d8346aa418 Mon Sep 17 00:00:00 2001 From: B-Watch Date: Mon, 6 Jul 2020 12:01:41 +0200 Subject: [PATCH 1/7] Early draft --- boswatch/inputSource/inputBase.py | 19 +++++++++++++++++++ boswatch/inputSource/lineInInput.py | 16 +--------------- boswatch/inputSource/pulseaudioInput.py | 16 +--------------- boswatch/inputSource/sdrInput.py | 16 +--------------- 4 files changed, 22 insertions(+), 45 deletions(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index 0a62410..8b62535 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -18,6 +18,7 @@ import time import logging import threading from abc import ABC, abstractmethod +from boswatch.processManager import ProcessManager logging.debug("- %s loaded", __name__) @@ -63,3 +64,21 @@ class InputBase(ABC): self._inputQueue.put_nowait((data, time.time())) logging.debug("Add received data to queue") print(data) + + def startmm(self, decoderConfig): + mmProc = ProcessManager(str(decoderConfig.get("mmPath", default="multimon-ng")), textMode=True) + if decoderConfig.get("fms", default=0): + mmProc.addArgument("-a FMSFSK") + if decoderConfig.get("zvei", default=0): + mmProc.addArgument("-a ZVEI1") + if decoderConfig.get("poc512", default=0): + mmProc.addArgument("-a POCSAG512") + if decoderConfig.get("poc1200", default=0): + mmProc.addArgument("-a POCSAG1200") + if decoderConfig.get("poc2400", default=0): + mmProc.addArgument("-a POCSAG2400") + if decoderConfig.get("mmChar"): + mmProc.addArgument("-C " + str(decoderConfig.get("mmChar"))) + mmProc.addArgument("-f alpha") + mmProc.addArgument("-t raw -") + return mmProc diff --git a/boswatch/inputSource/lineInInput.py b/boswatch/inputSource/lineInInput.py index c8016bc..50666ac 100644 --- a/boswatch/inputSource/lineInInput.py +++ b/boswatch/inputSource/lineInInput.py @@ -40,21 +40,7 @@ class LineInInput(InputBase): lineInProc.setStderr(open(paths.LOG_PATH + "asla.log", "a")) lineInProc.start() - mmProc = ProcessManager(str(lineInConfig.get("mmPath", default="multimon-ng")), textMode=True) - if decoderConfig.get("fms", default=0): - mmProc.addArgument("-a FMSFSK") - if decoderConfig.get("zvei", default=0): - mmProc.addArgument("-a ZVEI1") - if decoderConfig.get("poc512", default=0): - mmProc.addArgument("-a POCSAG512") - if decoderConfig.get("poc1200", default=0): - mmProc.addArgument("-a POCSAG1200") - if decoderConfig.get("poc2400", default=0): - mmProc.addArgument("-a POCSAG2400") - if lineInConfig.get("mmChar"): - mmProc.addArgument("-C " + str(lineInConfig.get("mmChar"))) - mmProc.addArgument("-f alpha") - mmProc.addArgument("-t raw -") + mmProc = self.startmm(decoderConfig) mmProc.setStdin(lineInProc.stdout) mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) mmProc.start() diff --git a/boswatch/inputSource/pulseaudioInput.py b/boswatch/inputSource/pulseaudioInput.py index 5d955db..97a5f79 100644 --- a/boswatch/inputSource/pulseaudioInput.py +++ b/boswatch/inputSource/pulseaudioInput.py @@ -39,21 +39,7 @@ class PulseAudioInput(InputBase): PulseAudioProc.setStderr(open(paths.LOG_PATH + "pulseaudio.log", "a")) PulseAudioProc.start() - mmProc = ProcessManager(str(PulseAudioConfig.get("mmPath", default="multimon-ng")), textMode=True) - if decoderConfig.get("fms", default=0): - mmProc.addArgument("-a FMSFSK") - if decoderConfig.get("zvei", default=0): - mmProc.addArgument("-a ZVEI1") - if decoderConfig.get("poc512", default=0): - mmProc.addArgument("-a POCSAG512") - if decoderConfig.get("poc1200", default=0): - mmProc.addArgument("-a POCSAG1200") - if decoderConfig.get("poc2400", default=0): - mmProc.addArgument("-a POCSAG2400") - if PulseAudioConfig.get("mmChar"): - mmProc.addArgument("-C " + str(PulseAudioConfig.get("mmChar"))) - mmProc.addArgument("-f alpha") - mmProc.addArgument("-t raw -") + mmProc = self.startmm(decoderConfig) mmProc.setStdin(PulseAudioProc.stdout) mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) mmProc.start() diff --git a/boswatch/inputSource/sdrInput.py b/boswatch/inputSource/sdrInput.py index 6dcb278..851db22 100644 --- a/boswatch/inputSource/sdrInput.py +++ b/boswatch/inputSource/sdrInput.py @@ -41,21 +41,7 @@ class SdrInput(InputBase): sdrProc.setStderr(open(paths.LOG_PATH + "rtl_fm.log", "a")) sdrProc.start() - mmProc = ProcessManager(str(sdrConfig.get("mmPath", default="multimon-ng")), textMode=True) - if decoderConfig.get("fms", default=0): - mmProc.addArgument("-a FMSFSK") - if decoderConfig.get("zvei", default=0): - mmProc.addArgument("-a ZVEI1") - if decoderConfig.get("poc512", default=0): - mmProc.addArgument("-a POCSAG512") - if decoderConfig.get("poc1200", default=0): - mmProc.addArgument("-a POCSAG1200") - if decoderConfig.get("poc2400", default=0): - mmProc.addArgument("-a POCSAG2400") - if sdrConfig.get("mmChar"): - mmProc.addArgument("-C " + str(sdrConfig.get("mmChar"))) - mmProc.addArgument("-f alpha") - mmProc.addArgument("-t raw -") + mmProc = self.startmm(decoderConfig) mmProc.setStdin(sdrProc.stdout) mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) mmProc.start() From ba2fab398ef35e9464a0258cf59e9c2301d5011e Mon Sep 17 00:00:00 2001 From: B-Watch Date: Wed, 8 Jul 2020 11:55:46 +0200 Subject: [PATCH 2/7] Moved setStdin to BaseClass --- boswatch/inputSource/inputBase.py | 5 ++++- boswatch/inputSource/lineInInput.py | 4 +--- boswatch/inputSource/pulseaudioInput.py | 4 +--- boswatch/inputSource/sdrInput.py | 4 +--- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index 8b62535..c95269a 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -18,6 +18,7 @@ import time import logging import threading from abc import ABC, abstractmethod +from boswatch.utils import paths from boswatch.processManager import ProcessManager logging.debug("- %s loaded", __name__) @@ -65,7 +66,7 @@ class InputBase(ABC): logging.debug("Add received data to queue") print(data) - def startmm(self, decoderConfig): + def startmm(self, decoderConfig, StdIn): mmProc = ProcessManager(str(decoderConfig.get("mmPath", default="multimon-ng")), textMode=True) if decoderConfig.get("fms", default=0): mmProc.addArgument("-a FMSFSK") @@ -81,4 +82,6 @@ class InputBase(ABC): mmProc.addArgument("-C " + str(decoderConfig.get("mmChar"))) mmProc.addArgument("-f alpha") mmProc.addArgument("-t raw -") + mmProc.setStdin(StdIn) + mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) return mmProc diff --git a/boswatch/inputSource/lineInInput.py b/boswatch/inputSource/lineInInput.py index 50666ac..032bb5f 100644 --- a/boswatch/inputSource/lineInInput.py +++ b/boswatch/inputSource/lineInInput.py @@ -40,9 +40,7 @@ class LineInInput(InputBase): lineInProc.setStderr(open(paths.LOG_PATH + "asla.log", "a")) lineInProc.start() - mmProc = self.startmm(decoderConfig) - mmProc.setStdin(lineInProc.stdout) - mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) + mmProc = self.startmm(decoderConfig, lineInProc.stdout) mmProc.start() logging.info("start decoding") diff --git a/boswatch/inputSource/pulseaudioInput.py b/boswatch/inputSource/pulseaudioInput.py index 97a5f79..8f49371 100644 --- a/boswatch/inputSource/pulseaudioInput.py +++ b/boswatch/inputSource/pulseaudioInput.py @@ -39,9 +39,7 @@ class PulseAudioInput(InputBase): PulseAudioProc.setStderr(open(paths.LOG_PATH + "pulseaudio.log", "a")) PulseAudioProc.start() - mmProc = self.startmm(decoderConfig) - mmProc.setStdin(PulseAudioProc.stdout) - mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) + mmProc = self.startmm(decoderConfig, PulseAudioProc.stdout) mmProc.start() logging.info("start decoding") diff --git a/boswatch/inputSource/sdrInput.py b/boswatch/inputSource/sdrInput.py index 851db22..061711b 100644 --- a/boswatch/inputSource/sdrInput.py +++ b/boswatch/inputSource/sdrInput.py @@ -41,9 +41,7 @@ class SdrInput(InputBase): sdrProc.setStderr(open(paths.LOG_PATH + "rtl_fm.log", "a")) sdrProc.start() - mmProc = self.startmm(decoderConfig) - mmProc.setStdin(sdrProc.stdout) - mmProc.setStderr(open(paths.LOG_PATH + "multimon-ng.log", "a")) + mmProc = self.startmm(decoderConfig, sdrProc.stdout) mmProc.start() logging.info("start decoding") From e1afdcec7d2f735439ee5d07b9b1330a6e292b8f Mon Sep 17 00:00:00 2001 From: B-Watch Date: Wed, 8 Jul 2020 20:33:58 +0200 Subject: [PATCH 3/7] rename startmm to getDecoderInstance --- boswatch/inputSource/inputBase.py | 2 +- boswatch/inputSource/lineInInput.py | 2 +- boswatch/inputSource/pulseaudioInput.py | 2 +- boswatch/inputSource/sdrInput.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index c95269a..1c85e63 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -66,7 +66,7 @@ class InputBase(ABC): logging.debug("Add received data to queue") print(data) - def startmm(self, decoderConfig, StdIn): + def getDecoderInstance(self, decoderConfig, StdIn): mmProc = ProcessManager(str(decoderConfig.get("mmPath", default="multimon-ng")), textMode=True) if decoderConfig.get("fms", default=0): mmProc.addArgument("-a FMSFSK") diff --git a/boswatch/inputSource/lineInInput.py b/boswatch/inputSource/lineInInput.py index 032bb5f..5556d4c 100644 --- a/boswatch/inputSource/lineInInput.py +++ b/boswatch/inputSource/lineInInput.py @@ -40,7 +40,7 @@ class LineInInput(InputBase): lineInProc.setStderr(open(paths.LOG_PATH + "asla.log", "a")) lineInProc.start() - mmProc = self.startmm(decoderConfig, lineInProc.stdout) + mmProc = self.getDecoderInstance(decoderConfig, lineInProc.stdout) mmProc.start() logging.info("start decoding") diff --git a/boswatch/inputSource/pulseaudioInput.py b/boswatch/inputSource/pulseaudioInput.py index 8f49371..3b9b42d 100644 --- a/boswatch/inputSource/pulseaudioInput.py +++ b/boswatch/inputSource/pulseaudioInput.py @@ -39,7 +39,7 @@ class PulseAudioInput(InputBase): PulseAudioProc.setStderr(open(paths.LOG_PATH + "pulseaudio.log", "a")) PulseAudioProc.start() - mmProc = self.startmm(decoderConfig, PulseAudioProc.stdout) + mmProc = self.getDecoderInstance(decoderConfig, PulseAudioProc.stdout) mmProc.start() logging.info("start decoding") diff --git a/boswatch/inputSource/sdrInput.py b/boswatch/inputSource/sdrInput.py index 061711b..dcac725 100644 --- a/boswatch/inputSource/sdrInput.py +++ b/boswatch/inputSource/sdrInput.py @@ -41,7 +41,7 @@ class SdrInput(InputBase): sdrProc.setStderr(open(paths.LOG_PATH + "rtl_fm.log", "a")) sdrProc.start() - mmProc = self.startmm(decoderConfig, sdrProc.stdout) + mmProc = self.getDecoderInstance(decoderConfig, sdrProc.stdout) mmProc.start() logging.info("start decoding") From 546ecada4299682c25a4e6f4d6050c47fcf9ad25 Mon Sep 17 00:00:00 2001 From: B-Watch Date: Thu, 9 Jul 2020 14:20:16 +0200 Subject: [PATCH 4/7] added/modified documentation --- docu/docs/config.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docu/docs/config.md b/docu/docs/config.md index 97823f4..1aa03c4 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -50,8 +50,6 @@ Mit `PulseAudio` wird ein PulseAudio-Sink an Multimon-NG weitergereicht, z.B. in |squelch|Einstellung der Rauschsperre|1| |gain|Verstärkung des Eingangssignals|100| |rtlPath|Pfad zur rtl_fm Binary|rtl_fm| -|mmPath|Pfad zur multimon-ng Binary|multimon-ng| -|mmChar|multimon-ng Char-Set|not set| **Beispiel:** ```yaml @@ -63,16 +61,12 @@ inputSource: squelch: 1 gain: 100 rtlPath: /usr/bin/rtl-fm - mmPath: /opt/multimon/multimon-ng - mmChar: DE ``` #### `lineIn:` |Feld|Beschreibung|Default| |----|------------|-------| |device|die device Id der Soundkarte|1| -|mmPath|Pfad zur multimon-ng Binary|multimon-ng| -|mmChar|multimon-ng Char-Set|not set| **Device herausfinden** Durch eingabe des Befehls `aplay -l` werden alle Soundkarten ausgegeben. Das schaut ungefähr so aus: @@ -113,16 +107,12 @@ inputSource: lineIn: card: 1 device: 0 - mmPath: /opt/multimon/multimon-ng - mmChar: DE ``` #### `PulseAudio:` |Feld|Beschreibung|Default| |----|------------|-------| |device|Der Sinks-Name der Quelle|boswatch| -|mmPath|Pfad zur multimon-ng Binary|multimon-ng| -|mmChar|multimon-ng Char-Set|not set| **Device herausfinden** @@ -140,8 +130,6 @@ inputSource: ... PulseAudio: device: boswatch - mmPath: /opt/multimon/multimon-ng - mmChar: DE ``` --- ### `decoder:` @@ -152,6 +140,20 @@ inputSource: |poc512|POCSAG Decoder (Bitrate 512)|no| |poc1200|POCSAG Decoder (Bitrate 1200)|no| |poc2400|POCSAG Decoder (Bitrate 2400)|no| +|mmPath|Pfad zur multimon-ng Binary|multimon-ng| +|mmChar|multimon-ng Char-Set|not set| + +**Beispiel:** +```yaml +decoder: + fms: yes + zvei: yes + poc512: no + poc1200: no + poc2400: yes + mmPath: /opt/multimon/multimon-ng + mmChar: DE +``` --- ## Server From 99df0340a6593789c7889e87567e589fb0159050 Mon Sep 17 00:00:00 2001 From: B-Watch Date: Thu, 9 Jul 2020 15:20:54 +0200 Subject: [PATCH 5/7] renamed config vars --- boswatch/inputSource/inputBase.py | 6 +++--- config/client.yaml | 6 ++---- docu/docs/config.md | 8 ++++---- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index 1c85e63..4cbf423 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -67,7 +67,7 @@ class InputBase(ABC): print(data) def getDecoderInstance(self, decoderConfig, StdIn): - mmProc = ProcessManager(str(decoderConfig.get("mmPath", default="multimon-ng")), textMode=True) + mmProc = ProcessManager(str(decoderConfig.get("Path", default="multimon-ng")), textMode=True) if decoderConfig.get("fms", default=0): mmProc.addArgument("-a FMSFSK") if decoderConfig.get("zvei", default=0): @@ -78,8 +78,8 @@ class InputBase(ABC): mmProc.addArgument("-a POCSAG1200") if decoderConfig.get("poc2400", default=0): mmProc.addArgument("-a POCSAG2400") - if decoderConfig.get("mmChar"): - mmProc.addArgument("-C " + str(decoderConfig.get("mmChar"))) + if decoderConfig.get("Char"): + mmProc.addArgument("-C " + str(decoderConfig.get("Char"))) mmProc.addArgument("-f alpha") mmProc.addArgument("-t raw -") mmProc.setStdin(StdIn) diff --git a/config/client.yaml b/config/client.yaml index 2b2a736..b6a1f29 100644 --- a/config/client.yaml +++ b/config/client.yaml @@ -27,13 +27,9 @@ inputSource: squelch: 1 gain: 100 rtlPath: /usr/bin/rtl_fm - mmPath: /opt/multimon/multimon-ng - mmChar: DE lineIn: card: 1 device: 0 - mmPath: /opt/multimon/multimon-ng - mmChar: DE decoder: fms: yes @@ -41,3 +37,5 @@ decoder: poc512: yes poc1200: yes poc2400: yes + Path: /opt/multimon/multimon-ng + Char: DE diff --git a/docu/docs/config.md b/docu/docs/config.md index 1aa03c4..efc4d5f 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -140,8 +140,8 @@ inputSource: |poc512|POCSAG Decoder (Bitrate 512)|no| |poc1200|POCSAG Decoder (Bitrate 1200)|no| |poc2400|POCSAG Decoder (Bitrate 2400)|no| -|mmPath|Pfad zur multimon-ng Binary|multimon-ng| -|mmChar|multimon-ng Char-Set|not set| +|Path|Pfad zur multimon-ng Binary|multimon-ng| +|Char|multimon-ng Char-Set|not set| **Beispiel:** ```yaml @@ -151,8 +151,8 @@ decoder: poc512: no poc1200: no poc2400: yes - mmPath: /opt/multimon/multimon-ng - mmChar: DE + Path: /opt/multimon/multimon-ng + Char: DE ``` --- From 96cb967bb7b5b35746e9406b15c7f668a27857a7 Mon Sep 17 00:00:00 2001 From: B-Watch Date: Thu, 9 Jul 2020 15:24:04 +0200 Subject: [PATCH 6/7] added default for mm char option --- boswatch/inputSource/inputBase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index 4cbf423..e3c03c5 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -78,7 +78,7 @@ class InputBase(ABC): mmProc.addArgument("-a POCSAG1200") if decoderConfig.get("poc2400", default=0): mmProc.addArgument("-a POCSAG2400") - if decoderConfig.get("Char"): + if decoderConfig.get("Char", default=0): mmProc.addArgument("-C " + str(decoderConfig.get("Char"))) mmProc.addArgument("-f alpha") mmProc.addArgument("-t raw -") From 24899f3d08b0022942203bc111fa282a2150f915 Mon Sep 17 00:00:00 2001 From: B-Watch Date: Mon, 13 Jul 2020 20:02:00 +0200 Subject: [PATCH 7/7] changed var-names --- boswatch/inputSource/inputBase.py | 6 +++--- config/client.yaml | 2 +- docu/docs/config.md | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/boswatch/inputSource/inputBase.py b/boswatch/inputSource/inputBase.py index e3c03c5..001d102 100644 --- a/boswatch/inputSource/inputBase.py +++ b/boswatch/inputSource/inputBase.py @@ -67,7 +67,7 @@ class InputBase(ABC): print(data) def getDecoderInstance(self, decoderConfig, StdIn): - mmProc = ProcessManager(str(decoderConfig.get("Path", default="multimon-ng")), textMode=True) + mmProc = ProcessManager(str(decoderConfig.get("path", default="multimon-ng")), textMode=True) if decoderConfig.get("fms", default=0): mmProc.addArgument("-a FMSFSK") if decoderConfig.get("zvei", default=0): @@ -78,8 +78,8 @@ class InputBase(ABC): mmProc.addArgument("-a POCSAG1200") if decoderConfig.get("poc2400", default=0): mmProc.addArgument("-a POCSAG2400") - if decoderConfig.get("Char", default=0): - mmProc.addArgument("-C " + str(decoderConfig.get("Char"))) + if decoderConfig.get("char", default=0): + mmProc.addArgument("-C " + str(decoderConfig.get("char"))) mmProc.addArgument("-f alpha") mmProc.addArgument("-t raw -") mmProc.setStdin(StdIn) diff --git a/config/client.yaml b/config/client.yaml index b6a1f29..1550eab 100644 --- a/config/client.yaml +++ b/config/client.yaml @@ -38,4 +38,4 @@ decoder: poc1200: yes poc2400: yes Path: /opt/multimon/multimon-ng - Char: DE + char: DE diff --git a/docu/docs/config.md b/docu/docs/config.md index efc4d5f..b833101 100644 --- a/docu/docs/config.md +++ b/docu/docs/config.md @@ -140,8 +140,8 @@ inputSource: |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| +|path|Pfad zur multimon-ng Binary|multimon-ng| +|char|multimon-ng char-Set|not set| **Beispiel:** ```yaml @@ -151,8 +151,8 @@ decoder: poc512: no poc1200: no poc2400: yes - Path: /opt/multimon/multimon-ng - Char: DE + path: /opt/multimon/multimon-ng + char: DE ``` ---