Remote control with 8/12/20 buttons Zigbee End Device by TLSR8258 (ZTU module)


Freepad является многофункциональным пультом дистанционного управления устройствами в сети Zigbee. Freepad является конечным устройством, которое питается от батарейки CR2450. Freepad может быть реализован с 8, 12 или 20 кнопками. Нумерация кнопок происходит слева направо, сверху вниз (светодиод сверху). Номер кнопки соответствует номеру endpoint'а.
Прототипом этой версии Freepad'а был проект на CC2530 - “Универсальный пульт Zigbee”
Freepad дает возможность управлять устройствами в сети Zigbee напрямую, без использования автоматизаций в УД.
Выбор работы каждой клавиши выбирается отдельно через Switch type.
toggle - устанавливает режим работы кнопки для включения и выключения какого-либо устройства. Фиксируются только одиночные нажатия. Высылаются команды on, off или toggle в зависимости от настроек Switch actions. Команды высылаются только при нажатии кнопки.momentary - устанавливает режим работы кнопки для включения и выключения какого-либо устройства. Фиксируются только одиночные нажатия. Высылаются команды on, off или toggle в зависимости от настроек Switch actions. Команды высылаются как при нажатии кнопки, так и при ее отпускании. Если Switch action установлен в on, то при нажатии высылается команда on, а при отпускании off. Если Switch action установлен в off, то при нажатии высылается команда off, а при отпускании on. Если Switch action установлен в toggle, то и при нажатии, и при отпускании высылается команда toggle.multifunction - устанавливает режим работы кнопки для отправки actions. Фиксируются одиночное нажатие, двойное нажатие, тройное нажатие, удержание и отпускание кнопки после удержания. Высылаются одноименные actions - "hold", "single", "double", "triple" и "release".brightness_level - устанавливает режим работы кнопки для управления яркостью одной кнопкой. Фиксируется одиночное нажатие, удержание и отпускание после удержания.
toggle на устройство, для изменения его состояния на противоположное.move to level. Устройство должно плавно увеличивать или уменьшать яркость (направление меняется при каждом последующем нажатии), пока последняя не станет равна значению level, который берется из атрибута minLevel или maxLevel. Скорость увеличения/уменьшения яркости берется из атрибута onOffTransitionTime, который можно изменить через dev-консоль. По умолчанию это значение равно 25. Если устройство выключено, то при команде на увеличение яркости устройство включается. При достижении минимального значения яркости устройство не выключается.level stop.brightness_level_up - устанавливает режим работы кнопки для увеличения яркости. Фиксируется одиночные и двойные нажатия, удержание и отпускание после удержания.
on на устройство.step level на устройство (прибавляет к текущему значению яркости примерно 25 единиц). Если устройство выключено, оно включается.move to level. Устройство должно плавно увеличивать яркость, пока последняя не станет максимальной - значение максимальной яркости берется из атрибута maxLevel. Увеличение продолжается, пока удерживается кнопка и не достигнуто значение maxLevel. Скорость увеличения яркости берется из атрибута onOffTransitionTime, который можно изменить через dev-консоль. По умолчанию это значение равно 25. Если устройство было выключено, оно включается.stop level.brightness_level_down - устанавливает режим работы кнопки для уменьшения яркости. Фиксируется одиночные и двойные нажатия, удержание и отпускание после удержания.
off на устройство.step level на устройство (отнимает от текущего значения яркости примерно 25 единиц). Если устройство включено, а яркость достигла минимального предела, оно выключается.move to level. Устройство должно плавно уменьшать яркость, пока последняя не станет минимальной - значение минимальной яркости берется из атрибута minLevel. Уменьшение продолжается, пока удерживается кнопка и не достигнуто значение minLevel. Скорость уменьшения яркости берется из атрибута onOffTransitionTime, который можно изменить через dev-консоль. По умолчанию это значение равно 25. Устройство не выключается если яркость достигла минимального предела.stop level.move_to_color_temperature - устанавливает режим работы кнопки для управления температурой цвета одной кнопкой. Фиксируется удержание и отпускание после удержания.
move to color temperature. Устройство должно плавно увеличивать или уменьшать температуру цвета (направление меняется при каждом последующем нажатии).stop move step.move_to_color_temperature_up - устанавливает режим работы кнопки для увеличения температуры цвета. Фиксируется одиночные нажатия, удержание и отпускание после удержания.
step color temperature на устройство (прибавляет к текущему значению 87 единиц).move to color temperature. Устройство должно плавно увеличивать температуру цвета. Увеличение продолжается, пока удерживается кнопка.stop move step.move_to_color_temperature_down - устанавливает режим работы кнопки для уменьшения температуры цвета. Фиксируется одиночные нажатия, удержание и отпускание после удержания.
step color temperature на устройство (отнимает от текущего значения 87 единиц).move to color temperature. Устройство должно плавно уменьшать температуру цвета. Уменьшение продолжается, пока удерживается кнопка.stop move step.scene - работа со сценами. Сцены создаются в управляемом устройстве во вкладке Scene или в группе. При нажатии на кнопку посылается команда recall scene на устройство или в группу.Принципиальная схема устройства.
Плата.
Гербер можно создать самостоятельно вот из этого проекта
Файлы STL для печатного корпуса - case.rar
Telink IoT Studio и создайте пространство Workspace, где будут храниться проекты.Workspace, который создали в Telink IoT Studio git clone https://github.com/slacky1965/freepad_tlsr_zed.git
Telink IoT Studio - File -> Import -> General -> Existing Projects into Workspace. В Select root directory укажите директорию, куда склонировали проект. Нажмите Finish.makefile к компилятору (он там, куда установили Telink IoT Studio).Build Targets запустите clean для проверки. Если отработает без ошибок, значит все сделано правильно.Проект можно собрать не только из IDE, можно в терминале, находясь в директории проекта, дать команду make.
Прошивка грузится по адресу 0.
FreepadFreepad в сеть нужно 5 раз быстро нажать на любую кнопку, после чего светодиод загорится на 3 секунды. Пока он горит, нужно нажать и удерживать эту же кнопку.Freepad нужно просто быстро нажать 10 раз любую кнопку.Рассмотрим настройку на примере управления яркостью умной лампы.
z2m в Exposes и назначить для 1 кнопки brightness_level_up, а для 2 кнопки brightness_level_down.z2m в Bind и для 1 и 2 endpoint'ов настроить биндинг на нужную лампу.Не забываем после нажатия в web-интерфейсе Bind или выбора режма кнопки Switch type нажимать на любую кнопку на Freepad'е для того, чтобы он проснулся и принял изменения.
Все готово.
Теперь при коротком нажатии на 1 кнопку лампа будет включаться. При двойном нажатии на 1 кнопку будет увеличивать яркость на один шаг. При удержании будет повышать яркость, пока удерживается кнопка.
При коротком нажатии на 2 кнопку лампа будет выключаться. При двойном нажатии на 2 кнопку будет уменьшаться яркость на один шаг. При удержании будет уменьшаться яркость, пока удерживается кнопка.
Если нажимать кнопку один раз в минуту, то батарейки должно хватить на чуть более 1 года.
Но есть возможность еще больше сэкономить на потреблении. Не зависимо от настроек, при нажатии на любую кнопку Freepad будет отправлять команду или экшен на координатор. К примеру, вы не будете использовать автоматизации в УД для управления устройством. Вам нужно просто управлять яркостью. Для этого все лишние бинды можно удалить.
По умолчанию, после настройки биндов для управления яркостью вкладка Bind будет выглядеть так

Если убрать все лишнее, то получим следующее

Теперь, при нажатии на кнопку будет уходить не две команды (одна на лампу, вторая на координатор), а одна (только на лампу).
Нужно только проследить, чтобы в первом endpoint'е остался бинд на кластер genPowerCfg - это отвечает за репортинг заряда батарейки.
Ну и последнее. Пульт в дежурном режиме спит. Если его вообще не трогать, то спать он будет 4 часа. Потом проснется, измерит батарейку, отправит репорт и опять уснет на 4 часа. 4 часа берутся из настройки репортинга батарейки из параметра Max rep interval. Если изменить это значение, то просыпаться Freepad будет уже исходя из этого зачения.
Связаться с Олегом, автором схемы и платы, можно в Telegram.
Связаться со мной можно в Telegram.