mirror of
https://github.com/anklimov/lighthub
synced 2026-10-28 11:15:00 +00:00
Frozen copy of the official wiki (lazyhome.ru) used as the audit reference while the repo documentation is brought in line with the code.
352 lines
12 KiB
Plaintext
352 lines
12 KiB
Plaintext
Контроллер LightHub прекрасно интегрируется в систему Home Assistant с использованием MQTT
|
||
|
||
В настоящее время, реализованы и используются следующие интеграции:
|
||
|
||
* Реле и дискретные выключатели
|
||
* Диммируемые одноцветные светильники
|
||
* Диммируемые цветные светильники (RGB/RGBW/RGBWW)
|
||
* Термостаты теплого пола, помещений
|
||
* Кондиционер
|
||
* Увлажнитель
|
||
* Сенсоры температуры
|
||
* Сенсоры влажности
|
||
* Сенсоры CO2
|
||
* Любые устройства, управляемые по протоколу Modbus
|
||
|
||
Документация скорректирована, так как HA внес большие изменения в компонент MQTT в 2023 году
|
||
Параметры брокера теперь настраиваются только через пользовательский интерфейс в разделе Настройки/Интеграции и в файле конфигурации настройки следует убрать
|
||
|
||
Теперь предполагается, что настройки MQTT вынесены в отдельный файл mqtt.yaml
|
||
который подгружается директивой
|
||
<code>
|
||
mqtt: !include mqtt.yaml
|
||
</code>
|
||
В файле configuration.yaml
|
||
Это, действительно, удобнее.
|
||
|
||
Далее, даны примеры разделов файла mqtt.yaml, которые можно скорректировать и использовать для своих нужд
|
||
|
||
|
||
|
||
===== Сенсоры =====
|
||
В примерах ниже:
|
||
Имя контроллера: light-d2
|
||
|
||
Предположим, что к этому контроллеру подключен датчик качества воздуха CCS811 и HDC1080 и в конфиге контроллера для этого заданы такие вот настройки:
|
||
|
||
"98":{"T":5,"emit":"myhome/sensor/airq"},
|
||
"99":{"T":6,"emit":"myhome/sensor/humidity"}
|
||
|
||
Также, на pin3 подключен сенсор температуры и влажности dht-22, расположенный в ванной, с такой вот настройкой в JSON конфиге контроллера:
|
||
|
||
"3":{"T":4,"emit":"dht"},
|
||
|
||
ну и к шине 1-wire подключен термометр в прихожей
|
||
|
||
|
||
"ow":{"28EEA76713160204":{"emit":"t_aentr"}
|
||
}
|
||
|
||
В этом случае, конфигурация HomeAssistant будет выглядеть вот таким образом:
|
||
|
||
<code>
|
||
sensor:
|
||
- name: "CO2"
|
||
icon: "mdi:periodic-table-co2"
|
||
expire_after: 600
|
||
state_topic: "myhome/sensor/airq/CO2"
|
||
unit_of_measurement: 'ppm'
|
||
availability_topic: "myhome/light-d2/$state"
|
||
payload_available: "ready"
|
||
payload_not_available: "disconnected"
|
||
|
||
- name: "TVOC"
|
||
expire_after: 600
|
||
state_topic: "myhome/sensor/airq/TVOC"
|
||
unit_of_measurement: 'ppm'
|
||
availability_topic: "myhome/light-d2/$state"
|
||
payload_available: "ready"
|
||
payload_not_available: "disconnected"
|
||
|
||
- name: "Влажность"
|
||
icon: "mdi:water-percent"
|
||
expire_after: 600
|
||
state_topic: "myhome/sensor/humidity/H"
|
||
unit_of_measurement: '%'
|
||
availability_topic: "myhome/light-d2/$state"
|
||
payload_available: "ready"
|
||
payload_not_available: "disconnected"
|
||
|
||
|
||
- name: "Влажность ванная DHT"
|
||
icon: "mdi:water-percent"
|
||
expire_after: 600
|
||
state_topic: "myhome/s_out/dhtH"
|
||
unit_of_measurement: '%'
|
||
|
||
- name: "Воздух ванная DHT"
|
||
icon: "mdi:thermometer"
|
||
expire_after: 600
|
||
state_topic: "myhome/s_out/dhtT"
|
||
unit_of_measurement: '°C'
|
||
|
||
- name: "Воздух прихожая DS"
|
||
icon: "mdi:thermometer"
|
||
expire_after: 600
|
||
state_topic: "myhome/s_out/t_aentr"
|
||
unit_of_measurement: '°C'
|
||
|
||
</code>
|
||
|
||
|
||
===== Светильники =====
|
||
<code>
|
||
light:
|
||
# дискретный выключатель света (вкл-выкл)
|
||
- name: "Прихожая"
|
||
state_topic: "myhome/s_out/spots_en"
|
||
command_topic: "myhome/in/spots_en"
|
||
qos: 1
|
||
|
||
# Диммируемый одноцветный светильник
|
||
- name: Кухня точки
|
||
command_topic: "myhome/in/ktc/cmd"
|
||
state_topic: "myhome/s_out/ktc/cmd"
|
||
# brightness_scale: 100 - начиная с версии 3.0.0 контроллера, настройка не нужна
|
||
brightness_command_topic: "myhome/in/ktc/set"
|
||
brightness_state_topic: "myhome/s_out/ktc/set"
|
||
|
||
# Цветной LED светильник
|
||
|
||
- name: Кухня LED
|
||
command_topic: "myhome/in/kuh/cmd"
|
||
state_topic: "myhome/s_out/kuh/cmd"
|
||
hs_command_topic: "myhome/in/kuh/set"
|
||
hs_state_topic: "myhome/s_out/kuh/set"
|
||
hs_value_template: "{%set a=value.split(',')%}
|
||
{% if a[1] -%}
|
||
{{a[0]+','+a[1]}}
|
||
{%- endif %}"
|
||
|
||
brightness_command_topic: "myhome/in/kuh/set"
|
||
brightness_state_topic: "myhome/s_out/kuh/set"
|
||
brightness_value_template: "{{ value.split(',')[2] }}"
|
||
|
||
color_temp_value_template: "{{ value.split(',')[3] }}" # Опционально
|
||
color_temp_command_topic: "myhome/in/kuh/temp" # Опционально
|
||
color_temp_state_topic: "myhome/s_out/kuh/set" # Опционально
|
||
|
||
|
||
#Новая версия интеграции. Поддерживает не только HSV но и RGBW нотацию цвета.
|
||
#Полезно, если на DMX вход контроллера подключена сенсорная панель, которая выдает значения каждого из каналов в отдельности
|
||
#- то есть RGBW. В этом случае контроллер прозрачно транслирует такой цвет в статусный топик, добавляя признак RGB в начало payload
|
||
# предполагается имя контроллера light
|
||
|
||
- name: Кухня по новому LED
|
||
command_topic: "myhome/light/kuh/cmd"
|
||
state_topic: "myhome/s_out/kuh/cmd"
|
||
hs_command_topic: "myhome/light/kuh/set"
|
||
hs_state_topic: "myhome/s_out/kuh/set"
|
||
brightness_command_topic: "myhome/light/kuh/set"
|
||
brightness_state_topic: "myhome/s_out/kuh/set"
|
||
color_temp_command_topic: "myhome/light/kuh/temp"
|
||
color_temp_state_topic: "myhome/s_out/kuh/set"
|
||
rgbw_state_topic: "myhome/s_out/kuh/set"
|
||
|
||
hs_value_template: "{%if not value is match('RGB')%}
|
||
{%set a=value.split(',')%}
|
||
{%if a[1]%}
|
||
{{a[0]+','+a[1]}}
|
||
{%endif%}
|
||
{% endif %}"
|
||
|
||
brightness_value_template: "{%if not value is match('RGB')%}
|
||
{%set a=value.split(',')%}
|
||
{% if a[2] %}
|
||
{{ a[2] }}
|
||
{% endif %}
|
||
{% endif %}"
|
||
|
||
color_temp_value_template: "{%if not value is match('RGB')%}
|
||
{%set a=value.split(',')%}
|
||
{% if a[3] %}
|
||
{{ a[3] }}
|
||
{% endif %}
|
||
{% endif %}"
|
||
|
||
rgbw_value_template: "{%if value is match('RGB')%}
|
||
{{value.split()[1]}}
|
||
{% endif %}"
|
||
|
||
|
||
|
||
</code>
|
||
|
||
===== Выключатели =====
|
||
|
||
<code>
|
||
switch:
|
||
- name: "Air heat"
|
||
icon: "mdi:radiator"
|
||
state_topic: "myhome/s_out/fm_t/cmd"
|
||
command_topic: "myhome/in/fm_t/cmd"
|
||
|
||
- name: "Air auto"
|
||
icon: "mdi:auto-fix"
|
||
state_topic: "myhome/s_out/fm_auto"
|
||
command_topic: "myhome/in/fm_auto"
|
||
|
||
- name: "Перекрыть воду"
|
||
icon: "mdi:water-off"
|
||
state_topic: "myhome/s_out/alock_leak"
|
||
command_topic: "myhome/in/alock"
|
||
qos: 1
|
||
|
||
- name: "Сушилки"
|
||
icon: "mdi:radiator"
|
||
state_topic: "myhome/s_out/h_polotenc"
|
||
command_topic: "myhome/in/h_polotenc"
|
||
qos: 1
|
||
|
||
- name: "Бойлер большой"
|
||
state_topic: "myhome/s_out/h_boil1"
|
||
command_topic: "myhome/in/h_boil1"
|
||
qos: 1
|
||
|
||
- name: "Бойлер малый"
|
||
state_topic: "myhome/s_out/h_boil2"
|
||
command_topic: "myhome/in/h_boil2"
|
||
qos: 1
|
||
</code>
|
||
|
||
===== Климат и термостаты =====
|
||
|
||
<code>
|
||
climate:
|
||
|
||
- name: Кондиционер
|
||
modes:
|
||
- "off"
|
||
- "cool"
|
||
- "fan_only"
|
||
- "heat"
|
||
- "auto"
|
||
fan_modes:
|
||
- "auto"
|
||
- "high"
|
||
- "medium"
|
||
- "low"
|
||
swing_modes:
|
||
- "on"
|
||
- "off"
|
||
swing_mode_state_topic: "myhome/s_out/ac/swing"
|
||
swing_mode_command_topic: "myhome/in/ac/swing"
|
||
swing_mode_state_template: "{{value|lower()}}"
|
||
mode_command_topic: "myhome/in/ac/cmd"
|
||
mode_state_topic: "myhome/s_out/ac/cmd"
|
||
mode_state_template: "{{value|lower()}}"
|
||
temperature_command_topic: "myhome/in/ac/set"
|
||
temperature_state_topic: "myhome/s_out/ac/set"
|
||
fan_mode_command_topic: "myhome/in/ac/fan"
|
||
fan_mode_state_topic: "myhome/s_out/ac/fan"
|
||
fan_mode_state_template: "{{value|lower()}}"
|
||
current_temperature_topic: "myhome/s_out/ac/temp"
|
||
|
||
- name: "Теплый пол душ"
|
||
modes:
|
||
- "off"
|
||
- "heat"
|
||
- "auto"
|
||
mode_command_topic: "myhome/in/h_bath1/cmd"
|
||
temperature_command_topic: "myhome/in/h_bath1/set"
|
||
mode_state_topic: "myhome/s_out/h_bath1/cmd"
|
||
mode_state_template: "{{value|lower()}}"
|
||
temperature_state_topic: "myhome/s_out/h_bath1/set"
|
||
current_temperature_topic: "myhome/s_out/t_bath1"
|
||
|
||
|
||
- name: "Климат спальня"
|
||
modes:
|
||
- "off"
|
||
- "heat"
|
||
- "auto"
|
||
- "cool"
|
||
- "fan_only"
|
||
mode_command_topic: "myhome/in/c_bedr/cmd"
|
||
temperature_command_topic: "myhome/in/c_bedr/set"
|
||
mode_state_topic: "myhome/s_out/c_bedr/cmd"
|
||
mode_state_template: "{{value|lower()}}"
|
||
temperature_state_topic: "myhome/s_out/c_bedr/set"
|
||
current_temperature_topic: "myhome/s_out/t_bedr"
|
||
|
||
</code>
|
||
|
||
|
||
===== Увлажнитель =====
|
||
|
||
<code>
|
||
humidifier:
|
||
- name: "Увлажнитель пар"
|
||
command_topic: "myhome/plug00/reghum/cmd"
|
||
state_topic: "myhome/s_out/reghum/cmd"
|
||
target_humidity_command_topic: "myhome/plug00/reghum/set"
|
||
target_humidity_state_topic: "myhome/s_out/reghum/set"
|
||
current_humidity_topic: "myhome/s_out/plughum"
|
||
max_humidity: 60
|
||
min_humidity: 20
|
||
</code>
|
||
|
||
===== Приточка =====
|
||
<code>
|
||
climate:
|
||
|
||
- name: Вентиляция
|
||
modes:
|
||
- "off"
|
||
- "fan_only"
|
||
- "heat"
|
||
- "auto"
|
||
mode_command_topic: "myhome/in/fm/cmd"
|
||
mode_state_topic: "myhome/s_out/fm/cmd"
|
||
mode_state_template: "{{value|lower()}}"
|
||
temperature_command_topic: "myhome/in/fm_t/set"
|
||
temperature_state_topic: "myhome/s_out/fm_t/set"
|
||
current_temperature_topic: "myhome/s_out/fm_stat"
|
||
current_temperature_template: "{{ value_json.t }}"
|
||
|
||
sensor:
|
||
|
||
- name: "Heater power"
|
||
state_topic: "myhome/s_out/fm_stat"
|
||
icon: "mdi:radiator"
|
||
unit_of_measurement: '%'
|
||
value_template: "{{ value_json.pwr }}"
|
||
|
||
- name: "Fan RPM"
|
||
icon: "mdi:fan"
|
||
state_topic: "myhome/s_out/fm_stat"
|
||
unit_of_measurement: 'RPM'
|
||
value_template: "{{ value_json.RPM }}"
|
||
|
||
- name: "Fan Current"
|
||
icon: "mdi:current-ac"
|
||
state_topic: "myhome/s_out/fm_stat"
|
||
unit_of_measurement: 'A'
|
||
value_template: "{{ value_json.I }}"
|
||
|
||
- name: "Fan Fault"
|
||
icon: "mdi:alert"
|
||
state_topic: "myhome/s_out/fm_stat"
|
||
value_template: "{{ value_json.flt }}"
|
||
# - platform: mqtt
|
||
# name: "Fan Temp"
|
||
# state_topic: "myhome/s_out/fm_stat"
|
||
# unit_of_measurement: '°C'
|
||
# value_template: "{{ value_json.t }}"
|
||
# - platform: mqtt
|
||
# name: "Fan Temp set"
|
||
# state_topic: "myhome/s_out/fm_stat"
|
||
# unit_of_measurement: '°C'
|
||
# value_template: "{{ value_json.set }}"
|
||
|
||
</code> |