Replies: 163 comments 601 replies
-
I'd like to remove the |
Beta Was this translation helpful? Give feedback.
-
My suggestion is to remove |
Beta Was this translation helpful? Give feedback.
-
I'd also like to remove the duplicate |
Beta Was this translation helpful? Give feedback.
-
So what's the timeframe for 2.0.0 approximately? (I am asking if I should do a larger clean-up PR for Home Assistant discovery instead of adding Also, wouldn't it be easier if there was a |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
How about implementing a tool to translate a valid 1.xx configuration to a valid 2.0 configuration? Possibly with some instructions for porting actually incompatible features, but only when present. The thing I liked about this project was its stability (only since the last 10 or so 1.xy releases). Why would you ruin your (until this decision) great reputation? Software can always be made to be backwards compatible and it's not like that's hard to accomplish (every design patterns book even explains how to do that). It's just not a "cool" thing. Software has utility when it does work and you don't need to track its development. Every second people need to care about you making things "better", is lost productivity. Why are you breaking APIs and existing configurations again (that would want to upgrade to version 2)? |
Beta Was this translation helpful? Give feedback.
-
I am in favor of breaking change for 2.0 and major updates. It is not always possible or desirable to keep old stuff. I have a question about the 1.x z2m.
Is there a policy for z2m ? |
Beta Was this translation helpful? Give feedback.
-
What are those supposed to be replaced by ? I read here that actions are replaced by event, but how would it work with devices like old Ikea remotes, as i don't see events implemented yet ? |
Beta Was this translation helpful? Give feedback.
-
So with Z2M 2.0 , will it be true that I cannot enable permit join via MQTT, wait up to 5 mins for a device to join, interview and configure then disable permit join via MQTT ? |
Beta Was this translation helpful? Give feedback.
-
I've been enjoying Zigbee2MQTT for years now. Many thanks for maintaining such a great product so diligently. Hats off from me. |
Beta Was this translation helpful? Give feedback.
-
I look at the proposed changelist and everything is really promising @Koenkk, but one thing i want to put up for discussion, and that is the removal of I myself, and assume a lot of people use other automation platform, for example Node-RED. The HA-NR integration is greate, device triggers also added so basically this change should not be a prolem, right? Sadly, it is, generally as device triggers work, you cannot target multiple device with one selector, in the past I wrote a lot of common subflow/function that use the generic state triggers and filters entities by regex, because I use consistent naming for my entities, not really need to deploy 100s of device triggers just use, for example this regex: Can we at least shift the deprecation of this action/click entities because i assume that i not the only one that has such a use-case. |
Beta Was this translation helpful? Give feedback.
-
I may have missed this elsewhere, but I think it's worth coming up with a plan for the What if:
|
Beta Was this translation helpful? Give feedback.
-
I have been using Zigbee2mqtt for years. Many thanks and my respect for your great work. |
Beta Was this translation helpful? Give feedback.
-
It would be good if some of the changes can be brought forward into v1 to enable people to migrate their configs off legacy sooner - e.g. introduce the change to update sensors alongside the current setup. |
Beta Was this translation helpful? Give feedback.
-
This is probably the bottom of your list of priorities, but can we see some UI/UX improvements? thanks |
Beta Was this translation helpful? Give feedback.
-
Breaking compatibility with ezsp devices without an upgrade path for hacked Silvercrest/Lidl devices with Silicon Labs chips in them, is just contributing to a huge pile of electronic waste without any justification. If you actually knew what you were doing, you wouldn't remove support for devices that work perfectly (uptime/availability measured in years). One major point of trust in a software project, is that once support for a device exists and there are users that want to use such a device, you make it compatible for whatever features were available previously. If someone credible were to fork zigbee2mqtt or make an independent different implementation (also independent of HA), then I would have no reason not to switch, since you already have broken that basic trust. Probably I will just buy a couple of replacement devices, but I would never have bought that e-waste if zigbee2mqtt hadn't supported it earlier. Why should I buy anything you recommend now? There's such a thing as credibility and you already lost it. |
Beta Was this translation helpful? Give feedback.
-
Why does there seem to be no explanation around why changing to device triggers via mqtt is now preferred? Surely there has to be a reason |
Beta Was this translation helpful? Give feedback.
-
What was the reason to drop the mqtt config API for |
Beta Was this translation helpful? Give feedback.
-
i have no idea how to fix my thing i tried both Ember and Zstack and i get errors, i have a sonoff dongle 3.0 Plus this is the error code i get now
|
Beta Was this translation helpful? Give feedback.
-
Sorry for not reading everything here before posting but there is quite a lot going on here.... I have no issues and just want to ask one question. I just upgraded to 2.0.0-2 and made damn sure to follow this guide (no issues at all, network with 70+ devices, all works, great work to everyone involved!) I did however notice one thing, I am 100% sure I had this in my configuration file before upgrade.
After upgrade however it's not present any more, I would assume this is expected and it's gone since it's now "default values"? Hopefully someone can confirm my thinking, otherwise I need to add it again and restart Z2M I guess. |
Beta Was this translation helpful? Give feedback.
-
Hi @Koenkk, thanks for the release! When do you plan to roll out the next z2m patch release? |
Beta Was this translation helpful? Give feedback.
-
@Koenkk thanks for the update, working wonderful so far and I also migrated over to device triggers. I'm really thankful for the work that you do here! However I have one question, I know that you have to press the buttons on remotes (like the IKEA TRADFRI Dimmer) at least once so that Homeassistant picks them up? |
Beta Was this translation helpful? Give feedback.
-
@Koenkk and the rest of the team that work on z2m - thank you for everything you do. It's amazing and incredibly generous to the community. My upgrade went perfectly - 70 devices. To those casting shade on the efforts of this project - please uninstall and find another project to haunt. Your negativity is not helpful and not appreciated by anyone. |
Beta Was this translation helpful? Give feedback.
-
Hi All, I am trying to understand what I need to do to upgrade. I have read the document and am I right in thinking that all I have to do (as a minimum) is add:
to my configuration.yaml, update and reboot? I'm not a super programmer (glorified hobbyist) and it is a little scary reading the document as there is some I don't quite understand 😅. If I have read it right, the biggest change is that some of the attributes have changed names, so my automation's may break until I update them? I am running HA on an X86 with "Home Assistant Operating System". I know I am being dumb but I wanted to check I am taking the right steps before I hit update! |
Beta Was this translation helpful? Give feedback.
-
Issue with Zigbee2MQTT 2.0.0 Upgrade and Rollback to Version 1.42** |
Beta Was this translation helpful? Give feedback.
-
Don't worry! |
Beta Was this translation helpful? Give feedback.
-
You're right! Blocking updates in AdGuard Home won’t directly fix the issue with missing action entities in Home Assistant. However, it prevents automatic updates to potentially unstable versions of Zigbee2MQTT, which could cause device compatibility issues—like the one I encountered with Loginovo ZG-101ZL and Tuya TS0044. The missing action entities are most likely related to changes in device converters or integration between Zigbee2MQTT and Home Assistant. For now, staying on version 1.42 keeps everything stable. Thanks for pointing this out! It’s important to be precise. 😊 |
Beta Was this translation helpful? Give feedback.
-
You're absolutely right! Disabling auto-updates works—but only up to a point. In my case, Home Assistant forced the Zigbee2MQTT update within 24 hours, even though I had auto-updates turned off. That's why I had to block updates through AdGuard Home as an extra layer of protection. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the suggestion! I actually already tried adding those configurations (legacy: false, adapter type, and all advanced options). You can see my full troubleshooting process above. Unfortunately, even after applying these settings and restarting Zigbee2MQTT and Home Assistant OS, the action entities were still missing, and devices like Loginovo ZG-101ZL and Tuya TS0044 weren't working correctly. In the end, rolling back to version 1.42 was the only solution that fully restored functionality. But I appreciate the input! 👍 |
Beta Was this translation helpful? Give feedback.
-
It’s quite clear that some people have had issues with the upgrade. I suspect not a lot of people actually read release notes, and something as big as “breaking changes” should stand out. I understand some people may have had some unhappy family members when all they want is for things to “just work”, but reading and understanding more will probably help. There are also plenty of people commenting about how they are experts in coding and logic, but not a single one of them has forked or submitted PRs. I completed the upgrade yesterday, and have not had a single problem as yet. For a moment I thought I lost a device, but turns out it was playing up before the upgrade and just needed a restart, which is a known problem for that device. Good job guys, keep up the good work! |
Beta Was this translation helpful? Give feedback.
-
This discussion contains a list of breaking changes for Zigbee2MQTT 2.0.0.
Tip
Most of the breaking changes are about removing legacy features that have been deprecated for years (replaced & improved since), and as such, automatically disabled for newer networks.
How to get prepared (before updating to 2.0.0)?
In order to get the minimal amount of breaking changes when upgrading from 1.x.x to 2.0.0, make sure you have the following in your Zigbee2MQTT
configuration.yaml
:Also it is recommended to explicitly add a
serial.adapter
to yourconfiguration.yaml
, see #24364 for more info.Important
Check you current
configuration.yaml
, it is likely that some of these values are already present, and set tofalse
, if your network is recent enough (past few years). The breaking changes marked with: Only breaking when legacy is enabled can be ignored if your configuration already has these values set tofalse
.Breaking changes
General
USB adapter discovery error (No valid USB adapter found)
, see Z2M 2.0.0: `USB adapter discovery error (No valid USB adapter found)` #24364 how to fix this.zstack
is no longer the default foradapter
setting. If Zigbee2MQTT fails to start saying the adapter could not be discovered, it means your adapter uses an identification not currently recognized by Zigbee2MQTT, make sure to specify theadapter
setting if that's the case.Bare-metal installations (no Docker/Home Assistant add-on)
configuration.yaml
from repo, this will result in the following error when updating:git checkout data/configuration.example.yaml mv data/configuration.yaml data/configuration.yaml.bak ./update.sh # (update as you usually do) mv data/configuration.yaml.bak data/configuration.yaml
pnpm
is now used instead ofnpm
, the installation instructions andupdate.sh
script has been updated accordingly. For existing installations you need to executenpm install -g pnpm
before updating../update.sh
script, make sure you pull changes from git withgit pull --no-rebase
(after stopping Zigbee2MQTT).pnpm run clean
, then start Zigbee2MQTT again.Home Assistant
update_state
andupdate_available
entities have been removed (succeeded by theupdate
entities).homeassistant
property, useexposes
instead.sensor
/select
forselect
/number
/button
entities, the full list of removed entities per model can be found here.hass/status
Home Assistant status topic anymore,homeassistant/status
is used instead (ifhomeassistant.status_topic
is not set in your Z2Mconfiguration.yaml
). Double check that Home Assistant is using this status topic by going to: HA -> Settings -> Devices & services -> MQTT -> Configure -> Re-configure MQTT -> Next; the Birth message topic should behomeassistant/status
.homeassistant.legacy_triggers
setting). This means allsensor.*_click
entities are removed. Use the MQTT device trigger instead.sensor.*_action
entities). It's recommended to use the MQTT device trigger instead. In case you really need the action sensors, add the following to yourconfiguration.yaml
.homeassistant.legacy_entity_attributes
setting) has been removed. This means that entities discovered by Zigbee2MQTT will no longer have entity attributes (Home Assistant entity attributes are accessed via e.g.states.binary_sensor.my_sensor.attributes
).Device specific
child_lock
on/off values have been changed fromtrue
/false
toLOCK
/UNLOCK
.illuminance_lux
toilluminance
, this breaks in two ways:illuminance_lux
has been removed and the value ofilluminance
changes. Home Assistant users might have to manually enable this sensor via Home Assistant. This affects the following devices: 83633205, MOSZB-140, MOSZB-153, EFEKTA_iAQ3, EFEKTA_PWS_Max, EFEKTA_PWS_MaxPro, EFEKTA_eON29wz, EFEKTA_eFlower_Pro, EFEKTA_iAQ, E2134, POK004, POK011, ROB_200-070-0, HK-SENSOR-4IN1-A, AU-A1ZBPIRS, RADON TriTech ZB, TS0601_illuminance_temperature_humidity_sensor_1, TS0202_3, S-LUX-ZB, TS0222_light, THE01860A, TS0222, LCZ030, MIR-HE200-TY, XFY-CGQ-ZIGB, TS0601_smart_human_presence_sensor_1, Y1_IN, ZY-M100-S_1, ZY-M100-S_2, WZ-M100, ZG-205ZL, ZG-204ZM, YXZBRB58, ZY-M100-24G, ZY-M100-24GV2, ZY-M100-24GV3, MTG075-ZB-RL, RT_ZCZ03Z, ZY-M100-S_3, ZG-205Z, 8750001213, HSE2927E, ZB003-X, 07502L, JS-MC-SENSOR-ZB, KK-ES-J01W, KMPCIL_RES005, RTCGQ11LM, RTCGQ12LM, b-parasite, 7A-SS-ZABC-H0, 5AA-SS-ZA-H0, RTCGQ14LM, RTCGQ15LM, ZNCLBL01LM, GZCGQ01LM, GZCGQ11LM, 07047L, 9290012607, 9290019758, 9290030675, 9290030674, 545D6306, CCT595011, ZSS-ZK-THL, 4512770, TERNCY-PP01, MBD-S, CTM_MBD_Dim, 3RSNL02043Z, WB-MSW-ZIGBEE v.3, MS100, USM-300ZB, PIR313-E.switch
expose andaction
values have been changed, see the device docs for the new values.device_options.legacy
. These breaking changes below can be ignored if you havedevice_options.legacy: false
in yourconfiguration.yaml
:button_*
properties.duration
,rate
,brightness
andtransition
.duration
.step_size
,transition_time
and the following actions:play_pause
,skip_forward
,skip_backward
,rotate_*
.rotate_*
actions.button_*
properties and removedsingle
action.single
action.left
,right
andboth
action (including the*_long
and*_double
actions).to_side
,from_side
,angle
.angle
.repeat
,user
anddata
.duration
.step_size
,transition_time
andskip_*
actions.action
values have been changed, see the device docs for the new values.keypad_lockout
value changedsetpoint_change_source
,setpoint_change_source_timestamp
,remote_sensing
andcontrol_sequence_of_operation
values are now mapped values (string) instead of a number.operation
,setpoint_change_source
,setpoint_change_source_timestamp
,remote_sensing
andcontrol_sequence_of_operation
values are now mapped values (string) instead of a number.direction
andnumber
weekly_schedule
payload.action
, removedduration
andcounter
.click
.External converters and extensions
external_converters
setting is no longer used. Instead all external converters insidedata/external_converters
directory are now automatically loaded. Make sure to move all your external converters to this directory.data/external_extensions
instead ofdata/extension
. Make sure to rename yourdata/extension
directory (if present) todata/external_extensions
.MQTT api
update_available
property from the device state has been removed (useupdate.state
instead).updateAvailable
toupdate_available
inzigbee2mqtt/bridge/response/device/ota_update/check
.zigbee2mqtt/bridge/request/device/bind
,zigbee2mqtt/bridge/request/group/members/add
,zigbee2mqtt/bridge/request/group/members/remove
andbridge/request/device/configure_reporting
, the endpoint has been moved to theendpoint
property and cannot be set via thedevice
/from
property anymore.zigbee2mqtt/bridge/request/config
MQTT API, this includes the following MQTT topics:zigbee2mqtt/bridge/request/config/last_seen
zigbee2mqtt/bridge/request/config/elapsed
zigbee2mqtt/bridge/request/config/log_level
zigbee2mqtt/bridge/request/config/homeassistant
data
payload in the response is now always empty when there is anerror
, this affectszigbee2mqtt/bridge/response/device/configure
andzigbee2mqtt/bridge/response/device/ota_update/*
.permit_join_timeout
has been removed fromzigbee2mqtt/bridge/info
, it has been replaced bypermit_join_end
which represents the Unix timestamp when permit joining will end.advanced.legacy_api
setting), this includes the following MQTT topics:zigbee2mqtt/bridge/log
zigbee2mqtt/bridge/(bind|unbind)
zigbee2mqtt/bridge/group/*
zigbee2mqtt/bridge/networkmap/*
zigbee2mqtt/bridge/ota_update
zigbee2mqtt/bridge/device/DEVICE_FRIENDLY_NAME/get_group_membership
zigbee2mqtt/bridge/config/*
zigbee2mqtt/bridge/configure
Removed features and settings
Important
The new configuration update system will automatically (re)move deprecated settings the first time you start Z2M after updating to 2.0.0. Make sure to check the
data/migration-1-to-2.log
after startup. See the docs for more info.advanced.report
setting).advanced.soft_reset_timeout
setting).devices.IEEE_ADDR.options.retrieve_state
setting).availability_timeout
,availability_blocklist
,availability_passlist
,availability_blacklist
,availability_whitelist
andadvanced.legacy_availability_payload
(see availability docs for the new settings).advanced.legacy_availability_payload
,zigbee2mqtt/bridge/state
will now always be a JSON object ({"state":"online"}
or{"state":"offline"}
).permit_join
setting has been removed, use the frontend or MQTT to permit joining.configuration.yaml
(groups.devices
setting). This will not impact current group members; however, you will no longer be able to add or remove devices from a group through theconfiguration.yaml
.ota.ikea_ota_use_test_url
option has been removed.advanced.homeassistant_discovery_topic
is now inhomeassistant.discovery_topic
advanced.homeassistant_status_topic
is now inhomeassistant.status_topic
advanced.baudrate
is now inserial.baudrate
advanced.rtscts
is now inserial.rtscts
experimental.transmit_power
is now inadvanced.transmit_power
experimental.output
is now inadvanced.output
whitelist
is now inpasslist
ban
is now inblocklist
experimental
section no longer existsPull requests
retrieve_state
zigbee2mqtt.io#3075readAfterWriteTime
zigbee-herdsman-converters#8089configuration.yaml
zigbee2mqtt.io#3104configuration.yaml
#24338illuminance_lux
zigbee-herdsman-converters#8304maximum_packet_size
MQTT setting zigbee2mqtt.io#3228data
in response is always empty onerror
#24971sensor
/select
forselect
/number
/button
entities #25026permit_join_timeout
#25082homeassistant.status_topic
tohomeassistant/status
#25286Beta Was this translation helpful? Give feedback.
All reactions