Skip to content

Releases: CrazyIvan359/mqttany

v0.14.3

02 Mar 01:52
b3d4817
Compare
Choose a tag to compare
v0.14.3 Pre-release
Pre-release
  • Fixed
    • Bug introduced in #96 causing MCP230xx devices to be uncontrollable and not report pin states. Register properties on classes were renamed but not changed in all places. [#105]

v0.14.2

28 Jan 03:51
33d94a8
Compare
Choose a tag to compare
v0.14.2 Pre-release
Pre-release
  • Fixed
    • Bug introduced in #108 and not
      fixed in #113 caused by passing
      an invalid bias setting to periphery.

v0.14.1

22 Jan 01:33
c399541
Compare
Choose a tag to compare
v0.14.1 Pre-release
Pre-release
  • Fixed
    • Bug introduced in #108 causing
      interrupts to not work on kernels <5.5. [#113]

v0.14.0

21 Jan 02:14
4f48674
Compare
Choose a tag to compare
v0.14.0 Pre-release
Pre-release
  • Added

    • Kernel version check to determine GPIO cdev availability and capabilities. #108
    • Raspberry Pi 4B support. #109
    • Raspberry Pi pull down support to board definitions since they support it. #111
  • Fixed

    • Unknown and Generic Linux boards missing superclass init. #103
    • GPIO error Failed to setup GPIOxx using cdev, an invalid argument was given
      caused by attempting to use cdev bias setting that was only introduced in Linux
      kernel v5.5. Fixes #106. #108

v0.13.0

24 Dec 16:31
7b4235a
Compare
Choose a tag to compare
v0.13.0 Pre-release
Pre-release
  • 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_address function from base bus class 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

20 Dec 21:30
e62638f
Compare
Choose a tag to compare
v0.12.2 Pre-release
Pre-release
  • Changed

    • GPIO CDev interrupts now use Python timestamp instead of event timestamp. On some
      systems it seems that it reports uptime nanoseconds, not epoch nanoseconds. Fixes
      #86. #88
  • Fixed

    • Math error in GPIO debounce calculation, multiplied when I should have divided. Also
      corrects cast error in CDev interrupt where epoch nanoseconds (1.6×1015)
      is cast to a 32-bit integer (max 2.15×109). Fixes #85. #87

v0.12.1

06 Dec 19:47
7891663
Compare
Choose a tag to compare
v0.12.1 Pre-release
Pre-release
  • Changed

    • Config parser no long converts selection keys to strings before matching. #82
  • Added

    • Config parser now considers required sections with defaults for all options to be
      valid and will populate the section in the returned configuration. #81
  • Fixed

    • Config parser was reporting valid configuration for optional conditional sections
      containing invalid values. Fixes problem 1 in #80. #81
    • YAML returning booleans for unquoted on or off strings, booleans have been
      added as accepted values where applicable to avoid confusion. Fixes #80. #82

v0.12.0

18 Oct 15:55
9409d5a
Compare
Choose a tag to compare
v0.12.0 Pre-release
Pre-release

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 topic options 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 ON or OFF. #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 ON or OFF. #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 fps option 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 direction to pin mode to be less specific and lay
      ground work for additional pin modes. #55
    • GPIO - move interrupt, invert, and initial settings into a digital
      subsection in config. This was done to align with the new counter pin type to
      distinguish which pin type these settings apply to. #78
  • Added

    • Colorized log output to terminal.
    • .pylintrc file.
    • 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 secret to obfuscate values in the log for passwords, etc. #53
    • I2C - If bus is a number, checks for path /dev/i2c{bus} as well as
      /dev/i2c-{bus} now. #62
    • udev rule files to help with hardware permissions. #63
    • GPIO - support for OrangePi Zero boards. #71
    • GPIO - support for counter pins. #75
    • Config option conditions allows 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_logger now uses entire module name after modules instead of
      only selecting the element after the last period. #49
    • Move mprop requirement 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 libsacn that 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_logger and get_logger into single function and remove
      leading mqttany from all logger names. #56
    • log_traceback now 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 periphery library via the new cdev
      interface, with a fallback to the older sysfs access. This moves MQTTany away
      from the now depreciated wiringpi library and opens the door for easy support
      of any SBC that supports cdev or sysfs GPIO access. #64
  • Fixed

    • Remove requirements file for old MCP230xx module that was removed in v0.10.0.
    • Fix logger checking if TRACE logging was enabled for WARN messages.
    • 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

27 Aug 21:49
46faa70
Compare
Choose a tag to compare
v0.11.0 Pre-release
Pre-release
  • Added

    • XSET module to allow sending xset commands to control screensaver,
      screen power options, etc.
  • 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.
  • Fixed

    • MQTT not handling absolute topics correctly.
    • Incorrect reference to rpiGPIO in ODroid GPIO interface.

v0.10.3

10 May 04:58
cd2ff4c
Compare
Choose a tag to compare
v0.10.3 Pre-release
Pre-release
  • Fixed
    • I2C device MCP230xx throwing TypeError: can only concatenate list (not "int") to list
      when initializing devices. (#43)