(Обновлено 27.10.2023)
Описание
Диммер предназаначен для управления светильниками Yeelight, у которых есть возможность подключения по bluetooth.
Умные лампочки Yeelight к нему не подключаются.
Используется батарейка CR2032.
Работает по Bluetooth.
Внешний вид
Возможности
- Одиночное, двойное, тройное и т.д. нажатие, в принципе нет органичений.
- Вращение влево / вправо, также определяется угол поворота.
- Вращение влево / вправо при нажатой клавише, также определяется угол поворота.
Подключение к системе умного дома
Создание шлюза на ESP32
Для добавления самый простой способ это использовать шлюз на базе ESP32.
Для этого необходимо установить прошивку ESPHome.
Для первичной заливки прошивки проще подключить через USB, в дальнейшем можно будет выполнять обновление по Wi-Fi.
Прошивка для ESPHome
Для подключения диммера потребуются ключи шифрования bluetooth.
Все необходимые параметры для подключения можно получить по инструкциям (см комментарии ниже).
Пример конфигурационного файла на YAML ниже.
esphome:
name: kitchenroom
esp32:
board: nodemcu-32s
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "12345678"
ota:
password: "12345678"
wifi:
ssid: "XXXXXXXX"
password: "XXXXXXXX"
use_address: 192.168.0.XX
text_sensor:
- platform: template
name: "dimmer action"
id: my_number_action
lambda: |-
return {"None"};
number:
- platform: template
name: "dimmer button"
id: my_number_button
optimistic: true
min_value: -1
max_value: 100
step: 1
initial_value : 0
- platform: template
name: "dimmer rotate"
id: my_number_rotate
optimistic: true
min_value: -100
max_value: 100
step: 1
initial_value : 0
- platform: template
name: "dimmer press"
id: my_number_press
optimistic: true
min_value: -100
max_value: 100
step: 1
initial_value : 0
external_components:
- source: github://dentra/esphome-components
sensor:
- platform: miot_ylkg0xyl
# String (Required), device MAC-address. F8:24:41:C8:6F:35 5d4531a6f4ee7ac9e2bb1e4e
#mac_address: "$device_mac_address"
mac_address: "F8:24:41:C8:6F:35"
# String, (Optional), device bind key. Will use "xiaomi_account" from "miot" if absent to automaticaly get the bindkey.
#bindkey: "$device_bindkey"
bindkey: "5d4531a6f4ee7ac9e2bb1e4e"
# List, Automation (Optional), The automation activated when you make specified action
on_short_press:
# List, Any automation
- then:
- number.set:
id: my_number_button
value: !lambda "return x;"
- text_sensor.template.publish:
id: my_number_action
state: 'short_press'
- text_sensor.template.publish:
id: my_number_action
state: !lambda 'return {("short_press_"+String(x)).c_str()};'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_button
value: 0
on_long_press:
- then:
- logger.log: knob was long pressed
- number.set:
id: my_number_button
value: !lambda "return -x;"
- text_sensor.template.publish:
id: my_number_action
state: 'long_press'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_button
value: 0
on_rotate_left:
- then:
- number.set:
id: my_number_rotate
value: !lambda "return -x;"
- text_sensor.template.publish:
id: my_number_action
state: 'rotate_left'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_rotate
value: 0
on_rotate_right:
- then:
- number.set:
id: my_number_rotate
value: !lambda "return x;"
- text_sensor.template.publish:
id: my_number_action
state: 'rotate_right'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_rotate
value: 0
on_rotate_left_pressed:
- then:
- number.set:
id: my_number_press
value: !lambda "return -x;"
- text_sensor.template.publish:
id: my_number_action
state: 'rotate_left_pressed'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_press
value: 0
on_rotate_right_pressed:
- then:
- number.set:
id: my_number_press
value: !lambda "return x;"
- text_sensor.template.publish:
id: my_number_action
state: 'rotate_right_pressed'
- text_sensor.template.publish:
id: my_number_action
state: ''
- delay: 500ms
- number.set:
id: my_number_press
value: 0
Добавление в Home Assistant
Через некоторое время после прошивки ESP32 в Home Assistant появится компонент для подключения ESPHome.
Автоматизация в Home Assistant
Для работы сценария необходимо использовать разные свойства диммера.
Обработка нажатия кнопки
Ниже пример обработки нажатия кнопки.
Например тройное нажатие возвращает свойства:
dimmer action: short_press_3
dimmer button: 3
При длительном нажатии возвращается свойство:
dimmer action: long_press
Обработка вращения кнопки
При вращении возвращается свойство "dimmer action":
rotate_right - вращение не нажатой кнопки вправо
rotate_left - вращение не нажатой кнопки влево
rotate_rigth_pressed - вращение нажатой кнопки вправо
rotate_left_pressed - вращение нажатой кнопки влево
Также в следующих свойствах передается в условных единицах угол поворота:
dimmer_rotate - вращение не нажатой кнопки
dimmer_press - вращение нажатой кнопки
Также можно обрабатывать само значение "dimmer button", "dimmer rotate", "dimmer press" с целью регулировки на определенное значение.
Например можно изменить яркость на 10% или 20%, в зависимости от того какое значение поступило в этом свойстве.