- 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 ofimp
- Use
importlib.resources
instead ofpkg_resources
- [http,pushsafer] Remove dependency on
future
package
- Use
- Add configuration variable expansion. Thanks, @jhakonen.
- 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/
- Fix: Don't crash when receiving non-UTF8 payloads. Thanks, @sevmonster.
- Improve exception logging in
is_filtered
,get_topic_data
, andget_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
tomqttwarn 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
- 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.
- 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 runningmqttwarn --version
. - Improve Apprise integration by propagating the mqttwarn data dictionary into the Apprise plugin template arguments. Thanks, @zoic21.
- Make the PushOver API
retry
andexpire
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.
- 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.
- Rework and rename service plugin
osxnotify
todesktopnotify
, it should work on all popular operating systems now. Thanks, @portalzine.
- Improve documentation about logging on Docker
- Improve launching with an additional set of
--config
arguments
- Improve error handling: Remove the
exception_traceback()
helper function again, and uselogger.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
- Fix documentation about Docker images. Thanks, @psyciknz!
- Fix enumerating
addrs
in pushsafer service. Thanks, @ykuzmenko!
- 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.
- 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!
- Fix HTTP basic authentication for Python 3 in plugins for HTTP, XBMC and Ionic. Thanks, @sumnerboy12!
- Attempt to fix README on Docker Hub
- When title is not set in configuration settings, use
mqttwarn: {topic}
instead ofmqttwarn
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.
- 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
- [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
- [ci] Run software tests and Docker image building on GitHub Actions (GHA)
- [ci] Publish Docker images to GitHub Container Registry (GHCR)
- [http] Rename
http.py
module tohttp_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!
- [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.
- [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
withslack-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.
- [telegram] Fix encoding of data for python3. Thanks, Ben!
- [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
- 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!
- 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
- Optionally choose scheme for connection to InfluxDB. Thanks, Dennis!
- Fix charset encoding within pipe module. Thanks, Morten!
- Fix removal of "as_user" option within Slack plugin. Thanks, Morten!
- 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!
- 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
- Upgrade to apprise 0.8.5
- Upgrade xmpppy to 0.6.1, add dnspython as dependency
- Add service plugin for Apprise.
- Upgrade xmpppy to 0.6.0
- More verbose exception when formatting message fails
- Remove references to
mqttwarn.py
. Cleanup documentation. - Fix charset encoding within Postgres plugin. Thanks, @clarkspark!
- Fix function invocation through "format" setting. Thanks, @clarkspark!
- Fix charset encoding issue for service "mqttpub". Thanks, @jpmens!
- Improve exception handling when service plugin fails
- Properly handle charset encoding, both on Python 2 and Python 3
- Support Python 3.8
- Improve Python2/3 compatibility for "make-config" subcommand. Fix #393. Thanks, @Gulaschcowboy!
- Fix documentation
- Address compatibility issues with configparser
- 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
- 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
- Fix README.rst
- Remove "Topic :: Internet :: MQTT" from the list of trove classifiers after PyPI upload croaked again
- Update author email within setup.py after PyPI upload croaked at us
- 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 toHANDBOOK.md
for now. - First release on PyPI
- Use EPL 2.0 license as recently approved by @pypa and @jpmens
- Add missing dependency to the "six" package
- 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!
- 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
- Add required modules for all services to "setup.py"
- Fix setup documentation
- Add MANIFEST.in file
- 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"
- 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 ascore.py
- Refactor routines from
core.py
into other modules while gently introducing OO - Add setup.py
- Add full license text