Проекты 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мкА, что нас полностью устраивает. Откуда брать номера сцен для кнопокКастомная модель для настройки.Предлагается разработать кастомный протокол, для привязки действия кнопки и номера сцены. Увы, но никем, кроме нас это поддержиыаться не будет. Generic PropertyМожно использовать модель Generic Property для привязки действия кнопки и номера сцены. К сожалению, ID свойств тоже стандартизированы и тем нет, ни номера действия, но номера сцены. Придется все-равно городить кастомщину. Scene Register GetМожно, с помощью сообщения Scene Register Get получить список всех доступных сцен на сервере и назначить первые три на действия кнопки. Однако, мы не можем настраивать порядок сцен на сервере, а следовательно, сцены к действиям будут привязываться хаотично. К тому же, непонятно как часто пульт должен опращивать сервер, чтобы сохранять актуальность список. Слишком частые запросы могут быстро посадить батарею. КонстантаСамый простой метод, на котором я скорее всего остановлюсь - это выбрать 3x4 статических номера и присвоить их сквозным способом 3-м действия всех 4-х кнопок. Например, выбирем диапазон 15000 - 15011 и первые три назначим первой кнопке, следующие три - второй, и т.д. Недостаткоми этого метода является невозможность иметь один номер сцены на разные кнопки и на разных пультах номера сцен будут пересекаться. Однако, если использовать в качестве сервера Home Assistant, то там модуль можно реализовать так, что к ID евента можно добавить адрес отправителя, поэтому номера сцен от разных пультов будут генерировать разные события. Для обычных устройств, ущерб от пересечения номеров сцен тоже можно уменьшить, если использовать разные адреса серверов, хотя некоторые органичения все-равно остануться, вроде невозможности установки одних и тех же сцен для одних и тех же узлов на разных кнопках разных пультов. Ссылки |