mirror of
https://github.com/BOSWatch/BW3-Core.git
synced 2025-12-06 07:12:04 +01:00
Merge branch 'develop' into FR-mmChar
This commit is contained in:
commit
4a1bcf7df9
|
|
@ -86,7 +86,7 @@ try:
|
||||||
|
|
||||||
incomingQueue = queue.Queue()
|
incomingQueue = queue.Queue()
|
||||||
bwServer = TCPServer(incomingQueue)
|
bwServer = TCPServer(incomingQueue)
|
||||||
if bwServer.start():
|
if bwServer.start(port=bwConfig.get('server', 'port', default=8080)):
|
||||||
|
|
||||||
while 1:
|
while 1:
|
||||||
if incomingQueue.empty(): # pause only when no data
|
if incomingQueue.empty(): # pause only when no data
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@ Mit diesem Plugin ist es moeglich, Telegram-Nachrichten für POCSAG-Alarmierunge
|
||||||
Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket definiert sind. (beispielsweise durch das [Geocoding](../modul/geocoding.md) Modul)
|
Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket definiert sind. (beispielsweise durch das [Geocoding](../modul/geocoding.md) Modul)
|
||||||
|
|
||||||
## Unterstütze Alarmtypen
|
## Unterstütze Alarmtypen
|
||||||
|
- Fms
|
||||||
- Pocsag
|
- Pocsag
|
||||||
|
- Zvei
|
||||||
|
- Msg
|
||||||
|
|
||||||
## Resource
|
## Resource
|
||||||
`telegram`
|
`telegram`
|
||||||
|
|
@ -15,9 +18,12 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
||||||
|
|
||||||
|Feld|Beschreibung|Default|
|
|Feld|Beschreibung|Default|
|
||||||
|----|------------|-------|
|
|----|------------|-------|
|
||||||
|message|Format der Nachricht||
|
|
||||||
|botToken|Der Api-Key des Telegram-Bots||
|
|botToken|Der Api-Key des Telegram-Bots||
|
||||||
|chatIds|Liste mit Chat-Ids der Empfängers / der Emfänger-Gruppen||
|
|chatIds|Liste mit Chat-Ids der Empfängers / der Emfänger-Gruppen||
|
||||||
|
|message_fms|Format der Nachricht für FMS|`{FMS}`|
|
||||||
|
|message_pocsag|Format der Nachricht für Pocsag|`{RIC}({SRIC})\n{MSG}`|
|
||||||
|
|message_zvei|Format der Nachricht für ZVEI|`{TONE}`|
|
||||||
|
|message_msg|Format der Nachricht für MSG||
|
||||||
|
|
||||||
**Beispiel:**
|
**Beispiel:**
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -25,7 +31,7 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
||||||
name: Telegram Plugin
|
name: Telegram Plugin
|
||||||
res: telegram
|
res: telegram
|
||||||
config:
|
config:
|
||||||
message: "{RIC}({SRIC})\n{MSG}"
|
message_pocsag: "{RIC}({SRIC})\n{MSG}"
|
||||||
botToken: "BOT_TOKEN"
|
botToken: "BOT_TOKEN"
|
||||||
chatIds:
|
chatIds:
|
||||||
- "CHAT_ID"
|
- "CHAT_ID"
|
||||||
|
|
@ -33,7 +39,7 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
||||||
|
|
||||||
---
|
---
|
||||||
## Modul Abhängigkeiten
|
## Modul Abhängigkeiten
|
||||||
Aus dem Modul [Geocoding](../modul/geocoding.md) (optional):
|
Aus dem Modul [Geocoding](../modul/geocoding.md) (optional/nur POCSAG):
|
||||||
|
|
||||||
- `lat`
|
- `lat`
|
||||||
- `lon`
|
- `lon`
|
||||||
|
|
|
||||||
|
|
@ -35,27 +35,65 @@ class BoswatchPlugin(PluginBase):
|
||||||
|
|
||||||
def onLoad(self):
|
def onLoad(self):
|
||||||
"""!Called by import of the plugin"""
|
"""!Called by import of the plugin"""
|
||||||
self.bot = telegram.Bot(token=self.config.get("botToken", default=""))
|
self.bot = telegram.Bot(token=self.config.get("botToken"))
|
||||||
|
|
||||||
|
def fms(self, bwPacket):
|
||||||
|
"""!Called on FMS alarm
|
||||||
|
|
||||||
|
@param bwPacket: bwPacket instance"""
|
||||||
|
msg = self.parseWildcards(self.config.get("message_fms", default="{FMS}"))
|
||||||
|
self._sendMessage(msg)
|
||||||
|
|
||||||
def pocsag(self, bwPacket):
|
def pocsag(self, bwPacket):
|
||||||
"""!Called on POCSAG alarm
|
"""!Called on POCSAG alarm
|
||||||
|
|
||||||
@param bwPacket: bwPacket instance"""
|
@param bwPacket: bwPacket instance"""
|
||||||
msg = self.parseWildcards(self.config.get("message"))
|
msg = self.parseWildcards(self.config.get("message_pocsag", default="{RIC}({SRIC})\n{MSG}"))
|
||||||
|
self._sendMessage(msg)
|
||||||
|
|
||||||
if bwPacket.get("lat") is not None and bwPacket.get("lon") is not None:
|
if bwPacket.get("lat") is not None and bwPacket.get("lon") is not None:
|
||||||
logging.debug("Found coordinates in packet")
|
logging.debug("Found coordinates in packet")
|
||||||
(lat, lon) = (bwPacket.get("lat"), bwPacket.get("lon"))
|
(lat, lon) = (bwPacket.get("lat"), bwPacket.get("lon"))
|
||||||
|
self._sendMessage(lat, lon)
|
||||||
|
|
||||||
|
def zvei(self, bwPacket):
|
||||||
|
"""!Called on ZVEI alarm
|
||||||
|
|
||||||
|
@param bwPacket: bwPacket instance"""
|
||||||
|
msg = self.parseWildcards(self.config.get("message_zvei", default="{TONE}"))
|
||||||
|
self._sendMessage(msg)
|
||||||
|
|
||||||
|
def msg(self, bwPacket):
|
||||||
|
"""!Called on MSG packet
|
||||||
|
|
||||||
|
@param bwPacket: bwPacket instance"""
|
||||||
|
msg = self.parseWildcards(self.config.get("message_msg"))
|
||||||
|
self._sendMessage(msg)
|
||||||
|
|
||||||
|
def _sendMessage(self, message):
|
||||||
for chatId in self.config.get("chatIds", default=[]):
|
for chatId in self.config.get("chatIds", default=[]):
|
||||||
try:
|
try:
|
||||||
# Send Message via Telegram
|
# Send Message via Telegram
|
||||||
logging.info("Sending message to " + chatId)
|
logging.info("Sending message to " + chatId)
|
||||||
self.bot.send_message(chat_id=chatId, text=msg)
|
self.bot.send_message(chat_id=chatId, text=message)
|
||||||
|
|
||||||
|
except Unauthorized:
|
||||||
|
logging.exception("Error while sending Telegram Message, please Check your api-key")
|
||||||
|
except (TimedOut, NetworkError):
|
||||||
|
logging.exception("Error while sending Telegram Message, please Check your connectivity")
|
||||||
|
except (BadRequest, TelegramError):
|
||||||
|
logging.exception("Error while sending Telegram Message")
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception("Unknown Error while sending Telegram Message: " + str(type(e).__name__) + ": " + str(e))
|
||||||
|
|
||||||
|
def _sendLocation(self, lat, lon):
|
||||||
|
for chatId in self.config.get("chatIds", default=[]):
|
||||||
|
try:
|
||||||
|
# Send Location via Telegram
|
||||||
|
if lat is not None and lon is not None:
|
||||||
|
logging.info("Sending location to " + chatId)
|
||||||
|
self.bot.sendLocation(chat_id=chatId, latitude=lat, longitude=lon)
|
||||||
|
|
||||||
# Send Location via Telegram if lat and lon are defined
|
|
||||||
if lat is not None and lon is not None:
|
|
||||||
logging.info("Sending location to " + chatId)
|
|
||||||
self.bot.sendLocation(chat_id=chatId, latitude=lat, longitude=lon)
|
|
||||||
except Unauthorized:
|
except Unauthorized:
|
||||||
logging.exception("Error while sending Telegram Message, please Check your api-key")
|
logging.exception("Error while sending Telegram Message, please Check your api-key")
|
||||||
except (TimedOut, NetworkError):
|
except (TimedOut, NetworkError):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue