mqttwarn changelog#

in progress#

2023-10-15 0.35.0#

  • Fix sending ntfy notifications with longer messages than 76 characters. Thanks, @codebude.

  • Modernize Pushbullet service plugin. Thanks, @DNicholai.

  • Documentation: Clarify data type of “target address descriptor”

  • [Pushover]: Switch to using base64.b64decode() to support decoding a string. Thanks, @sumnerboy12.

  • [ntfy] Fix submitting newline characters in notification message text. Thanks, @zoic21 and @codebude.

  • Core: Fix decoding non-JSON messages, which negatively impacted outbound templating. Thanks, @Sc0th.

  • Add support for Python 3.12

    • Use importlib instead of imp

    • Use importlib.resources instead of pkg_resources

    • [http,pushsafer] Remove dependency on future package

  • Add configuration variable expansion. Thanks, @jhakonen.

2023-05-15 0.34.1#

  • Add example “Simple MQTT media player”. Thanks, @nagyrobi.

  • Add example “Forwarding data from IoT devices to Zabbix”

  • Remove support for Secure Sockets Layer Version 3.0 (SSLv3). As per RFC 7568, SSLv3 has been deprecated in 2015 already.

  • Tests: Add more test cases to increase mqttwarn core coverage to ~100%

  • Improve example “Forward OwnTracks low-battery warnings to ntfy”

  • Migrate documentation to https://mqttwarn.readthedocs.io/

2023-04-28 0.34.0#

  • Fix: Don’t crash when receiving non-UTF8 payloads. Thanks, @sevmonster.

  • Improve exception logging in is_filtered, get_topic_data, and get_all_data context functions. Thanks, @sevmonster.

  • [core] Allow processing of binary, non-UTF8 message payloads, for example images. Thanks, @sevmonster.

  • [file] Allow writing of binary content. Thanks, @sevmonster.

  • [ux] Rename subcommand mqttwarn make-samplefuncs to mqttwarn make-udf, and adjust naming.

  • [ntfy] Add dedicated service plugin ntfy

  • [ntfy] Use RFC 2047 for encoding HTTP header values. Thanks, @binwiederhier.

  • [ntfy] Add more fields: icon, cache, firebase, unifiedpush

  • [ntfy] Also interpolate outbound ntfy option fields

  • [ntfy] [Frigate] Improve example/tutorial about Frigate event notifications

  • [ntfy] [Frigate] Synchronize JSON event and snapshot image receive order

  • [ntfy] [Frigate] Tests: Verify notification was properly received by ntfy

  • [cli] Fix --config-file command line option

2023-04-11 0.33.0#

  • Pushsafer: Fix to prevent submitting empty parameters to upstream API.

  • Pushsafer: Modernize configuration layout for target addresses.

  • Pushsafer: Add parameters for “Confirm”, “Answer Options”, and “Force Answer”.

Thanks, @appzer.

2023-02-13 0.32.0#

  • Modernize Docker configuration, now using Debian bullseye and Python 3.11.

  • Improve nightly and on-PR Docker builds.

  • Add versioning based on Git tags, using versioningit. This will aid in telling PR- and nightly releases apart from GA releases when running mqttwarn --version.

  • Improve Apprise integration by propagating the mqttwarn data dictionary into the Apprise plugin template arguments. Thanks, @zoic21.

2022-11-21 0.31.0#

  • Make the PushOver API retry and expire options configurable. Thanks, @jlrgraham.

  • Add new configuration setting filteredmessagesloglevel, to optionally set the log level for filtered messages. Thanks, @jlrgraham.

  • CI and tests: Improvements and maintenance

  • Documentation: Improve section about Apprise

  • Documentation: Notifications to ntfy via Apprise. Thanks, @binwiederhier, @particledecay, and @caronc.

