All notable changes to this project will be documented in this file.
The format is loosely based on Keep a Changelog. Since version 1.0.0, we try to follow the Semantic Versioning standard.
1.11.0-beta.6 - 2024-06-30
- Window Covering now uses
motor_state
(if provided) to improve the user experience in the Home.app (see #852 / #854)
1.11.0-beta.5 - 2024-05-21
- Overlooked an
supported
check in the previous version. This is now also removed, so devices not officially supported by Zigbee2MQTT can now be used.
1.11.0-beta.4 - 2024-05-21
- Process devices not yet supported by Zigbee2MQTT if they provide exposes information. This should allow automatically detected features to already be exposed.
- Non-zero brightness levels below 1% are now rounded up to 1%. (see #673)
1.11.0-beta.3 - 2024-01-04
- Drop support for unsupported Node.js version. Now only testing against v18 and v20 (current LTS releases).
- Updated several dependencies, including mqtt.
- Compatibility with Zigbee2MQTT v1.35.0 fixed (see fixes in
v1.9.3-rc.0
)
1.11.0-beta.2 - 2023-01-16
- Support for Carbon Dioxide (
co2
) sensors added. (see #609)
- Moved the Availability feature behind an experimental feature flag (
AVAILABILITY
), as it is not working reliably yet. (see #593 - Added additional options for Adaptive Lighting, to have it only update the color temperature when the light is on and to have it send a
transition
when updating the color temperature. These options are not yet available via the config user interface. (see #590)
1.11.0-beta.1 - 2023-01-09
- Updated
config.schema.json
to haveexclude
set tofalse
if it is unchecked in the Config UI. This should allow users to override a globalexclude: true
setting for specific devices, via the web interface. (see #610) - Debug messages can now be output as
info
, by settingdebug_as_info
totrue
in the plugin configuration. (see docs for more information) - Added option
ignore_z2m_online
to device configuration, to not mark devices as offline when Zigbee2MQTT reports itself as offline or when the connection to the MQTT broker is lost.
- Adaptive Lighting: Added support for Adaptive Lighting. Currently this needs to be enabled manually in the plugin configuration, using converter specific configuration for
light
. In a future release this might get enabled by default. (see #30 / #488)
Based on v1.9.2, as v1.9.3 was made later as a hotfix.
- Properties/exposes information can now be excluded based on the
endpoint
, using theexcluded_endpoints
configuration option. (relates to #517) - Window Covering can now be requested to stop moving (see #483)
- Availability information from Zigbee2MQTT, if available, is now used to determine if a device is reachable or not. (see #36)
- Exposes information is now filtered before passing it to the service handlers. This should make the behavior more consistent and reduce complexity of the service handlers for improved maintainability.
- MQTT messages being published by this plugin are now logged to the
debug
log level by default. This can be changed by settinglog.mqtt_publish
to the desired log level (e.g.info
) in the plugin configuration. (see #518)
- When combining exposes information of grouped devices, the
value_min
andvalue_max
were not being combined correctly. This has been fixed, so that the resulting range is supported by all devices in the group.
- Compatibility with Zigbee2MQTT v1.35.0 fixed (see fixes in
v1.9.3-rc.0
)
- Type checks on Z2M models now explicitly check that the input is not null or undefined, to prevent crashes when we get unexpected data. (see #794)
- When creating or updating an accessory, previously it was only checked if the device definition was not undefined. Now we check if it seems to be a valid device definition. (see #794)
1.9.2 - 2022-10-01
- Fixed a bug introduced in 1.9.1 that caused several types of devices to stop working, due to a coding error. (see #535 for more details)
1.9.1 - 2022-10-01
- Added additional checks to prevent certain errors from occuring during creation of a service handler. (see #443)
- Removed some default values from
config.schema.json
to prevent certain illegal configurations from being created by accident.
1.9.0 - 2022-06-29
- Some converters now have some additional configuration options which allows you to select an alternative implementation. (see
#458 and related issues)
switch
can be configured as aswitch
(default) oroutlet
occupancy
can be configured asoccupancy
(default) ormotion
device_temperature
is now exposed as a temperature sensor. Due to a change in Zigbee2MQTT, you might need to update your Homebridge configuration to excludedevice_temperature
if you previously excludedtemperature
for some devices. (see #456)
- Refactored
basic_sensor.ts
as the file was getting way too huge. This should not change any behavior.
1.8.0 - 2022-05-09
- It is now possible to include globally excluded properties for specific devices by using
included_keys
in the device configuration. (see #406)
- Support for Zigbee2MQTT Groups is now enabled by default. The experimental option
GROUPS
is therefore removed. (see #277)
- When using Homebridge v1.4.0 or newer, it is currently recommended to turn off state caching in Zigbee2MQTT (put
cache_state: false
in the configuration). See issue #383 for more information.
1.7.0 - 2022-02-20
- Ignore
exclude: false
if it is part of thedefaults
in the plugin configuration, as it may conflict withexclude_grouped_devices
(also see #277)
- Remove stale accessories when an updated group list is received.
- When determining the
exposes
information for a group, theendpoint
specific information is removed. This should allow devices with multiple endpoints to be grouped as well.
1.7.0-rc.1 - 2021-12-20
- Exposes information for an accessory (device or group) can be overridden via the JSON configuration, using the
exposes
key in the device configuration. This is not part of the configuration UI and uses the sameexposes
structure as Zigbee2MQTT. ⚠️ Experimental features: Starting from this release, features/changes can be introduced as experimental. This means that you have to enable these features/changes explicitly in your configuration and you must be aware that things might break. The main reason for adding this, is so that users can try out changes/features that are still being worked on and provide feedback based on their experiences. Please refer to the documentation on plugin configuration for more information.- Experimental
GROUPS
:- Adds accessories for all the groups for which it can determine valid exposes information.
- Configuration option to exclude all devices that are part of a group (
exclude_grouped_devices
, default:false
).
- Experimental
COLOR_MODE
:
- Bug in
exposesAreEqual
causing differences in entries withfeatures
not to be recognized.
1.6.2 - 2021-12-05
- Only log Zigbee2MQTT version when it is changed (or its the first discovery). (fixes #322)
- Air Quality sensor with a PM2.5 sensor were incorrectly exposed as a PM10 sensor in HomeKit.
1.6.1 - 2021-11-21
- Removed unnecessary code from climate service.
- Polling mechanism for
cover
improved. In past releases the plugin could stop requesting updates too early. (see #292)
- This plugin is no longer tested against Node.js v10, as this version is no longer supported by the community.
1.6.0 - 2021-08-24
- Vibration sensors are now supported and exposed as Motion sensors.
- Presence sensors are now supported and exposed as Occupancy sensors.
1.5.0 - 2021-08-23
- Support for Air Quality Sensors (
voc
,pm10
,pm25
). (see #241)
1.4.0 - 2021-08-16
- The plugin will now log an error if the output format of Zigbee2MQTT (
experimental.output
) appears to have been configured incorrectly. - Support for
cover
devices that only exposetilt
and noposition
. (see #254)
- Take over numeric range for "passthrough" characteristics, if provided by Zigbee2MQTT. Set minimum value for Ambient Light Level to 0, if range is not provided. (see #235)
- Remove (top level) items with an undefined/null value from state updates. This should prevent the warnings mentioned in #234.
1.3.0 - 2021-06-20
- Support for horizontal tilt of a
cover
(see #147)
For cover
devices the following changes/fixes are in this release:
- Update target position, when the state is assumed to be "stopped", to improve Home.app UX. (see #189)
- Only request
position
when it is actually "gettable" and we did not receive an update recently (which should normally happen if the device supports reporting). - Changed how the
PositionState
is updated based on the received positions. No longer try to interpret the direction (HomeKit does this automatically so it seems).
1.2.0 - 2021-05-14
- Default device options can now be set using the
defaults
key in the plugin configuration. - Add plugin option
mqtt.disable_qos
to force the QoS Level to0
(best effort) for published messages. This might be needed when using certain (cloud) MQTT brokers. (see #150)
1.1.3 - 2021-03-08
- Names of services are correctly updated when the
friendly_name
from Zigbee2MQTT has been updated. For the updated names to show up in the Home app, it might be necessary to restart Homebridge. (see #76) - When a new list of devices is published to
zigbee2mqtt/bridge/devices
, only the changed accessories will be updated, instead of all of them. (Wrong default value forforce_update
argument ofupdateDeviceInformation
has been corrected.))
1.1.2 - 2021-03-03
- Set range for Color Temperature characteristic of Lightbulb to improve control experience. (see #88)
- Improved logging when handling a (potential) device update fails. (PR #78)
- Ignore empty device updates. (PR #78)
1.1.1 - 2021-02-09
- Color change of lights using
color_hs
was not sent correctly. (fix for #57)
1.1.0 - 2021-02-07
- Improved
config.schema.json
to improve the plugin configuration screen a bit.
- Requires Zigbee2MQTT v1.17.0 or newer
- Uses device information provided by new API in Zigbee2MQTT, so all supported devices should work immediately.
- Added support for remote controls (
action
) and thermostats / radiator valves (climate
). -
⚠️ IMPORTANT: Because of this major change, it might be that you have to reconfigure some of your accessories in your HomeKit setup, if you are coming from v0.0.10 or earlier, as names/identifiers of certain services might have changed. This should be a one time action only, because of this new major version.
1.1.0-beta.4 - 2021-02-07
- Temperature sensors showed up as unavailable if the temperature dropped below 0°C, because the default range in HomeKit is 0 to 100°C (see #49).
1.1.0-beta.3 - 2021-01-30
LockCurrentState
wasn't updated because the monitor was not initialized properly. (fix for #46)
1.1.0-beta.2 - 2021-01-30
- Device documentation is now available on the website and generated based on information from the zigbee-herdsman-converters package, which is also used by Zigbee2MQTT.
- Support for
climate
devices added (like thermostats and TRVs). (see #40)
- Removed unhandled exceptions to prevent Homebridge from crashing. If the plugin does not work as expected, please investigate the Homebridge logs up on startup to see if there is anything wrong with your plugin configuration or any of the dependencies.
1.1.0-beta.1 - 2021-01-16
- Zigbee2MQTT minimal version check ignores the
-dev
suffix, so that the newer development build is also accepted. - Updated Name characteristic of the Accessory Information service with the
friendly_name
received from Zigbee2MQTT. - Fixed some typo's, both in code and documentation.
- Changed casing of Zigbee2MQTT in logs and such.
1.1.0-beta.0 - 2021-01-10
- Remote control/push button support (devices that expose
action
will have a Stateless Programmable Switch service now).
- Report an error in the logs if the zigbee2mqtt version is too old. Also check the legacy
bridge/config
topic for this. - Bumped the minimum zigbee2mqtt version to the first official release with the new API, version 1.17.0.
- When the zigbee2mqtt version requirement is not met, this plugin will throw an error which will cause Homebridge to stop.
- Migration from pre-v1.0.0 should be a bit smoother. In previous version, all pre-v1.0.0 accessories would be fully removed and then get recreated. This caused all of the automations, room assignments etc. in HomeKit to get lost. With this version the migration from pre-v1.0.0 versions of this plugin should be smoother, although there still probably will be some services/accessories for which this information gets lost.
- Plugin configuration is now (partially) validated on start up. An incorrect configuration will cause Homebridge to stop.
1.0.2 - 2020-12-30
- Clean up old lodash dependency.
1.0.1 - 2020-12-30
- Cleaned up published package by "fixing"
.npmignore
1.0.0 - 2020-12-30
-
⚠️ IMPORTANT: Because the way this plugin works and constructs the accessories, it might be that you have to reconfigure some of your accessories in your HomeKit setup as names/identifiers of certain services might have changed. This should be a one time action, because of this new major version. - Use
exposes
information added in zigbee2mqtt v1.16.0 (which is the minimum version required by this plugin from now on). This information is used to determine the available characteristics (and to which services they belong). - Refactored internals: split up parts of the code and added automated tests.
- Cleaned up
README.md
- Refactored/changed color conversion for converting hue/saturation to XY, based on some documentation from Philips Hue.
- Documentation has been added in the
docs
folder and on the new homebridge-z2m website.
- Support for Electrical measurement information (added in 0.0.8) was removed. I personally did not have a use case for this information, so instead I decided to focus my efforts on other parts of this major release. If you miss this, please open up a feature request and also let me know what this information is useful for within a HomeKit context.
0.0.10 - 2020-10-31
- Only try to parse JSON of a possible status update if we find a matching accessory. Previously errors could show up for the
action
/click
topics, due to the fixed support fo friendly names with a/
in v0.0.8. - Clean up old/unhandled services upon restoring an accessory.
- Exclude
action
andclick
key globally as long as there is no support for push buttons/remotes yet. - Removed
voltage
key from global exclude list, due to previously added electrical measurement information (in v0.0.8). - Refactored the Service to JSON key mapping so it's a separate function.
- When performing a get operation, all keys (derived from the services that are present) will be added if none where specified. (previously indicated in #19 that it shouldn't be empty)
0.0.9 - 2020-10-20
- Extended Battery Service with several keys:
battery_low
,battery_state
andac_connected
. Note thatbattery_low
will also fake the battery level in case thebattery
key is not present. - Support for Gas Detection Sensors (
gas
). These will show up on HomeKit as Leak Sensor. As far as I know there is no built-in type for Methane Gas Sensors.
- Very slightly refactored the service creation for keys starting with
state_
, to make it more generic.
0.0.8 - 2020-10-19
- Electrical measurement information added for switches/lights that support it (using the Elgato Eve Energy characteristics).
- Removed some default values from
config.schema.json
so that the config UI will not generate an invalid configuration. (see #16) - Fix support for friendly names that contain a (
/
) forward slash. (see #19)
0.0.7 - 2020-10-15
- Restored support for Air Pressure Sensors.
- Configure excluded/ignored keys per device. (see #12)
- BREAKING: The configuration JSON slightly changed because of the new feature. This means that excluding devices is now done in a different way. See the example in the README. (related to #12)
- Extended range of MQTT version setting, so that version 3 can also be selected when needed. The default is still version 4. (see #13)
- Added a try catch block and logging in the function that handles received MQTT messages. (see #13)
0.0.6 - 2020-09-09
- Support for switches (relays) with more than two outputs (added a lot of keys starting with
state_
). - Carbon Monoxide Sensor support.
- Lock Mechanism support, based on
state
[LOCK
,UNLOCK
] andlock_state
, if available. (see #9)
- Call to
registerPlatform
changed to include package name (see #8). - Use global
hap
variable to access characteristics, instead of storing references in each ServiceWrapper.
0.0.5 - 2020-07-05
- Removed support for Air Pressure Sensors (temporarily) due to #6.
0.0.4 - 2020-07-05
- Devices can now be excluded using their
friendly_name
as well as their IEEE address. - Support for switches that use
state_left
andstate_right
. (#5) - Support for Air Pressure Sensors
- README now mentions how to run the "development" version.
- Hue Dimmer Switch appears as a light bulb (#1)
0.0.3 - 2020-07-01
- Devices can now be excluded via the configuration (
devices
>exclude
).
0.0.2 - 2020-06-30
- Restore BatteryServuce and WindowConvering properly on start up.
- Improve state determination for WindowCovering.