Skip to content

Instantly share code, notes, and snippets.

@silentroach
Last active July 22, 2026 21:34
Show Gist options
  • Select an option

  • Save silentroach/d9cb5c8d0bfda55bd535c85132def42a to your computer and use it in GitHub Desktop.

Select an option

Save silentroach/d9cb5c8d0bfda55bd535c85132def42a to your computer and use it in GitHub Desktop.
Поддержка Royal Thermo Fenix DC через Hommyn -> MQTT -> Home Assistant

У меня на сервере NixOS и конфиги у меня выглядят немного более дружелюбно, здесь же прикладываю то, что им генерится, поэтому формат может быть чуть менее читабельный, тут сорян.

Как в целом сделать так, чтобы через MQTT к этому всему получить доступ, можно почитать где-то тут

# выключатель дисплея на панели
- switch:
availability:
- payload_available: 'false'
payload_not_available: 'true'
topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/error/connection
command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/backlight
icon: mdi:brightness-6
name: Royal Thermo Fenix DC Backlight
payload_off: '0'
payload_on: '1'
state_off: '0'
state_on: '1'
state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/backlight
unique_id: royal_thermo_fenix_dc_31db2a07bbd7dff65909e3b8240db5fd_backlight
# управление вертикальными и горизонтальными жалюзи (правильно назвал?) ведется через
# один топик, где в значении закодировано сразу несколько показателей, поэтому храним его
# отдельно, а в самом модуле управления читаем текущее значение отсюда
- sensor:
name: Royal Thermo Fenix DC Program Raw Data
state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/program_data/0
unique_id: royal_thermo_fenix_dc_program_raw
# сам теплонасос
- climate:
availability:
- payload_available: 'false'
payload_not_available: 'true'
topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/error/connection
current_temperature_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/sensor/temperature
fan_mode_command_template: "{% if value == \"auto\" %}\n {{ 0 }}\n{% elif value\
\ == \"quiet\" %}\n {{ 1 }}\n{% elif value == \"low\" %}\n {{ 2 }}\n{% elif\
\ value == \"medium\" %}\n {{ 3 }}\n{% elif value == \"high\" %}\n {{ 4 }}\n\
{% elif value == \"turbo\" %}\n {{ 5 }}\n{% endif %}\n"
fan_mode_command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/speed
fan_mode_state_template: "{% if value == \"0\" %}\n auto\n{% elif value == \"\
1\" %}\n quiet\n{% elif value == \"2\" %}\n low\n{% elif value == \"3\" %}\n\
\ medium\n{% elif value == \"4\" %}\n high\n{% elif value == \"5\" %}\n turbo\n\
{% endif %}\n"
fan_mode_state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/speed
fan_modes:
- auto
- quiet
- low
- medium
- high
- turbo
icon: mdi:heat-pump
initial: 24
max_temp: 35
min_temp: 10
mode_command_template: "{% if value == \"off\" %}\n {{ 0 }}\n{% elif value ==\
\ \"auto\" %}\n {{ 1 }}\n{% elif value == \"cool\" %}\n {{ 2 }}\n{% elif value\
\ == \"dry\" %}\n {{ 3 }}\n{% elif value == \"heat\" %}\n {{ 4 }}\n{% elif\
\ value == \"fan_only\" %}\n {{ 5 }}\n{% endif %}\n"
mode_command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/mode
mode_state_template: "{% if value == \"0\" %}\n off\n{% elif value == \"1\" %}\n\
\ auto\n{% elif value == \"2\" %}\n cool\n{% elif value == \"3\" %}\n dry\n\
{% elif value == \"4\" %}\n heat\n{% elif value == \"5\" %}\n fan_only\n{%\
\ endif %}\n"
mode_state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/mode
modes:
- auto
- 'off'
- cool
- heat
- dry
- fan_only
name: Royal Thermo Fenix DC
precision: 0.1
retain: true
swing_horizontal_mode_command_template: "{% set current = states('sensor.royal_thermo_fenix_dc_program_raw_data')\
\ | default('00000000') %}\n{% set encoded = 0 %}\n\n{% if value == \"off\"\
\ %}\n {% set encoded = 0 %}\n{% elif value == \"on\" %}\n {% set encoded\
\ = 1 %}\n{% elif value == \"<<\" %}\n {% set encoded = 2 %}\n{% elif value\
\ == \"<\" %}\n {% set encoded = 3 %}\n{% elif value == \"|\" %}\n {% set\
\ encoded = 4 %}\n{% elif value == \">\" %}\n {% set encoded = 5 %}\n{% elif\
\ value == \">>\" %}\n {% set encoded = 6 %}\n{% endif %}\n\n{{ current[:3]\
\ + encoded|string + current[4:] }}\n"
swing_horizontal_mode_command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/program_data/0
swing_horizontal_mode_state_template: "{% set encoded = value[3] | int %}\n\n\
{% if encoded == 0 %}\n off\n{% elif encoded == 1 %}\n on\n{% elif encoded\
\ == 2 %}\n <<\n{% elif encoded == 3 %}\n <\n{% elif encoded == 4 %}\n |\n\
{% elif encoded == 5 %}\n >\n{% elif encoded == 6 %}\n >>\n{% endif %}\n"
swing_horizontal_mode_state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/program_data/0
swing_horizontal_modes:
- 'off'
- 'on'
- '<<'
- <
- '|'
- '>'
- '>>'
swing_mode_command_template: "{% set current = states('sensor.royal_thermo_fenix_dc_program_raw_data')\
\ | default('00000000') %}\n{% set encoded = 0 %}\n\n{% if value == \"off\"\
\ %}\n {% set encoded = 0 %}\n{% elif value == \"on\" %}\n {% set encoded\
\ = 1 %}\n{% elif value == \"10\" %}\n {% set encoded = 2 %}\n{% elif value\
\ == \"30\" %}\n {% set encoded = 3 %}\n{% elif value == \"50\" %}\n {% set\
\ encoded = 4 %}\n{% elif value == \"70\" %}\n {% set encoded = 5 %}\n{% elif\
\ value == \"90\" %}\n {% set encoded = 6 %}\n{% endif %}\n\n{{ current[:1]\
\ + encoded|string + current[2:]}}\n"
swing_mode_command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/program_data/0
swing_mode_state_template: "{% set encoded = value[1] | int %}\n\n{% if encoded\
\ == 0 %}\n off\n{% elif encoded == 1 %}\n on\n{% elif encoded == 2 %}\n \
\ 10\n{% elif encoded == 3 %}\n 30\n{% elif encoded == 4 %}\n 50\n{% elif\
\ encoded == 5 %}\n 70\n{% elif encoded == 6 %}\n 90\n{% endif %}\n"
swing_mode_state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/program_data/0
swing_modes:
- 'off'
- 'on'
- '10'
- '30'
- '50'
- '70'
- '90'
temperature_command_template: '{{value | int}}'
temperature_command_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/control/temperature
temperature_state_topic: rusclimate/15/31db2a07bbd7dff65909e3b8240db5fd/state/temperature
temperature_unit: C
unique_id: royal_thermo_fenix_dc_31db2a07bbd7dff65909e3b8240db5fd
@BoroBro

BoroBro commented Jul 4, 2025

Copy link
Copy Markdown

Спасибо. У меня RTFI-24HN8 и отличаются топики публикуемые донглом. Нет раздела control, всё напрямую лежит в state. В остальном совпадают и есть еще штук 5-7 настроек. Если вы не против, то когда свой конфиг сделаю попозже, положу тут? Вдруг кому пригодится.

@silentroach

Copy link
Copy Markdown
Author

да без проблем

но возможно стоит сделать свой гист и дать на него ссылку и здесь и в том треде)

@DeKaN

DeKaN commented Jul 22, 2026

Copy link
Copy Markdown

@silentroach Можете попробовать проверить работоспособность на интеграции? Хочется проверки на реальном устройстве, потому что конфиги, по которым построено, не всегда актуальны

@silentroach

Copy link
Copy Markdown
Author

Я отказался от hommyn и перешел на lytko

@DeKaN

DeKaN commented Jul 22, 2026

Copy link
Copy Markdown

Спасибо за ответ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment