• Stars
    star
    908
  • Rank 50,302 (Top 1.0 %)
  • Language
    Python
  • Created over 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Subscribe to MQTT topics (with wildcards) and notify pluggable services
https://pepy.tech/badge/mqttwarn/month

GitHub | PyPI | Documentation | Issues | Changelog


https://cloud.githubusercontent.com/assets/2345521/6320105/4dd7a826-bade-11e4-9a61-72aa163a40a9.png

mqttwarn

To warn, alert, or notify.

https://raw.githubusercontent.com/mqtt-tools/mqttwarn/main/assets/google-definition.jpg

About

mqttwarn - subscribe to MQTT topics and notify pluggable services.

Description

mqttwarn subscribes to any number of MQTT topics and publishes received payloads to one or more notification services after optionally applying sophisticated transformations.

A picture says a thousand words.

https://raw.githubusercontent.com/mqtt-tools/mqttwarn/main/assets/mqttwarn.png

Notification service coverage

mqttwarn comes with over 70 notification handler plugins, covering a wide range of notification services and is very open to further contributions. You can enjoy the alphabetical list of plugins on the mqttwarn notifier catalog page.

On top of that, it integrates with the excellent Apprise notification library. Apprise notification services has a complete list of the 80+ notification services supported by Apprise.

Documentation

The mqttwarn documentation is the right place to read all about mqttwarn's features and integrations, and how you can leverage all its framework components for building custom applications. Its service plugins can be inspected on the mqttwarn notifier catalog page.

Installation

Using pip

Synopsis:

pip install --upgrade mqttwarn

You can also add support for a specific service plugin:

pip install --upgrade 'mqttwarn[xmpp]'

You can also add support for multiple services, all at once:

pip install --upgrade 'mqttwarn[apprise,asterisk,nsca,desktopnotify,tootpaste,xmpp]'

See also: Installing mqttwarn with pip.

OCI container image

For running mqttwarn on a container infrastructure like Docker or Kubernetes, corresponding images are automatically published to the GitHub Container Registry (GHCR).

  • ghcr.io/mqtt-tools/mqttwarn-standard:latest
  • ghcr.io/mqtt-tools/mqttwarn-full:latest

To learn more about this topic, please follow up reading the Using the OCI image with Docker or Podman documentation section.

Configuration

In order to learn how to configure mqttwarn, please head over to the documentation section about the mqttwarn configuration.

Usage

Interactive service

Just launch mqttwarn:

# Run mqttwarn
mqttwarn

To supply a different configuration file or log file, optionally use:

# Define configuration file
export MQTTWARNINI=/etc/mqttwarn/acme.ini

# Define log file
export MQTTWARNLOG=/var/log/mqttwarn.log

# Run mqttwarn
mqttwarn

System daemon

There are different ways to run mqttwarn as a system daemon. There are examples for systemd, traditional init, OpenRC, and Supervisor in the etc directory of this repository, for example supervisor.ini (Supervisor) and mqttwarn.service (systemd).

Standalone

In order to directly invoke notification plugins from custom programs, or for debugging them, see Running notification plugins standalone.

Development sandbox

For hacking on mqttwarn, please install it in development mode, using a mqttwarn development sandbox installation.

Project information

About

These links will guide you to the source code of mqttwarn and its documentation.

Requirements

You will need at least the following components:

  • Python 3.x or PyPy 3.x.
  • An MQTT broker. We recommend Eclipse Mosquitto.
  • For invoking specific service plugins, additional Python modules may be required. See setup.py file.

Contributing

We are always happy to receive code contributions, ideas, suggestions and problem reports from the community.

So, if you would like to contribute, you are most welcome. Spend some time taking a look around, locate a bug, design issue or spelling mistake, and then send us a pull request or create an issue.

Thank you in advance for your efforts, we really appreciate any help or feedback.

License

mqttwarn is copyright © 2014-2023 Jan-Piet Mens and contributors. All rights reserved.

It is and will always be free and open source software.

Use of the source code included here is governed by the Eclipse Public License 2.0, see LICENSE file for details. Please also recognize the licenses of third-party components.

Troubleshooting

If you encounter any problems during setup or operations or if you have further suggestions, please let us know by opening an issue on GitHub. Thank you already.

Attributions

Acknowledgements

Thanks to all the contributors of mqttwarn who helped to conceive it in one way or another. You know who you are.

Legal stuff

"MQTT" is a trademark of the OASIS open standards consortium, which publishes the MQTT specifications. "Eclipse Mosquitto" is a trademark of the Eclipse Foundation.


Have fun!

More Repositories

1

jo

JSON output from a shell
C
4,631
star
2

mosquitto-auth-plug

Authentication plugin for Mosquitto with multiple back-ends (MySQL, Redis, CDB, SQLite3)
C
808
star
3

mqtt-launcher

Execute shell commands triggered by published MQTT messages
Python
185
star
4

homie-ota

OTA "server" in Python for Homie
Python
127
star
5

simple-mqtt-websocket-example

Simple MQTT Websocket example
JavaScript
111
star
6

scrumptious

Scrumptious Bookmarks in CouchDB
JavaScript
72
star
7

mqtt2graphite

Subscribe to MQTT topics and push to Graphite's Carbon server
Python
70
star
8

tempgauge

HTML5 canvas gauge for temperature obtained from an MQTT subscribe
Python
68
star
9

mqtt-svg-dash

SVG "live" dashboard from MQTT
JavaScript
60
star
10

check-mqtt

A Nagios/Icinga plugin for testing an MQTT broker
Python
58
star
11

mqtt-watchdir

Recursively watch a directory for modifications and publish file content to an MQTT broker
Python
38
star
12

ansible-m-dnsupdate

Ansible module to perform RFC 2136 dynamic DNS updates
Python
32
star
13

pico

C++
28
star
14

ansible-facts

Ansible module (python) to produce own "facts"
Python
24
star
15

qtripp

Queclink Track (air) Interface Protocol Processor
C
23
star
16

mqttcollect

collectd "Exec" plugin for MQTT
C
22
star
17

msoak

MQTT subscribe to mutliple servers / topics simultaneously
C
20
star
18

ansible-m-pdns_zone

Ansible module to create/delete/list PowerDNS zones
Python
19
star
19

mqtt-osx-notifier

Notify OSX from topics published on OSX (see mqttwarn)
Python
18
star
20

from-traccar

Traccar positions and events to MQTT
C
16
star
21

ansible-jinja2-templates

Example Jinja2 templates for Ansible
15
star
22

n-repo

Sample repository for Ansible in "Pull"-mode
Python
15
star
23

hared-hare

Alerting or notifying on SSH logins
C
14
star
24

nagval

Nagios/Icinga plugin to check validity of one or more DNSSEC domains
C
14
star
25

notify-by-mqtt

A Nagios/Icinga module to submit notifications to mqttwarn
Python
14
star
26

tempmonitor

A simple MQTT Websocket temperature monitoring page with Arduino support
JavaScript
13
star
27

ansible-graphite

very experimental: install Graphite via Ansible
Python
13
star
28

facts2sshfp

Create SSHFP records for DNS from YAML fact files on Puppet master
Python
12
star
29

1090-to-owntracks

Import ADS-B data into OwnTracks via MQTT
Python
11
star
30

sonospauseIR

Arduino-based remote control for Sonos
Java
11
star
31

revgeod

A reverse Geo lookup service written in C, accessible via HTTP and backed by OpenCage and LMDB
C
10
star
32

couch-sdb

BIND SDB driver for CouchDB
C
10
star
33

ansible-booklet

A reference card/cheat sheet/booklet for Ansible
Shell
10
star
34

dlz_lua

Lua "back-end" for BIND with dlz_dlopen()
C
10
star
35

pudo

Upload JSON documents and attachments to a CouchDB instance
9
star
36

mqtt-prowl

Subscribe to topics on an MQTT broker and notify via Prowl (obsolete: see mqttwarn)
Python
9
star
37

twitter2mqtt

A Twitter to MQTT gateway (1-shot)
Python
8
star
38

dnssecmagic.js

Minimal HTML/JavaScript/jQuery code to determine if Web-browser is using a DNSSEC-validating cache
JavaScript
8
star
39

fritzuploader

Upload phonebook to Fritz!Box from the command-line
8
star
40

ansible-zypp

Ansible module (shell) to install/remove packages on Suse Linux
8
star
41

bzl

Bind Zone List
C
8
star
42

airportsd

IATA airport code lookup server
C
8
star
43

ansible-ntfy

Ansible action plugin to post JSON messages to nfty
Python
7
star
44

syncthing-activity

Monitor file changes as syncthing performs them
Python
6
star
45

jopleet

Copy individual tweet status URLs into Joplin notes
Python
5
star
46

mqtt-chronos

Periodically submit time/date-related data to an MQTT broker
C
5
star
47

bind9stats

BIND9 statistics-server plugin for Munin
C
4
star
48

diablo

diablo-5-CUR-20090530-00 + XS4ALL patches
C
4
star
49

mqtwit

MQTT to Twitter. (obsolete: see mqttwarn)
Python
4
star
50

whatmon

Mozilla Firefox/Thunderbird add-on for Monitoring Whatever
JavaScript
4
star
51

tt

to T
Python
3
star
52

check_nix

This is a Nagios/Icinga plugin for checking a particular DNS TXT RR. See the documentation in the program.
C
3
star
53

go-progs

Go programs (single binary, dependencies included)
3
star
54

owntracks-livetable

OwnTracks Live table
Python
2
star
55

make-big-aa

create a large RFC 1035 zone file
Perl
2
star
56

eitime

print an RRSIG expiration / inception time in the form `YYYYMMDD000000`
C
2
star
57

SensorTag_iOS

SensorTag_iOS from https://git.ti.com
Objective-C
2
star
58

ob

openBerlin
JavaScript
2
star
59

beanstalkc3-ot

A simple beanstalkd client library for Python3 patched for YAML.safe_load
Python
2
star
60

mqtt-speedo

Speedometer for MQTT messages (unreliable!)
CSS
2
star
61

pdns-remote-airports

pdns remote backend for airport codes
Python
2
star
62

rfc2136tweetr

Twitter status updates via RFC 2136 dynamic DNS updates
JavaScript
2
star
63

pdns2graphite

pdns2graphite
Python
2
star
64

powerdns-datacheck

MySQL UDF to check data in PowerDNS tables
C
2
star
65

cattled

This is !NOCOWS for Ansible: a repo of a cattle daemon
Go
1
star
66

ypom-cli

Python
1
star
67

t3

test pubkey
1
star
68

ansible-ec2-userdata

Obtain user-data
Python
1
star
69

tpl02

HTML
1
star
70

zabbix

Bastille Template to create a Zabbix Monitoring Jail
Shell
1
star
71

airports-zonedata

$INCLUDE airport locations
1
star
72

revgeod-python

Python
1
star
73

cy-ddns

C
1
star
74

luadnszones

Testing
1
star
75

openhab-workshop

Support files for my openHAB Workshop
C++
1
star
76

whatmon-s

Whatmon for Safari
JavaScript
1
star
77

owa11-owntracks

owa11 MQTT to OwnTracks JSON
C
1
star
78

b1

tmp don't use
JavaScript
1
star
79

dv

POC: Lightweight file "signing" and verification using DNSSEC
C
1
star
80

jpmens.github.com

1
star
81

yaus

Yet Another URL Shortner
C
1
star
82

jndcalx

Get iCal/Sunbird to subscribe to your Lotus Notes calendar
C
1
star