2022-10-05 0.30.0#

  • Make LWT alive/dead payload configurable. Thanks, @sumnerboy12.

  • Upgrade to future>=0.18.0,<1. Thanks, @arieroos.

  • Several adjustments to log messages

  • Several improvements to the test harness, code coverage, project tooling, code linting and formatting, and CI

  • Refactoring of some data model components

  • Fix job sorting by priority after migration to Python 3

  • Remove some Python 2 compatibility snippets. mqttwarn is Python 3 only.

Breaking changes#

  • Rework and rename service plugin osxnotify to desktopnotify, it should work on all popular operating systems now. Thanks, @portalzine.

2022-08-22 0.29.1#

  • Improve documentation about logging on Docker

  • Improve launching with an additional set of --config arguments

2022-08-21 0.29.0#

  • Improve error handling: Remove the exception_traceback() helper function again, and use logger.exception() instead.

  • Improve error messages: Remove all ellipsis

  • SMTP service plugin: Add software tests

  • SMTP service plugin: Fix evaluation of htmlmsg parameter

  • SMTP service plugin: Add support for minimal configuration w/o TLS and AUTH. Thanks, @symonjim.

  • Update dependencies: Use Jinja2 3.x; Remove configparser, it is built into Python 3

  • Add support for Python 3.11

  • Pushover service plugin: Enable passing of parameters html, url, url_title. Thanks, @jlrgraham.

  • Add test for exercising configuration file scaffolding

  • Improve README regarding configuration file scaffolding on Windows 10/PowerShell. Thanks, @symonjim.

  • Improve support for VSCode. Thanks, @psyciknz.

  • Improve mqttwarn command line entry point testing

2021-10-31 0.28.1#

  • Fix documentation about Docker images. Thanks, @psyciknz!

  • Fix enumerating addrs in pushsafer service. Thanks, @ykuzmenko!

2021-10-19 0.28.0#

  • Allow dispatching of messages with no target address information. This helps for service plugins like Apprise to make the configuration snippet more compact. Now, service configurations can omit the targets option altogether.

  • apprise_single service: Accept omitted/empty addrs attribute.

  • apprise_single service: Improve query parameter serialization.

  • apprise_multi service: New plugin. Thanks, @psyciknz! The idea behind this variant is to publish messages to different Apprise plugins within a single configuration snippet, containing multiple recipients.

2021-10-17 0.27.0#

  • IRCcat: Fix and improve service. Thanks, @JanKoppe.

  • IRCcat: Add newline character after message. Thanks again, @JanKoppe.

  • CI: Run tests on Python 3.10

  • Allow parameters of the file service to be defined on a per-file basis. Thanks, @Gulaschcowboy!

  • Add software tests for file service.

  • Add feature to publish mqttwarn status information. Thanks, @psyciknz!

2021-09-29 0.26.2#

  • Fix HTTP basic authentication for Python 3 in plugins for HTTP, XBMC and Ionic. Thanks, @sumnerboy12!

2021-06-19 0.26.1#

  • Attempt to fix README on Docker Hub

2021-06-19 0.26.0#

  • When title is not set in configuration settings, use mqttwarn: {topic} instead of mqttwarn only. Thanks, Rob!

  • Add launch configuration for VSCode. Thanks, David!

  • Use STDERR as default log target

  • Stop including the “tests” folder into the sdist package

  • Add “mqttwarn-contrib” package to the list of “extra” dependencies

  • Improve launching service plugins interactively from the command line Now, there are two options “–config” and “–options” to be able to obtain all relevant bits of information from the command line.

2021-06-18 0.25.0#

  • Rename repository default branch to “main”

  • Fix “http” service plugin

  • Improve machinery to launch a notification service plugin standalone. Now, it works without any mqttwarn.ini configuration file at all.

  • Begin adding tests for services

  • Drop official support for Python 2

2021-06-12 0.24.0#

  • [prowl] Update service plugin to use “pyprowl” instead of “prowlpy”

  • [core] Make “functions” setting in configuration file optional

  • [ci] Build and publish Docker multi-platform images

2021-06-08 0.23.1#

  • [ci] Run software tests and Docker image building on GitHub Actions (GHA)

  • [ci] Publish Docker images to GitHub Container Registry (GHCR)

