Zigbee2mqtt: Group support

Created on 3 May 2018  Â·  24Comments  Â·  Source: Koenkk/zigbee2mqtt

Hi there,

I'm using groups for my IKEA Trådfri bulbs - will that be supported/work with this also?

feature request

Most helpful comment

All 24 comments

Edit: I see something on the wiki Page:
https://github.com/zigbeer/zigbee-shepherd/wiki

.bind( Bind this endpoint to the other endpoint or to a group with the specified cluster.)
.unbind( Unbind this endpoint from the other endpoint or from a group with the specified cluster.)

Maybe we could use this to build "Groups".
But here you need some Sort of Logic themselves (Build / Delete Group and Add / Remove Device to Group) via mqtt.

Prefered I would say, use some Sort of Node-Red Logic and Parse the Output to Multiple Zigbee Endpoints via this "Bridge".

I agree with @tb-killa that groups is the responsibility of your home automation software (E.G. home assistant/openHAB).

Well it depends, the groups are easy to do in HA but then the bulbs get turned on by one

If in a zigbee group wouldn't they act in sync?

Well, perhaps the bulbs are to be left at the IKEA gateway, end then the zigbee2mqtt can take care of the Xiaomi components.

I would expect that the group in HASS will turn them on so quickly it would
appear in sync.

On Fri, May 4, 2018 at 1:25 AM, WoodsterDK notifications@github.com wrote:

Well it depends, the groups are easy to do in HA but then the bulbs get
turned on by one

If in a zigbee group wouldn't they act in sync?

Well, perhaps the bulbs are to be left at the IKEA gateway, end then the
zigbee2mqtt can take care of the Xiaomi components.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Koenkk/zigbee2mqtt/issues/15#issuecomment-386372375,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGU9IKwZ0iR0LWmHW7SOj8gBspoEhuwfks5tuz2FgaJpZM4Tw2Tz
.

In my opinion this component should keep it's intended purpose of stateless gateway. The logic and grouping should sit in the "brain" which is usually the "hub". Either homeassistant/hassio or openhab or some other.

Will not be implemented for now. Groups should be created in your home automation software.

Just to comment on this, the sequential turn on/off via home assistant either by group or using the light group platform involves sending the payloads to the mqtt broker, zigbee2mqtt will read one by one, making it not instant. 2 seconds until the last light is off, here is the subscription

Aug 09 11:41:48 zigbee2mqtt/kitchen_1_8ab4/set {"state": "OFF"}
Aug 09 11:41:48 zigbee2mqtt/kitchen_1_8ab4 {"state":"OFF","color_temp":370,"brightness":248}
Aug 09 11:41:48 zigbee2mqtt/kitchen_1_8ab4 {"state":"OFF","color_temp":370,"brightness":248}
Aug 09 11:41:49 zigbee2mqtt/kitchen_2_b44c/set {"state": "OFF"}
Aug 09 11:41:49 zigbee2mqtt/kitchen_2_b44c {"state":"OFF","color_temp":370,"brightness":251}
Aug 09 11:41:49 zigbee2mqtt/kitchen_3_a3a5/set {"state": "OFF"}
Aug 09 11:41:49 zigbee2mqtt/kitchen_2_b44c {"state":"OFF","color_temp":370,"brightness":251}
Aug 09 11:41:49 zigbee2mqtt/kitchen_3_a3a5 {"state":"OFF","color_temp":370,"brightness":250}
Aug 09 11:41:50 zigbee2mqtt/kitchen_3_a3a5 {"state":"OFF","color_temp":370,"brightness":250}
Aug 09 11:41:50 zigbee2mqtt/kitchen_4_b8a5/set {"state": "OFF"}
Aug 09 11:41:50 zigbee2mqtt/kitchen_4_b8a5 {"state":"OFF","color_temp":350}
Aug 09 11:41:50 zigbee2mqtt/kitchen_4_b8a5 {"state":"OFF","color_temp":350}
Aug 09 11:41:48 ha node[16636]: 2018-8-9 11:41:48 INFO Zigbee publish to '0x8418260000018ab4', genOnOff - off - {} - null
Aug 09 11:41:48 ha node[16636]: 2018-8-9 11:41:48 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_1_8ab4', payload: '{"state":"OFF","color_temp":370,"brightness":248}'
Aug 09 11:41:48 ha node[16636]: 2018-8-9 11:41:48 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_1_8ab4', payload: '{"state":"OFF","color_temp":370,"brightness":248}'
Aug 09 11:41:49 ha node[16636]: 2018-8-9 11:41:49 INFO Zigbee publish to '0x841826000001b44c', genOnOff - off - {} - null
Aug 09 11:41:49 ha node[16636]: 2018-8-9 11:41:49 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_2_b44c', payload: '{"state":"OFF","color_temp":370,"brightness":251}'
Aug 09 11:41:49 ha node[16636]: 2018-8-9 11:41:49 INFO Zigbee publish to '0x841826000001a3a5', genOnOff - off - {} - null
Aug 09 11:41:49 ha node[16636]: 2018-8-9 11:41:49 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_2_b44c', payload: '{"state":"OFF","color_temp":370,"brightness":251}'
Aug 09 11:41:49 ha node[16636]: 2018-8-9 11:41:49 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_3_a3a5', payload: '{"state":"OFF","color_temp":370,"brightness":250}'
Aug 09 11:41:50 ha node[16636]: 2018-8-9 11:41:50 INFO MQTT publish, topic: 'zigbee2mqtt/kitchen_3_a3a5', payload: '{"state":"OFF","color_temp":370,"brightness":250}'
Aug 09 11:41:50 ha node[16636]: 2018-8-9 11:41:50 INFO Zigbee publish to '0x841826000001b8a5', genOnOff - off - {} - null

