|
Проекты GitHub SourceForge |
BtMesh /
MOESSceneSwitchПереключатель сцен.Создан на базе MOES Wireless Scene Switch 23/32 Данный выключатель изначально сделан для ZigBee, но с помощью переходника удалось поставить в него модуль с nRF52. Удивительно, но у MOES есть модели такого же пульта для BT Mesh, но в продаже их найти невозможно.
Концепция работыПредлагается, как в оригинале, оставит 3 действия на кнопку: нажатие, двойное нажатие и длинное нажатие.
Если пульт не подключен к сети, он потребляет много энергии, поэтому его нужно выключать полностью по таймауту. Процедура должна выглядеть так:
Предполагается, что в качестве клиента будут выступать не сколько другие узлы сети, вроде розеток или выключателей, сколько Home Assistant, в котором будет ограниченно реализован сервер сцен, и который будет тупо переводить сообщения Recall во внутренние эвенты. Впрочем, с обычными устройствами пульт тоже должен работать. Если посчитать, что у-во должно работать 160 дней от одной батарейки CR2032, то в режиме ожидания оно должно потреблять не более 45мкА. В документации написано, что потребление после установки Friendship может опускаться до 20-30мкА, что нас полностью устраивает. Дальнейшее изучение показало, что к контроллеру NRF52840 нужно подключить дополнительный низкочастотный кварц, иначе потребление не будет опускаться ниже 470мкА. В качестве выхода, можно перейти на менее точный, но и менее прожорливый RC генератор. С ним ток уменьшится до 11мкА со всплесками потребления. Эти всплески, видимо, и дают средние 20-30мкА. Но я все-таки решил переделать переходник для модуля E73 с возможностью допайки внешнего кварца. Откуда брать номера сцен для кнопокКастомная модель для настройки.Предлагается разработать кастомный протокол, для привязки действия кнопки и номера сцены. Увы, но никем, кроме нас это поддерживаться не будет. Generic PropertyМожно использовать модель Generic Property для привязки действия кнопки и номера сцены. К сожалению, ID свойств тоже стандартизированы и тем нет, ни номера действия, но номера сцены. Придется все-равно городить кастомщину. КонстантаСамый простой метод, на котором я скорее всего остановлюсь - это выбрать 3x4 статических номера и присвоить их сквозным способом 3-м действия всех 4-х кнопок. Например, выбирем диапазон 15000 - 15011 и первые три назначим первой кнопке, следующие три - второй, и т.д. Недостатками этого метода является невозможность иметь один номер сцены на разные кнопки и на разных пультах номера сцен будут пересекаться. Однако, если использовать в качестве сервера Home Assistant, то там модуль можно реализовать так, что к ID евента можно добавить адрес отправителя, поэтому номера сцен от разных пультов будут генерировать разные события. Для обычных устройств, ущерб от пересечения номеров сцен тоже можно уменьшить, если использовать разные адреса серверов, хотя некоторые ограничения все-равно останутся, вроде невозможности установки одних и тех же сцен для одних и тех же узлов на разных кнопках разных пультов. Специальный режим BLE конфигурацииВ конце-концов было принято решение реализовать специальный режим BLE конфигурации. При длительном нажатии (более 10с) на 3-ю кнопку, устройство переходит в режим BLE, регистрирует кастомный сервис и ждет передачи специальной конфигурационной структуры. По истечении определенного времени (60с) устройство снова переходит в режим Mesh узла. TODO: Описать протокол и структуру. Ссылки |