2021-06-03 0.23.0#

  • [http] Rename http.py module to http_urllib.py to reduce conflicts with stdlib. For backward compatibility reasons, it is still available by the same name, so no configurations will break. Thanks, Morten!

2021-06-03 0.22.0#

  • [build] Fix unwanted cache hits when automatically building Docker images. Thanks, Gergő!

  • [core] Respect relative path names within configuration file. This applies to both the function file as well as module files.

2021-06-03 0.21.0#

  • [xmpp] Add slixmpp plugin and documentation. Thanks, Remi!

  • [mysql] Fix unicode vs byte issue for Python 3. Thanks, Filip!

  • [http] Fix to send whole message. Thanks, Gergő!

  • [slack] Replace slacker with slack-sdk. Thanks, mcdamo!

  • [mysql] Fix specified port bug. Thanks, Hyman!

  • [launch] Add new service launch. Flexible arguments for command, responds with MQTT publish. Thanks, Jörg!

  • [core] Remove “os.chdir” as it is apparently not needed anymore. Thanks, Dan!

  • [ci] Run tests on Python 3.9, remove testing on Python 3.5

  • [core] Load service plugins from both modules and files.

2020-10-20 0.20.0#

  • [telegram] Fix encoding of data for python3. Thanks, Ben!

2020-10-11 0.19.0#

  • [xbmc] Fix encoding of data for python3. Thanks, Ben!

  • [hipchat, ionic, pushsafer] Fix charset encoding. Thanks, JP!

  • [telegram] Add compatibility for both Python 2 and Python 3. Thanks, @clach04!

  • Add new service for Chromecast TTS. Thanks, @clach04!

  • Add example for Amazon Alexa Say/Announce. Thanks, @clach04!

  • Improve documentation. Thanks, @clach04!

  • Fix Apprise service by explicitly using legacy/synchronous mode.

  • Add Python 3.9 support

2020-08-31 0.18.0#

  • Use allow_dirty = False within .bumpversion.cfg

  • Use Python3 to create virtualenv

  • Bump version numbers for release tools packages

  • Add external plugin module loading. Thanks, @psyciknz!

  • Replaced iothub service with azure-iot, just using MQTT. Thanks, Morten!

2020-08-31 0.17.0#

  • srv.mqttc is None when calling into a custom function. Thanks, Ben.

  • sundry changes for FreeBSD package. Thanks, Dan.

  • Fix ZabbixSender.py. Thanks, Ben!

  • service tweaks: nsca, zabbix

2020-06-06 0.16.2#

  • Optionally choose scheme for connection to InfluxDB. Thanks, Dennis!

2020-06-06 0.16.1#

  • Fix charset encoding within pipe module. Thanks, Morten!

  • Fix removal of “as_user” option within Slack plugin. Thanks, Morten!

2020-05-30 0.16.0#

  • Fix for the mqttwarn.service service unit. Thanks, Fulvio!

  • Fix encoding of data for Python3 within Pushsafer plugin. Thanks, Thomas!

  • Non-JSON payload should not generate warning. Thanks, Morten!

  • Fix missing namespace within Serial plugin. Thanks, Morten!

  • Fix Dockerfile to use mqttwarn pip module. Thanks, Koen!

  • Add Docker Compose file and update Dockerfile to use /etc/mqttwarn. Thanks, Koen!

  • Change Dockerfile base image to python:3.8.2-slim-buster. Thanks, Koen!

  • Improve code formatting within custom functions of “warntoggle” example. Thanks, Dan!

  • Fix charset encoding within Serial plugin. Thanks, Morten!