the esp milight project uses groups of bulbs to control them and on/off, brightness and color change is instant for a group of bulbs

IMO this should be implemented in zigbee2mqtt, the bottleneck is mqtt. So the automation sw should be sending one payload.

Going through the shepherd library docs, seems like is supported. The function is bind/unbind

https://github.com/zigbeer/zigbee-shepherd/wiki#API_bind

So basically grab one endpoint and associate other EP(s) with them. This could be a topic for example

zigbee2mqtt/fan_lounge_a950/bind "fan_masterbedroom_825b"

Does that create a group? e.g. after binding, when turning on fan_lounge_a950 does fan_masterbedroom_825b also turn on?

@subzero79 that looks good and there is also an unbind but how to manage ongoing? Would zigbee2mqtt have to keep a database?

Sent with GitHawk

@koenkk from what I read in zigbee docs, yes when an ep is turned on, it should also turn the other binded ep. I was trying yesterday to hardcode a bind to test it in zigbee2mqtt but no luck yet.

@ryanbeaton no, as I understand the db is created, updated and maintained by z.shepherd. Zigbee2mqtt doesn’t touch it.

Is not very clear in zigbee shepherd how to create a group. Because it shows binding two ep, then the other example binding an ep to a group. I would think the group id is created after you first bind two ep. then subsequently you can bind more ep’s to that group Id

sorry i am referring to endpoints as zigbee shepherd mentions, but as i understand only routers should be binded (grouped)? Don't know what would be the purpose of binding endpoints.

This is what i was reading when i was understanding wireshark captures when i found about groups in zigbee

https://www.edn.com/Pdf/ViewPdf?contentItemId=4204960

Maybe we should ask in zigbeer for more clarification

I´v do some research and found some interessting stuff:

First of all: on cc-znp we have some sort of implementation for Group support:
https://github.com/zigbeer/cc-znp/wiki/6.-Z-Stack-MT-API-Reference-Tables#zdo-indication
ZDO_EXT_REMOVE_GROUP ZDO_EXT_REMOVE_ALL_GROUP ZDO_EXT_FIND_ALL_GROUPS_ENDPOINT ZDO_EXT_FIND_GROUP ZDO_EXT_ADD_GROUP ZDO_EXT_COUNT_ALL_GROUPS
so maybe we could build some debug code for first test.

after that i do some sort of research and search on zigbee-shepherd source code for stuff like extAddGroup and found them in the file lib\components\zdo_helper.js.
But sadly
..
extFindGroup: null,
extAddGroup: null,
extCountAllGroups: null,
``
so its not complete implemented on zigbee shepherd themselve.

As i could see now ... for fully implementation we need help and a lot of work!

Maybe @Koenkk could work on this too if moving is finished ;) ?

@splitice have you already made some investigations for your application?

As i could see from my first point .. HalleyAssist zigbee-shepherd fork doesn´t use modification for group support.

@Koenkk: How i could bring cc-znp into zigbee converter ? i think i got a solution (quick) for testing ..
will share if it work correctly.

We have no interest at this time in developing ZS's group support. We just don't need it for our applications.

That being said I'm pretty sure at-least the ZS af layer (af.js) has group support. I'm not sure about adding and removing though.

Any update on this? Still not on focus for ZS? I would really appreciate this feature as I am using three GU10 spots that I would like to turn on/off at the same time.

Another idea I had was to send a single mqtt message to control multiple devices. Would that speed up things? Message could look something like this:

{
"0x7cb03eaa00aed9e2":{
"state":"OFF"
},
"0x7cb03eaa00aed9e3":{
"state":"OFF"
}
}

Some group work happening in here
https://github.com/Koenkk/zigbee2mqtt/issues/102#issuecomment-442379881

THIS was the killer feature that made me finally ditch my Sengled hub. Thank you @Koenkk !

A long with this update, I compiled the updated firmware 7ea1da540939e7249f4330d9248fa5e93bfbac8b using the MAX CLIENT variant. So far, it's been pretty good. Lights are turning off simultaneously now.

My setup is with Home Assistant and using the built in integration plugin. Had a few questions though.

When submitting a command to the group, should the devices send back their updated state or does it need to be queried individually?

Background:

I created a custom mqtt light in home assistant and specified the "group" (ie "Bathroom") in the command topic and a single bulb in that group in the state topic (ie "Bathroom Bulb 1"). My bulbs all follow the pattern "group name" + "_bulb_#" because I created a trigger to listen for the group set topic and fire a python script that will query all light entities matching that pattern and query call mqtt.publish on their states.

Is there a better way of doing this? Not sure if Z2M is going to get further enhancements where individual entities in that group will be queried after setting the group command.

As we add devices should we see an entry for the group in the database? or should the individual database entries pf the devices in the group hold the group id?
I still don't make it work.

edit: I see that we need to reflash the coordinator with a new firmware. Does this fw reduce the number of devices the dongle can hold?

@qosmio @subzero79 soon I will make an issue how to test the groups feature which explains how to use it and how it works. Note that the current MQTT topics are not final (still want to refactor some stuff)

Group support has been implemented, feedback or questions about group support can be asked here: #764

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mpuff picture mpuff  Â·  3Comments

z4rn0x picture z4rn0x  Â·  3Comments

CodeFinder2 picture CodeFinder2  Â·  4Comments

Courty40 picture Courty40  Â·  4Comments

LCerebo picture LCerebo  Â·  3Comments