Итак. Дано: куб Aqara подключенный к Home assistant через deconz и желание что-нибудь еще придумать. У меня несколько выключателей IKEA которые прекрасно диммируют свет. Захотелось сделать подобное с помощью куба, поскольку он управляет светом в спальне.
Здесь можно почитать о моих экспериментах с кубом. На их основе и будем вносить усовершенствования.
Итак. Для начала добавим input_select чтобы можно было отслеживать, сам процесс диммирования
cuberotate: name: Cube Rotate options: - None - Rotate initial: None icon: mdi:cube-scan
Теперь добавим несколько скриптов для диммирования
cube_lights_up: alias: Светильники плавное увеличение sequence: - service: input_select.select_option data_template: entity_id: input_select.cuberotate option: Rotate - service: deconz.configure data: entity: light.bedroom field: "/action" data: {"bri_inc":254, "transitiontime":50} cube_lights_down: alias: Светильники плавное уменьшение sequence: - service: input_select.select_option data_template: entity_id: input_select.cuberotate option: Rotate - service: deconz.configure data: entity: light.bedroom field: "/action" data: {"bri_inc":-254, "transitiontime":50} cube_lights_stop: alias: Светильники остановка sequence: - service: deconz.configure data: entity: light.bedroom field: "/action" data: {"bri_inc":0} - service: input_select.select_option data_template: entity_id: input_select.cuberotate option: None cube_lights_255: alias: Светильники полная яркость sequence: - service: light.turn_on data: entity_id: - light.bedroom brightness: 255 cube_lights_1: alias: Светильники минимальная яркость sequence: - service: light.turn_on data: entity_id: - light.bedroom brightness: 1
Ну а теперь собственно автоматизации:
- alias: Светильники в спальне яркость Куб trigger: platform: event event_type: deconz_event event_data: id: lumi_sensor_cube_aqgl01_30 condition: condition: and conditions: - condition: state entity_id: light.bedroom state: 'on' - condition: state entity_id: input_select.cubemode state: 'Lights' - condition: state entity_id: input_select.cuberotate state: 'None' action: - service_template: > {% if trigger.event.data.event | float < -3000 and trigger.event.data.event | float >= -10000 %} script.cube_lights_down {% elif trigger.event.data.event | float > 3000 and trigger.event.data.event | float < 10000 %} script.cube_lights_up {% elif trigger.event.data.event | float > 10000 %} script.cube_lights_255 {%elif trigger.event.data.event | float < -10000 %} script.cube_lights_1 {% else %} {% endif %} data: entity_id: light.bedroom - alias: Светильники в спальне остановка Куб trigger: platform: event event_type: deconz_event event_data: id: lumi_sensor_cube_aqgl01_30 condition: condition: and conditions: - condition: state entity_id: light.bedroom state: 'on' - condition: state entity_id: input_select.cubemode state: 'Lights' - condition: state entity_id: input_select.cuberotate state: 'Rotate' action: - service_template: > {% if trigger.event.data.event | float < -3000 %} script.cube_lights_stop {% elif trigger.event.data.event | float > 3000 %} script.cube_lights_stop {% else %} {% endif %} data: entity_id: light.bedroom
Итак, что получилось. Небольшие повороты отсекаются, чтобы не было ложных срабатываний автоматизаций. кручение кубика выставляет максимальную или минимальную яркость. Поворот на 90 градусов (примерно) запускает диммирование, которое останавливается аналогичным поворотом в противоположную сторону. (Если честно, то можно повернуть и в ту же сторону, но так звучит круче) Вот собственно и все.
Кубик едет :) в закладки ;-)
Правильно понимаю, что кубик через стик сс2531 так не умеет? )
Я не знаю в каком виде идут команды от z2m стиков. Особенно что касается поворота. если там можно определить угол поворота, то почему бы и нет.
Угол то есть, а вот с выбором стороны не понятно. в логах есть параметр side (battery=100, voltage=3035, linkquality=97, side=1, angle=-20.63, action=wakeup) но как бы я не крутил кубик - это значение не меняется.
Все таки лучше спросить у тех кто подключает куб через z2m стики. Но то, что куб отдаёт направление поворота, это точно. У deconz это положительные и отрицательные значения.
side — номер грани, на которой лежит куб в момент события поворота. Навправление поворота определяется типом экшна: "rotate_right" или "rotate_left" (и, кажется, ещё и знаком перед значением параметра angle).
Это всё касается zigbee2mqtt, если что.
Тут разобрался, в целом не обязательно куб поворачивать, чтобы он увидел сторону, достаточно четкого движения и "удара" о поверхность - тогда фиксируется смена грани.
Осталось понять с помощью какого синтаксиса HA можно использовать значение side
Посчитайте мою статью. У меня Input select выбирается в зависимости от грани и используется в качестве условия для разных автоматизаций для разных граней
Часть смог перевести на z2m, но не могу понять в скрипте назначение
Классно получилось)