Очень часто от пользователей, кто только начинает знакомиться с сетью Zigbee, можно услышать вопросы: "а сколько Zigbee-устройств потянет малина?", "я купил стик с антенной, который бьет на 2 км, но он даже на 20м не работает, как быть?"
Сегодня я попытаюсь приоткрыть завесу тайны ответов на эти вопросы - расскажу свой опыт и знания о масштабировании Zigbee-сети.
Надеюсь, начальные знания о Zigbee-терминах у вас уже есть. Будем много идей и мало конкретики. Поэтому, поехали!
Суть проблемы
Со временем, многие пользователи Zigbee-устройств начинают испытывать зуд в труднодоступных местах от следующих проблем:
Все ближайшие к zigbee-координатору закутки уже забиты датчиками и надо расположить новую кнопку достаточно далеко от координатора, чтобы сосед по даче мог сигнализировать вам, что "стол накрыт, а жена ушла по делам".
После последнего подключенного Zigbee-устройства, начались какие-то заморочки с первыми устройствами. А потянет ли координатор еще одну кнопку?
Т.е. можно выделить потребность масштабирования сети в связи с увеличением зоны, которую надо покрыть Zigbee-сетью и в связи с увеличением количества подключаемых устройств.
Проблемы количественного и территориального масштабирования на самом деле очень похожи и поэтому решаются примерно одинаково.
1. Меш вам в помощь
Как вы знаете, в сети Zigbee кроме координатора, есть 2 вида устройств: роутеры и конечные устройства. Именно благодаря роутерам создаются узлы сети, которые и позволяют наращивать протяженность сети и количество ее элементов.
Роутерами обычно являются устройства, подключенные к постоянному питанию (например к сети 220в). Именно это позволяет таким устройствам не спать, а бодрствовать и осуществлять трансляцию сигналов между участниками сети. И еще это позволяет не экономить на энергии для сигналов - в большинстве случаев, дальность распространения сигнала от роутера гораздо больше.
Но можно сделать роутер с такой антенной, который сможет общаться с координатором на большом расстоянии, а уже датчик привязать к этому роутеру.
Уже есть примеры таких роутеров.
2. Больше устройств, не всегда лучше
Сколько zigbee-устройств можно привязать к одному координатору?
Ответом будет тоже вопрос: а какая у вас структура сети и какой координатор?
Однозначно сказать нельзя, если только производитель не указал это в документации.
Для примера возьмем координатор на чипе TI cc2530/cc2531. Именно на этом чипе работает известный многим "колобок" Athom Homey, "спрутстик" или открытый проект zigbee2mqtt.
Одним из недостатков этого чипа является ограниченный размер оперативной памяти (8Кб). И именно поэтому, обычная прошивка имеет ограничение на 15 напрямую подключенных устройств (соседей). Но если мы подключим любое устройство Zigbee-роутер, то подключая остальные устройства через него сможем увеличить общее количество устройств еще на 15. И так для каждого дополнительного роутера. Тут приходит еще одно ограничение - 6 роутеров. А с ростом количества устройств нужно выделять больше размер буфера данных...
Все подобные ограничения задаются параметрами прошивки, и соответственно разные прошивки имеют разные параметры. Поэтому, в случае необходимости большого количества устройств, можно собрать прошивку с соответствующими параметрами, но пожертвовав каким-либо другим функционалом. Разбираться в хитросплетениях этих параметров то еще "удовольствие". Именно поэтому, нет прошивки с максимальными значениями для этих параметров, а есть разные варианты прошивок.
И это еще сейчас в прошивках для cc253* используется старый стек Zigbee Z-Stack 1.2.2, а уже есть новый Z-Stack 3.0. На нем более эффективно сделано управление памятью (позволит больше устройств подключить). Но пока прошивки с новым стиком не приживаются - надо адаптировать код к работе с ними.
Но это касалось чипа TI cc2530/cc2531. На смену этому чипу уже давно пришел обновленный чип cc2538 (до 32Кб памяти). А на смену этому чипу уже есть cc2650 дополнительно с BLE (до 80К памяти) и его уже заменил CC2652R... Но эти чипы дороже старого проверенного cc2530 и не так доступны.
А еще есть deConz ConBee со своими чипами и прошивками - у них с количеством обслуживаемых устройств всё гораздо лучше (заявлено до 200 устройств).
3. Не сетью единой
И вот когда мы уже не можем применить первые два варианта масштабирования, то мы просто решаем поднять еще одну сеть Zigbee - еще один координатор. Тут единственная сложность - приобрести еще один координатор (привет Homey!).
Zigbee-сети должны отличаться Panid (идентификатором сети). А если они территориально будут располагаться в одном месте, то можно сменить и номер канала.
Остается только объединить данные этих сетей в одной системе. Тут всё зависит от используемого программного обеспечения.
В случае использования zigbee-стика в качестве координатора - достаточно воткнуть еще один стик в сервер и добавить его в используемое ПО (если оно позволяет использовать несколько координаторов).
Если сеть поднимается территориально далеко, то можно использовать небольшой компьютер (аля малина/апельсина) и передавать данные по ethernet/wifi сети используя mqtt протокол (для zigbee2mqtt) или настроив multihost (для ioBroker).
А еще можно собрать шлюз wifi-zigbee на базе esp8266 (или ethernet-шлюз на базе adruino), и координатора на чипе cc2530 подключенным по UART и уже этот шлюз завести через TCP-порт.
Заключение
Как видите, варианты масштабирования Zigbee-сети есть и не надо бояться приближающихся количественных ограничений. Если вы технический специалист и способны применить предложенные подходы, то бояться вам нечего. Можно достаточно гибко комбинировать варианты с роутерами и не торопиться перепрошивать координатор. Или же наплодить несколько сетей без особого труда.
Выход всегда есть и дорогу осилит идущий!