Giter Club home page Giter Club logo

Comments (24)

Koenkk avatar Koenkk commented on September 24, 2024 12

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

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024 3

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

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024 1

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"

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024 1

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

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024 1

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

from zigbee2mqtt.

tb-killa avatar tb-killa commented on September 24, 2024

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

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024

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

from zigbee2mqtt.

WoodsterDK avatar WoodsterDK commented on September 24, 2024

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.

from zigbee2mqtt.

palitu avatar palitu commented on September 24, 2024

from zigbee2mqtt.

ciotlosm avatar ciotlosm commented on September 24, 2024

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.

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024

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

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024

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.

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024

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

from zigbee2mqtt.

ryanbeaton avatar ryanbeaton commented on September 24, 2024

@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

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024

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

from zigbee2mqtt.

tb-killa avatar tb-killa commented on September 24, 2024

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

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024

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

from zigbee2mqtt.

tb-killa avatar tb-killa commented on September 24, 2024

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.

from zigbee2mqtt.

splitice avatar splitice commented on September 24, 2024

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.

from zigbee2mqtt.

kthamm avatar kthamm commented on September 24, 2024

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

from zigbee2mqtt.

ryanbeaton avatar ryanbeaton commented on September 24, 2024

Some group work happening in here
#102 (comment)

from zigbee2mqtt.

qosmio avatar qosmio commented on September 24, 2024

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.

from zigbee2mqtt.

subzero79 avatar subzero79 commented on September 24, 2024

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?

from zigbee2mqtt.

Koenkk avatar Koenkk commented on September 24, 2024

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

from zigbee2mqtt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.