Skip to content

Управление домофоном через Алису (второй вариант) #9

@xakepShilo

Description

@xakepShilo

Умный Дом Яндекс, как я писал в прошлом подключении управления через Алису, накладывает некоторые ограничения на функционал. Ну и поступила жалоба, что в предыдущих настройках при выключенной функции "Однократного открытия домофона" в программе "Умный дом с Алисой" все переключатели заблокированы. Голосом они управляются, а вот в программе нет.

Будем избавляться от этого недостатка...

Примечание: создание настроек описано с нуля
smartintercom
Для управления домофоном при помощи Умного дома Яндекс должна быть установлена и настроена интеграция yandex_smart_home. Если это уже сделано - пропускаем этот шаг и идем дальше.

Создаем следующий скрипт, который будет устанавливать нужный режим на домофоне:

script:
  smartintercom_mode_set:
    alias: Домофон (установка режима)
    sequence:
    - service: select.select_option
      entity_id: select.smartintercom_modes
      data:
        option: >
          {% if mode == "normal" %}
            Не активен
          {% elif mode == "auto" %}
            Открывать всегда
          {% else %}
            Сброс вызова
          {% endif %}
    mode: queued

Создаем сенсоры:

sensor:
  - platform: template
    sensors:
      smartintercom_modes:
        value_template: >
          {% if is_state('select.smartintercom_modes', 'Не активен') %}
            normal
          {% elif is_state('select.smartintercom_modes', 'Открывать всегда') %}
            auto
          {% else %}
            quiet
          {% endif %}
      smartintercom_sound_invert:
        value_template: >
          {% if is_state("switch.smartintercom_sound", "on") %}
            off
          {% else %}
            on
          {% endif %}
      smartintercom_accept_call_invert:
        value_template: >
          {% if is_state("switch.smartintercom_accept_call", "on") %}
            off
          {% else %}
            on
          {% endif %}

Первый сенсор "smartintercom_modes" - преобразует режим домофона в режим Умного дома Яндекс, второй - инвертирует состояние переключателя "switch.smartintercom_sound".
Под звуком подразумевается произношение фразы при открытии!
Третий сенсор "smartintercom_accept_call_invert" инвертирует состояние однократного открытия.
Инвертирование сделано по причине того, что имеется различие в состоянии на Яндексе и состоянии домофона.

Создаем бинарный сенсор состояния домофона на основе "switch.smartintercom_accept_call"

template:
  - binary_sensor:
    - name: "smartintercom state"
      device_class: "door"
      state: '{{ states("switch.smartintercom_accept_call") }}'

Именно этот сенсор и будет показывать текущее состояние домофона.
В комментарии есть еще одна настройка этого сенсора. Какой вам больше нравится - тот и используйте.

Следом в настройках интеграции "yandex_smart_home", если у вас настроены фильтры, вставляем созданный бинарный сенсор:

  filter:
    include_entities:
      - binary_sensor.smartintercom_state # домофон

В разделе настроек интеграции " entity_config:" вносим следующие строки:

    binary_sensor.smartintercom_state:
      name: Домофон
      room: Прихожая
      type: devices.types.openable
      modes:
        program:
          normal: [normal]
          quiet: [quiet]
          auto: [auto]
      custom_modes:
        program:
          state_entity_id: sensor.smartintercom_modes
          set_mode:
            service: script.smartintercom_mode_set
            data:
              mode: '{{ mode }}'
      custom_toggles:
        controls_locked:
          state_entity_id: sensor.smartintercom_accept_call_invert
          turn_on:
            service: switch.turn_off
            entity_id: switch.smartintercom_accept_call
          turn_off:
            service: switch.turn_on
            entity_id: switch.smartintercom_accept_call
        backlight:
          state_entity_id: switch.smartintercom_led
          turn_on:
            service: switch.turn_on
            entity_id: switch.smartintercom_led
          turn_off:
            service: switch.turn_off
            entity_id: switch.smartintercom_led
        mute:
          state_entity_id: sensor.smartintercom_sound_invert
          turn_on:
            service: switch.turn_off
            entity_id: switch.smartintercom_sound
          turn_off:
            service: switch.turn_on
            entity_id: switch.smartintercom_sound

Установленный тип датчика "type: devices.types.openable" - не влияет ни на что, кроме иконки устройства
Проверяем конфигурацию и если все в порядке, то перегружаем Home Assistant.

После этого идем в установленный на смарте "Умный дом с Алисой" и там добавляем новое устройство. Если было сделано по предыдущему руководству, то предварительно удаляем старое устройство.
Пользуемся! Все функции управления черед программу разблокированы всегда.

Теперь по поводу команд!
Вместо команды "Открыть/Закрыть домофон", придется говорить "Разблокировать домофон" и соответственно "Заблокировать домофон". Остальные команды не претерпели никаких изменений.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions