Integration between MQTT and services using custom rules. Based on the awesome project mqttwarn.
pip install mqtt-sentinel
# Create a rule -t topic | -o operator | -e equated
$ msentinel add -c your-conf.ini -t "room/temperature" -o ">=" -e "30"
# Run the sentinel
$ msentinel run -c your-conf.ini
# More info
$ msentinel --help
.ini structure
; your-conf.ini
[settings:mqtt]
host = localhost
port = 1883
keepalive = 60
; Optional
; [settings:rules]
; db_url = sqlite://sentinel.db
[output:mqtt] ; Output Service
host = localhost
port = 1883
keepalive = 60
topic = device123/broadcast/alarms
# app.py
from sentinel import Sentinel
from sentinel.rules import Rule
from sentinel.output import OutMQTT
sentinel = Sentinel()
output = OutMQTT(host='localhost', port=1883, topic='app/broadcast/alert')
sentinel.set_db() # Use the default SQLite3 database (sentinel.db)
sentinel.set_output(output)
rule = Rule(
topic='device123/room/temperature',
operator=">=",
equated="31"
)
# If you want create a simple data relay, use:
# rule = Rule(topic='device123/room/temperature')
sentinel.add_rule(rule)
sentinel.start()
$ python app.py
Starting my watch with 1 workers
...