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()
|
||||
bwServer = TCPServer(incomingQueue)
|
||||
if bwServer.start():
|
||||
if bwServer.start(port=bwConfig.get('server', 'port', default=8080)):
|
||||
|
||||
while 1:
|
||||
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)
|
||||
|
||||
## Unterstütze Alarmtypen
|
||||
- Fms
|
||||
- Pocsag
|
||||
- Zvei
|
||||
- Msg
|
||||
|
||||
## Resource
|
||||
`telegram`
|
||||
|
|
@ -15,9 +18,12 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
|||
|
||||
|Feld|Beschreibung|Default|
|
||||
|----|------------|-------|
|
||||
|message|Format der Nachricht||
|
||||
|botToken|Der Api-Key des Telegram-Bots||
|
||||
|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:**
|
||||
```yaml
|
||||
|
|
@ -25,7 +31,7 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
|||
name: Telegram Plugin
|
||||
res: telegram
|
||||
config:
|
||||
message: "{RIC}({SRIC})\n{MSG}"
|
||||
message_pocsag: "{RIC}({SRIC})\n{MSG}"
|
||||
botToken: "BOT_TOKEN"
|
||||
chatIds:
|
||||
- "CHAT_ID"
|
||||
|
|
@ -33,7 +39,7 @@ Außerdem werden Locations versendet, wenn die Felder `lat` und `lon` im Paket d
|
|||
|
||||
---
|
||||
## Modul Abhängigkeiten
|
||||
Aus dem Modul [Geocoding](../modul/geocoding.md) (optional):
|
||||
Aus dem Modul [Geocoding](../modul/geocoding.md) (optional/nur POCSAG):
|
||||
|
||||
- `lat`
|
||||
- `lon`
|
||||
|
|
|
|||
|
|
@ -35,27 +35,65 @@ class BoswatchPlugin(PluginBase):
|
|||
|
||||
def onLoad(self):
|
||||
"""!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):
|
||||
"""!Called on POCSAG alarm
|
||||
|
||||
@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:
|
||||
logging.debug("Found coordinates in packet")
|
||||
(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=[]):
|
||||
try:
|
||||
# Send Message via Telegram
|
||||
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:
|
||||
logging.exception("Error while sending Telegram Message, please Check your api-key")
|
||||
except (TimedOut, NetworkError):
|
||||
|
|
|
|||
Loading…
Reference in a new issue