diff --git a/CHANGELOG.md b/CHANGELOG.md
index 53dbf32..3107002 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,18 +1,27 @@
# Changelog
-### __[v2.5.2]__ - unreleased
+
+### __[v2.5.3]__ - unreleased
##### Added
-- fhemCmd-Plugin: New plugin fhemCmd to execute commands in FHEM home automation. [#457](https://github.com/Schrolli91/BOSWatch/pull/457)
-- Add field "ricFuncChar" in data structure for POC messages as a combination of "ric" and "functionChar" for using in RegEx filter. [#459](https://github.com/Schrolli91/BOSWatch/pull/459)
##### Changed
-- Divera Plugin: Add individual alarms for FMS, ZVEI and POC. [#451](https://github.com/Schrolli91/BOSWatch/pull/451)
-- install.sh: local git repo available at /opt/boswatch (or at your own path). Updates easier with `git pull` in /opt/boswatch. [#452](https://github.com/Schrolli91/BOSWatch/pull/452)
##### Deprecated
##### Removed
##### Fixed
+##### Security
+
+
+### __[v2.5.2]__ - 08.01.2021
+##### Added
+- fhemCmd-Plugin: New plugin fhemCmd to execute commands in FHEM home automation. [#457](https://github.com/Schrolli91/BOSWatch/pull/457)
+- Add field "ricFuncChar" in data structure for POC messages as a combination of "ric" and "functionChar" for using in RegEx filter. [#459](https://github.com/Schrolli91/BOSWatch/pull/459)
+- MQTT Plugin: Send alarms to an MQTT broker [#498](https://github.com/Schrolli91/BOSWatch/pull/498)
+##### Changed
+- Divera Plugin: Add individual alarms for FMS, ZVEI and POC. [#451](https://github.com/Schrolli91/BOSWatch/pull/451)
+- install.sh: local git repo available at /opt/boswatch (or at your own path). Updates easier with `git pull` in /opt/boswatch. [#452](https://github.com/Schrolli91/BOSWatch/pull/452)
+- Telegram Plugin: Add support for simple HTML style message formatting. [#482](https://github.com/Schrolli91/BOSWatch/pull/482)
+##### Fixed
- install.sh: old version of mysql-connector-python removed; add new via pip [#452](https://github.com/Schrolli91/BOSWatch/pull/452) [#445](https://github.com/Schrolli91/BOSWatch/issues/445)
- GPIOcontrol plugin: Fixing indentation errors. [#465](https://github.com/Schrolli91/BOSWatch/pull/465)
-##### Security
### __[v2.5.1]__ - 28.04.2020
@@ -126,7 +135,7 @@
Zum schreiben des Changelog's siehe:
http://keepachangelog.com/de/1.0.0/
-### __[v#.#]__ - date
+### __[v#.#]__ - unreleased
##### Added
##### Changed
##### Deprecated
diff --git a/config/config.template.ini b/config/config.template.ini
index 8d2a9a4..e20a7eb 100644
--- a/config/config.template.ini
+++ b/config/config.template.ini
@@ -183,6 +183,7 @@ hue = 0
Divera = 0
gpiocontrol = 0
fhemCmd = 0
+mqtt = 0
# for developing - template-module
template = 0
@@ -426,14 +427,17 @@ GoogleAPIKey =
# Use the following format: CityOfOrigin+Street+Number
RoutingOrigin = MyCity+MyStreet+MyNumber
-#Wildcards can be used, see end of the file!
+# Wildcards can be used, see end of the file!
+# In addition, feel free to use simple HTML stlye tags like %FMS%
FMS_message = %DATE% %TIME%: %FMS%
-#Wildcards can be used, see end of the file!
+#W ildcards can be used, see end of the file!
+# In addition, feel free to use simple HTML stlye tags like %ZVEI%
ZVEI_message = %DATE% %TIME%: %ZVEI%
-#Wildcards can be used, see end of the file!
-POC_message = %MSG%
+# Wildcards can be used, see end of the file!
+# In addition, feel free to use simple HTML stlye tags like %DESCR%
+POC_message = %DESCR%%BR%%MSG%
[yowsup]
@@ -547,6 +551,11 @@ commandFMS = set SteckdoseSchlafzimmerEinsatz on-for-timer 90
commandZVEI =
commandPOC =
+[mqtt]
+#Adress from MQTT-Broker
+brokeraddress = 192.168.178.27
+topic = alarm/data
+
#####################
##### Not ready yet #
#####################
diff --git a/includes/globalVars.py b/includes/globalVars.py
index b0b50fb..14c7ea9 100644
--- a/includes/globalVars.py
+++ b/includes/globalVars.py
@@ -9,7 +9,7 @@ Global variables
"""
# version info
-versionNr = "2.5.2"
+versionNr = "2.5.3"
branch = "dev"
buildDate = "unreleased"
diff --git a/plugins/Telegram/Telegram.py b/plugins/Telegram/Telegram.py
index 2120d75..837aea0 100644
--- a/plugins/Telegram/Telegram.py
+++ b/plugins/Telegram/Telegram.py
@@ -94,7 +94,7 @@ def run(typ,freq,data):
bot = telegram.Bot(token='%s' % BOTTokenAPIKey)
# Send message to chat via Telegram BOT API
logging.debug("Send message to chat via Telegram BOT API")
- bot.sendMessage('%s' % BOTChatIDAPIKey, text)
+ bot.sendMessage('%s' % BOTChatIDAPIKey, text, parse_mode=telegram.ParseMode.HTML)
# Generate location information only for specific RIC
if typ == "POC" and data["ric"] == RICforLocationAPIKey:
diff --git a/plugins/mqtt/mqtt.py b/plugins/mqtt/mqtt.py
new file mode 100644
index 0000000..683d7d6
--- /dev/null
+++ b/plugins/mqtt/mqtt.py
@@ -0,0 +1,121 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+"""
+@author: KS
+
+@requires: paho-mqtt
+"""
+
+#
+# Imports
+#
+import logging # Global logger
+from includes import globalVars # Global variables
+
+# Helper function, uncomment to use
+from includes.helper import timeHandler
+from includes.helper import wildcardHandler
+from includes.helper import configHandler
+
+import paho.mqtt.client as mqtt
+import json
+
+##
+#
+# onLoad (init) function of plugin
+# will be called one time by the pluginLoader on start
+#
+def onLoad():
+ """
+ While loading the plugins by pluginLoader.loadPlugins()
+ this onLoad() routine is called one time for initialize the plugin
+
+ @requires: nothing
+
+ @return: nothing
+ @exception: Exception if init has an fatal error so that the plugin couldn't work
+
+ """
+ try:
+ ########## User onLoad CODE ##########
+ pass
+ ########## User onLoad CODE ##########
+ except:
+ logging.error("unknown error")
+ logging.debug("unknown error", exc_info=True)
+ raise
+
+##
+#
+# Main function of plugin
+# will be called by the alarmHandler
+#
+def run(typ,freq,data):
+ """
+ This function is the implementation of the Plugin.
+
+ If necessary the configuration hast to be set in the config.ini.
+
+ @type typ: string (FMS|ZVEI|POC)
+ @param typ: Typ of the dataset
+ @type data: map of data (structure see readme.md in plugin folder)
+ @param data: Contains the parameter for dispatch
+ @type freq: string
+ @keyword freq: frequency of the SDR Stick
+
+ @requires: If necessary the configuration hast to be set in the config.ini.
+
+ @return: nothing
+ @exception: nothing, make sure this function will never thrown an exception
+ """
+ try:
+ if configHandler.checkConfig("mqtt"): #read and debug the config (let empty if no config used)
+
+ logging.debug(globalVars.config.get("mqtt", "brokeraddress"))
+ logging.debug(globalVars.config.get("mqtt", "topic"))
+ ########## User Plugin CODE ##########
+ broker_address = globalVars.config.get("mqtt", "brokeraddress")
+ topic = globalVars.config.get("mqtt", "topic")
+ mqttClient = mqtt.Client()
+
+ if typ == "FMS":
+ x = {
+ "fms": data["fms"],
+ "status": data["status"],
+ "direction": data["direction"],
+ "directionText": data["directionText"],
+ "tsi": data["tsi"],
+ "description": data["description"],
+ "timestamp": timeHandler.curtime()
+ }
+ elif typ == "ZVEI":
+ x = {
+ "zvei": data["zvei"],
+ "description": data["description"],
+ "timestamp": timeHandler.curtime()
+ }
+ elif typ == "POC":
+ functionText = "%FUNCTEXT%"
+ functionText = wildcardHandler.replaceWildcards(functionText, data)
+ x = {
+ "ric": data["ric"],
+ "function": data["function"],
+ "functionText": functionText,
+ "functionChar": data["functionChar"],
+ "msg": data["msg"],
+ "bitrate": data["bitrate"],
+ "description": data["description"],
+ "timestamp": timeHandler.curtime()
+ }
+ else:
+ logging.warning("Invalid Typ: %s", typ)
+
+ y = json.dumps(x)
+ mqttClient.connect(broker_address)
+ mqttClient.publish(topic,y)
+ ########## User Plugin CODE ##########
+
+ except:
+ logging.error("unknown error")
+ logging.debug("unknown error", exc_info=True)
diff --git a/plugins/mqtt/requirements.txt b/plugins/mqtt/requirements.txt
new file mode 100644
index 0000000..8579e8b
--- /dev/null
+++ b/plugins/mqtt/requirements.txt
@@ -0,0 +1 @@
+paho-mqtt