Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Group support #15

Closed
WoodsterDK opened this issue May 3, 2018 · 24 comments
Closed

Group support #15

WoodsterDK opened this issue May 3, 2018 · 24 comments
Labels
feature request Feature request

Comments

@WoodsterDK
Copy link

Hi there,

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

@tb-killa
Copy link
Contributor

tb-killa commented May 3, 2018

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".

@Koenkk
Copy link
Owner

Koenkk commented May 3, 2018

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

@Koenkk Koenkk added the question label May 3, 2018
@WoodsterDK
Copy link
Author

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.

@palitu
Copy link

palitu commented May 4, 2018 via email

@ciotlosm
Copy link
Contributor

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.

@Koenkk
Copy link
Owner

Koenkk commented May 10, 2018

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

@subzero79
Copy link

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.

@Koenkk Koenkk reopened this Aug 9, 2018
@Koenkk Koenkk added feature request Feature request and removed question labels Aug 9, 2018
@subzero79
Copy link

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"

@Koenkk
Copy link
Owner

Koenkk commented Aug 28, 2018

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

@ryanbeaton
Copy link

@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

@subzero79
Copy link

@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.

@subzero79
Copy link

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

@subzero79
Copy link

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

@tb-killa
Copy link
Contributor

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 ;) ?

@Koenkk
Copy link
Owner

Koenkk commented Sep 11, 2018

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

@tb-killa
Copy link
Contributor

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.

@splitice
Copy link

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.

@kthamm
Copy link

kthamm commented Nov 28, 2018

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"
}
}

@ryanbeaton
Copy link

Some group work happening in here
#102 (comment)

Koenkk added a commit that referenced this issue Dec 20, 2018
@Koenkk
Copy link
Owner

Koenkk commented Dec 21, 2018

Sneak peak: https://www.youtube.com/watch?v=3zI8mg0opzY

Koenkk added a commit to Koenkk/zigbee-shepherd that referenced this issue Dec 21, 2018
Koenkk added a commit to Koenkk/zigbee-herdsman-converters that referenced this issue Dec 21, 2018
Koenkk added a commit to Koenkk/zigbee-herdsman-converters that referenced this issue Dec 21, 2018
Koenkk added a commit that referenced this issue Dec 21, 2018
* Start on group support. #15

* Implement publishing to zigbee groups. #15

* Complete first version of group support.

* Fix tests.
Koenkk added a commit that referenced this issue Dec 23, 2018
Koenkk added a commit to Koenkk/Z-Stack-firmware that referenced this issue Dec 23, 2018
@qosmio
Copy link
Contributor

qosmio commented Dec 25, 2018

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.

@subzero79
Copy link

subzero79 commented Dec 26, 2018

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?

@Koenkk
Copy link
Owner

Koenkk commented Dec 26, 2018

@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)

Koenkk added a commit that referenced this issue Dec 27, 2018
@Koenkk Koenkk mentioned this issue Dec 27, 2018
1 task
@Koenkk
Copy link
Owner

Koenkk commented Dec 27, 2018

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

@Koenkk Koenkk closed this as completed Dec 27, 2018
qm3ster pushed a commit to zigbeer/zigbeer that referenced this issue Mar 11, 2019
wilmardo pushed a commit to wilmardo/zigbee2mqtt that referenced this issue Sep 26, 2019
* Start on group support. Koenkk#15

* Implement publishing to zigbee groups. Koenkk#15

* Complete first version of group support.

* Fix tests.
wilmardo pushed a commit to wilmardo/zigbee2mqtt that referenced this issue Sep 26, 2019
wilmardo pushed a commit to wilmardo/zigbee2mqtt that referenced this issue Sep 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Feature request
Projects
None yet
Development

No branches or pull requests

10 participants