# -*- coding: utf-8 -*- # (c) 2014-2022 The mqttwarn developers # # mqttwarn example configuration file "mqttwarn.ini" # ; ------------------------------------------ ; Base configuration ; ------------------------------------------ [defaults] ; ---- ; MQTT ; ---- hostname = '192.168.1.3' port = 1883 username = None password = None clientid = 'mqttwarn' lwt = 'clients/mqttwarn' skipretained = False cleansession = False # MQTTv31 = 3 (default) # MQTTv311 = 4 protocol = 3 ; ------- ; Logging ; ------- ; Send log output to STDERR logfile = 'stream://sys.stderr' ; Send log output to file ;logfile = 'mqttwarn.log' ; one of: CRITICAL, DEBUG, ERROR, INFO, WARN loglevel = DEBUG ; optionally set the log level for filtered messages, defaults to INFO ;filteredmessagesloglevel = DEBUG ;logformat = '%(asctime)-15s %(levelname)-8s [%(name)-25s] %(message)s' ; -------- ; Services ; -------- ; path to file containing self-defined functions like `format` or `alldata` functions = 'udf.py' ; name the service providers you will be using. launch = file, log, smtp ; Publish mqttwarn status information (retained) status_publish = True ; status_topic = mqttwarn/$SYS ; ------- ; Targets ; ------- [config:file] append_newline = True targets = { 'f01' : ['/tmp/f.01'], 'log-me' : ['/tmp/log.me'], 'mqttwarn' : ['/tmp/mqttwarn.err'], } [config:log] targets = { 'debug' : [ 'debug' ], 'info' : [ 'info' ], 'warn' : [ 'warn' ], 'crit' : [ 'crit' ], 'error' : [ 'error' ] } ; special config for 'failover' events [failover] targets = log:error, file:mqttwarn [config:smtp] server = 'mail.bleg.com:587' sender = "MQTTwarn " username = digest@bleg.com password = CHANGE_ME starttls = True # Optional send msg as html or only plain text htmlmsg = False targets = { 'digest' : [ 'digest@bleg.com' ], } ; ------------------------------------------ ; Basic ; ------------------------------------------ [hello/1] ; echo '{"name": "temperature", "number": 42.42}' | mosquitto_pub -h localhost -t hello/1 -l targets = log:info format = '{name}: {number} => {_dthhmm}' ; ------------------------------------------ ; OwnTracks ; ------------------------------------------ [owntracks-location] topic = owntracks/+/+ targets = log:info, file:f01 datamap = OwnTracksTopic2Data() format = OwnTracksConvert() [owntracks-battery] topic = owntracks/+/+ targets = log:info, file:f01 datamap = OwnTracksTopic2Data() filter = OwnTracksBattFilter() format = {username}'s phone battery is getting low ({batt}%) ; ------------------------------------------ ; Dynamic targets ; ------------------------------------------ [robustness-1] ; even if "foo" is considered an invalid service or ; "log:baz" is considered an invalid service target, ; mqttwarn should keep calm and carry on topic = test/robustness-1 targets = foo:bar, log:baz [topic-targets-dynamic] ; interpolate transformation data values into topic target, example: ; mosquitto_pub -t test/topic-targets-dynamic -m '{"loglevel": "crit", "message": "Nur Döner macht schöner!"}' topic = test/topic-targets-dynamic format = Something {loglevel} happened! {message} targets = log:{loglevel} [topic-targets-func] ; use functions for computing topic targets, example: ; mosquitto_pub -t test/topic-targets-func -m '{"condition": "sunny", "remark": "This should go to a file"}' ; mosquitto_pub -t test/topic-targets-func -m '{"condition": "rainy", "remark": "This should go to the log"}' topic = test/topic-targets-func format = Weather conditions changed: It's {condition}. Remark: {remark} targets = TopicTargetList() ; ------------------------------------------ ; Periodic tasks ; ------------------------------------------ [cron] ; Demonstrate periodic task feature. ; Define a function for publishing your public ip address to the MQTT bus each minute. ; mosquitto_sub -t 'test/ip/#' -v #publish_public_ip_address = 60; now=true [sspmon/ssps/active] ; ---- ; SSPMon ; ---- topic = sspmon/ssps/active targets = smtp:digest template = active.j2 [sspmon/ssps/expired] ; ---- ; SSPMon ; ---- topic = sspmon/ssps/expired targets = smtp:digest template = active.j2