2020-04-14 0.15.0#

  • Document tls=True setting. Thanks, @jpmens!

  • Add warntoggle example (#408). Thanks, @robdejonge!

  • Load functions file at configuration load (#410). Thanks, @fhriley!

  • Try to make “zabbix” service work again

2020-03-31 0.14.2#

  • Upgrade to apprise 0.8.5

2020-03-28 0.14.1#

  • Upgrade xmpppy to 0.6.1, add dnspython as dependency

2020-03-18 0.14.0#

  • Add service plugin for Apprise.

  • Upgrade xmpppy to 0.6.0

  • More verbose exception when formatting message fails

2020-03-04 0.13.9#

  • Remove references to mqttwarn.py. Cleanup documentation.

  • Fix charset encoding within Postgres plugin. Thanks, @clarkspark!

  • Fix function invocation through “format” setting. Thanks, @clarkspark!

2020-01-12 0.13.8#

  • Fix charset encoding issue for service “mqttpub”. Thanks, @jpmens!

2020-01-12 0.13.7#

  • Improve exception handling when service plugin fails

  • Properly handle charset encoding, both on Python 2 and Python 3

2020-01-09 0.13.6#

  • Support Python 3.8

2019-12-27 0.13.5#

  • Improve Python2/3 compatibility for “make-config” subcommand. Fix #393. Thanks, @Gulaschcowboy!

2019-12-17 0.13.2#

  • Fix documentation

2019-12-17 0.13.1#

  • Address compatibility issues with configparser

2019-12-17 0.13.0#

  • Remove instapush service as it no longer exists

  • Python2/3 compatibility

  • Make “pushover” service use requests

  • Mitigate some deprecation warnings. Bump core package dependencies.

  • Improve testing and CI

2019-12-02 0.12.0#

  • Add documentation based on Jekyll and publish on www.mqttwarn.net. Thanks, @jpmens!

  • Add logo source and PNG images. Thanks, @gumm!

  • Make testsuite pass successfully on Python3.

  • Make README.rst ASCII-compatible, resolve #386. Thanks, @dlangille!

  • Fix direct plugin invocation

  • Re-add compatibility with Python2

2019-11-20 0.11.3#

  • Fix README.rst

2019-11-20 0.11.2#

  • Remove “Topic :: Internet :: MQTT” from the list of trove classifiers after PyPI upload croaked again

2019-11-20 0.11.1#

  • Update author email within setup.py after PyPI upload croaked at us

2019-11-20 0.11.0#

  • Add foundation for unit tests based on pytest

  • Add test harness

  • Integrate changes from the main branch

  • Improve documentation, add a more compact README.rst and move the detailed documentation to HANDBOOK.md for now.

  • First release on PyPI

2018-04-17 0.10.1#

  • Use EPL 2.0 license as recently approved by @pypa and @jpmens

  • Add missing dependency to the “six” package

2018-04-13 0.10.0#

  • Add mechanism to run a notification service plugin interactively from the command line

  • Attempt to fix #307 re. logging to the configuration .ini file. Thanks, Dan!

2018-04-13 0.9.0#

  • Add .bumpversion.cfg and Makefile to ease release cutting

  • Move “websocket” service plugin (#305) into module namespace

  • Refactor two more functions into class RuntimeContext

  • Improve error handling: Add the exception_traceback() primitive to add full stacktrace information to log messages. When applied at all important places across the board where we do catch-all style exception handling, this will improve the experience when working on custom solutions with mqttwarn to a huge extent.

  • Improve documentation

2018-04-12 0.8.1#

  • Add required modules for all services to “setup.py”

  • Fix setup documentation

  • Add MANIFEST.in file

2018-04-12 0.8.0#

  • Move all services into module namespace

  • Fix PeriodicThread

  • Add “requests” module as a core requirement to “setup.py” as it is a common module used by many services

  • Add commands “mqttwarn make-config” and “mqttwarn make-samplefuncs” for generating a “mqttwarn.ini” or a “samplefuncs.py” file, respectively.

  • Add more modules to “extras” requirements section in “setup.py”

2018-04-12 0.7.0#

  • Import 0.6.0 code base

  • Start work on making mqttwarn a first citizen of the Python ecosystem

  • Move main program mqttwarn.py into module namespace as core.py

  • Refactor routines from core.py into other modules while gently introducing OO

  • Add setup.py

  • Add full license text