Releases: CrazyIvan359/mqttany
v0.14.4
-
Changed
-
Added
- I2C Add interrupt support to MCP230xx devices. Supports interrupts via polling device rapidly or using interrupt pin and a GPIO pin on the host device. [#130]
-
Fixed
- Automatic checks on GitHub will now work correctly again. This was caused by a change in pylance/pyright related to re-exports in stubs. [#128]
- LED fix custom animations getting prefix
*instead of actual module name. Fixes #119. [#122] - I2C MCP230xx devices would not turn off their outputs on shutdown because
setupflag was never set. - Moved inline type to comment in logging to restore compatibility. [#131]
- OneWire DS18x20 devices unable to read data due to incorrect data processing causing read operation to crash. Fixes #136. [#137]
- Compatibility fixes for newer versions of Python. Fixes #142.
v0.14.3
v0.14.2
v0.14.1
v0.14.0
-
Added
-
Fixed
v0.13.0
-
BREAKING CHANGE
- LED restructure set/get pixel functions to simplify array subclassing. #92
-
Changed
- LED some minor cleanup of array subtypes. #92
- MQTT use custom client logger for better control of log messages. #93
- Migrate from pylint to Pylance for code checking in VSCode. #96
- Convert entire codebase to be fully typed. #96
- Migrate CI code check to Pyright from pylint. #96
- OneWire move
get_w1_addressfunction from basebusclass to wire-1 bus class. #97
-
Fixed
- Missing comma in Odroid C1+ and C2 board definitions. #89
- GPIO Digital pin pulse message handler using entire payload as state instead of
JSON property'state'. #90 - I2C Bus instance referencing error, devices not able to access the bus instance. #91
- OneWire bus not being instantiated. #94
- OneWire polling not referencing device instance. #94
- XSET module missing module type. #95
v0.12.2
-
Changed
-
Fixed
v0.12.1
v0.12.0
Major Core Rewrite
This release is a big one! The core functionality has been almost completely rewritten
in order to make things a lot simplier for modules. There is now a standardized message
bus that modules use, instead of calling functions directly in other modules. This
abstraction also paves the way for adding other communication modules. However, as with
anything, there was a price; a lot of things have changed and a few features were dropped.
One of the major goals of this rewrite is to bring Homie support to MQTTany (Homie support
itself is not yet added). In order to do that it was necessary to abstract the way interface
modules connect to communication modules. This means that interface modules must now
provide more details on the data they export, but can no longer directly specify topics.
Internally the new message bus largely resembles the Homie convention in order to have all
details required for it. This means that topics must now have a minumum depth of 2 (ex.
{node}/{property}, gpio/1) and absolute topics are no longer supported.
Due to the number of changes, you will need to go over the documentation for each module
you are using and update your configuration file to work with the new options and changes.
If you were using default MQTT topics you will likely not have to change your home
automation setup much in order to interface with this version of MQTTany.
-
BREAKING CHANGE
- Absolute and custom topic support removed. This means all
topicoptions in config
will now be ignored. See the documentation for each module to see how paths work. #49 - GPIO - Digital pins now report their state as
ONorOFF. #49 - GPIO - Digital pins no longer support time only or comma separated messages for
pulse commands, only JSON is supported now. #49 - I2C - MCP230xx pins now report their state as
ONorOFF. #49 - I2C - MCP230xx pins no longer support time only or comma separated messages for
pulse commands, only JSON is supported now. #49 - LED - Options specific to output methods are now in a nested section inside the
array definition. See the documentation for details. #49 - LED - Animations can only be called with JSON on path
{array_id}/animation/set. #49 - OneWire - Options specific to devices are now in nested sections inside the device
definition. See the device documentation for details. #49 - LED - Move the
fpsoption from module config to array config allowing per-array
FPS setting. This is now published when the array is setup also. #52 - GPIO - Change language for
directiontopin modeto be less specific and lay
ground work for additional pin modes. #55 - GPIO - move
interrupt,invert, andinitialsettings into adigital
subsection in config. This was done to align with the new counter pin type to
distinguish which pin type these settings apply to. #78
- Absolute and custom topic support removed. This means all
-
Added
- Colorized log output to terminal.
.pylintrcfile.- GitHub Actions for pylint and black checks.
- Python version check before importing anything with a minimum version requirement. #49
- Import checking for the core requirements with log entries for missing packages. #49
- Template modules and documentation to help with creating new modules. #49
- Config file version key. This will prevent MQTTany from running with an outdated
config file that may cause errors or strange behavior. Config version number will
incriment when incompatible changes occur in the config format. #50 - Config option flag
secretto obfuscate values in the log for passwords, etc. #53 - I2C - If
busis a number, checks for path/dev/i2c{bus}as well as
/dev/i2c-{bus}now. #62 udevrule files to help with hardware permissions. #63- GPIO - support for OrangePi Zero boards. #71
- GPIO - support for counter pins. #75
- Config option
conditionsallows matching a key at the same level to a value.
Useful for sections or options that are required only for certain modes. #77 - Update all modules to use config conditions. #78
-
Changed
- Convert all string formatting to use f-strings. This change means you must be using
a minimum Python version of 3.6. #49 - Convert all logging to use lazy formatting. This should save some time building log
messages for disabled log levels. #49 - Logger
get_module_loggernow uses entire module name aftermodulesinstead of
only selecting the element after the last period. #49 - Move
mproprequirement up into core, now modules don't need to make sure it is
installed. #49 - MQTT - Messages arriving on
{node}/{property}/+/#will match and the callback
for the property will be called. The callback should further inspect the topic before
taking action. #49 - LED - Remove the modified version of
libsacnthat was bundled with the LED module.
The needed modifications are now available upstream in version 1.4.5. #51 - Updated Adafruit Platform Detect version from 1.x to 2.x. #54
- Consolidate
get_module_loggerandget_loggerinto single function and remove
leadingmqttanyfrom all logger names. #56 log_tracebacknow formats entire traceback into a single log entry on a new line,
like a standard stack trace. #66- GPIO access has been moved into the core, allowing all modules access to GPIO pins
as needed. #64 - GPIO access is now acheived using the
peripherylibrary via the newcdev
interface, with a fallback to the oldersysfsaccess. This moves MQTTany away
from the now depreciatedwiringpilibrary and opens the door for easy support
of any SBC that supportscdevorsysfsGPIO access. #64
- Convert all string formatting to use f-strings. This change means you must be using
-
Fixed
- Remove requirements file for old MCP230xx module that was removed in v0.10.0.
- Fix logger checking if
TRACElogging was enabled forWARNmessages. - Core not exiting correctly if an exception occurred in the core. #49
- Logging not truncating process name or logger name, this could have resulted in
misaligned log entries. #56 - LED - fix error on unload if array animation manager was never started. #67
- LED - fix permission check for non-SPI outputs on Raspberry Pi arrays. #68
v0.11.0
-
Added
- XSET module to allow sending
xsetcommands to control screensaver,
screen power options, etc.
- XSET module to allow sending
-
Changed
- Begin using Python Black code formatter. This has resulted in a massive commit as
there are changes to most files. All changes made by Black have been reviewed and
no errors were found.
- Begin using Python Black code formatter. This has resulted in a massive commit as
-
Fixed
- MQTT not handling absolute topics correctly.
- Incorrect reference to
rpiGPIOin ODroid GPIO interface.