Last active
November 19, 2025 06:30
-
-
Save smirnowegor/9af39051fb15a75f4e7a9b0d528cbb5f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: "Контроль протечек Pro: Текст, TTS и Универсальное Реле" | |
| description: > | |
| Максимальная версия для управления краном и защиты от протечек. | |
| Особенности: | |
| - Универсальное управление мотором (1 или 2 реле). | |
| - Авто-закрытие и оповещения при протечке. | |
| - Ввод текста сообщений с переменными прямо в настройках. | |
| - Встроенная поддержка Push-уведомлений и Голосового оповещения (TTS). | |
| domain: automation | |
| input: | |
| # --- 1. ГЛАВНЫЕ НАСТРОЙКИ --- | |
| main_switch: | |
| name: "1.0 🎛 Виртуальный кран (Input Boolean)" | |
| description: > | |
| Это "мозг" системы и тумблер на вашем дашборде (например, input_boolean.kran_vody). | |
| ПРИМЕР: Если вы нажмете его, начнется физическое открытие/закрытие крана. | |
| selector: | |
| entity: | |
| domain: input_boolean | |
| leak_sensors: | |
| name: "1.1 💧 Датчики протечки" | |
| description: > | |
| Выберите все ваши датчики влажности. | |
| ПРИМЕР: binary_sensor.leak_kitchen, binary_sensor.leak_bathroom. | |
| selector: | |
| entity: | |
| domain: binary_sensor | |
| device_class: moisture | |
| multiple: true | |
| # --- 2. НАСТРОЙКИ ТЕКСТА (Гибкие сообщения) --- | |
| leak_message_text: | |
| name: "2.0 📝 Текст при АВАРИИ (ПРОТЕЧКЕ)" | |
| description: > | |
| Текст, который будет озвучен и отправлен при обнаружении воды. | |
| ДОСТУПНЫЕ ПЕРЕМЕННЫЕ: | |
| - {{ sensor_name }}: Автоматически подставит имя сработавшего датчика. | |
| ПРИМЕР: 'Внимание! Протечка! Датчик {{ sensor_name }} сработал! Кран перекрыт.' | |
| default: "Внимание! Обнаружена протечка! Датчик: {{ sensor_name }}. Кран перекрыт." | |
| selector: | |
| text: | |
| multiline: true | |
| status_message_text: | |
| name: "2.1 📝 Текст о СМЕНЕ СТАТУСА (Ручное управление)" | |
| description: > | |
| Текст, который будет отправлен/озвучен при ручном открытии или закрытии крана. | |
| ДОСТУПНЫЕ ПЕРЕМЕННЫЕ: | |
| - {{ status }}: Автоматически подставит состояние ('открыт' или 'закрыт'). | |
| ПРИМЕР: 'Кран подачи воды успешно {{ status }}.' | |
| default: "Кран подачи воды успешно {{ status }}." | |
| selector: | |
| text: | |
| multiline: true | |
| # --- 3. КУДА СООБЩАТЬ (ВСТРОЕННОЕ) --- | |
| notify_device: | |
| name: "3.0 📱 Push-уведомления на телефон" | |
| description: > | |
| Выберите устройства, куда слать Push-уведомления через Mobile App. | |
| Текст берется из полей (2.0/2.1) автоматически. (Необязательно) | |
| default: [] | |
| selector: | |
| device: | |
| integration: mobile_app | |
| multiple: true | |
| tts_player: | |
| name: "3.1 🗣 Голосовое оповещение (TTS)" | |
| description: > | |
| Выберите медиа-плееры (Яндекс.Станции, Google Home). | |
| Текст берется из полей (2.0/2.1) автоматически. (Необязательно) | |
| default: [] | |
| selector: | |
| entity: | |
| domain: media_player | |
| multiple: true | |
| # --- 4. ДОПОЛНИТЕЛЬНО (TELEGRAM, DISCORD И Т.Д.) --- | |
| custom_action_leak: | |
| name: "4.0 🤖 Доп. действие при АВАРИИ (Telegram, SMS и др.)" | |
| description: > | |
| Используйте это поле для настройки Telegram или других сервисов. | |
| ШАГИ ДЛЯ TELEGRAM: | |
| 1. Нажмите "Добавить действие" -> "Вызов службы". | |
| 2. Выберите службу telegram_bot.send_message. | |
| 3. В поле Message (Сообщение) ВСТАВЬТЕ КОД: {{ message }} | |
| (Это подхватит текст из поля 2.0). | |
| default: [] | |
| selector: | |
| action: {} | |
| custom_action_status: | |
| name: "4.1 🤖 Доп. действие при СМЕНЕ СТАТУСА" | |
| description: > | |
| Повторите шаги из поля 4.0, если хотите получать отчеты о ручном переключении. | |
| default: [] | |
| selector: | |
| action: {} | |
| # --- 5. НАСТРОЙКИ ОБОРУДОВАНИЯ (РЕЛЕ) --- | |
| valve_type: | |
| name: "5.0 ⚙️ Тип мотора" | |
| description: > | |
| Выберите схему подключения. | |
| - "Два реле": Мотор с 3 проводами (Открытие/Закрытие). | |
| - "Одно реле": Мотор с 2 проводами (ВКЛ=Откр, ВЫКЛ=Закр) или электромагнитный клапан. | |
| selector: | |
| select: | |
| options: | |
| - label: "Два реле (Откр + Закр)" | |
| value: "dual_relay" | |
| - label: "Одно реле (Вкл=Откр)" | |
| value: "single_relay" | |
| default: "dual_relay" | |
| relay_open: | |
| name: "5.1 ↳ Реле ОТКРЫТИЯ" | |
| description: > | |
| Обязательно только для режима "Два реле". Выберите сущность (switch.relay_open_entity). | |
| default: {} | |
| selector: | |
| entity: | |
| domain: switch | |
| relay_close: | |
| name: "5.2 ↳ Реле ЗАКРЫТИЯ" | |
| description: > | |
| Обязательно только для режима "Два реле". Выберите сущность (switch.relay_close_entity). | |
| default: {} | |
| selector: | |
| entity: | |
| domain: switch | |
| relay_single: | |
| name: "5.3 ↳ Реле УПРАВЛЕНИЯ" | |
| description: > | |
| Обязательно только для режима "Одно реле". Выберите сущность (switch.valve_main). | |
| default: {} | |
| selector: | |
| entity: | |
| domain: switch | |
| interlock_delay: | |
| name: "5.4 ⏱ Задержка мотора (сек)" | |
| description: > | |
| Пауза между выключением одного реле и включением другого (защита от короткого замыкания/поломок). | |
| Рекомендуемое значение: 1-3 секунды. | |
| default: 2 | |
| selector: | |
| number: | |
| min: 0 | |
| max: 10 | |
| unit_of_measurement: seconds | |
| mode: queued | |
| max_exceeded: silent | |
| # === ПЕРЕМЕННЫЕ (Передача текста и статуса) === | |
| variables: | |
| valve_type_var: !input valve_type | |
| relay_open_var: !input relay_open | |
| relay_close_var: !input relay_close | |
| relay_single_var: !input relay_single | |
| interlock_delay_var: !input interlock_delay | |
| # Шаблоны текста | |
| leak_template: !input leak_message_text | |
| status_template: !input status_message_text | |
| # Рендеринг переменных для шаблонов | |
| sensor_name: "{{ trigger.to_state.name if trigger.id == 'leak_alarm' else 'Неизвестно' }}" | |
| status: "{{ 'открыт' if trigger.to_state.state == 'on' else 'закрыт' }}" | |
| trigger: | |
| - platform: state | |
| entity_id: !input main_switch | |
| to: "on" | |
| id: "cmd_open" | |
| - platform: state | |
| entity_id: !input main_switch | |
| to: "off" | |
| id: "cmd_close" | |
| - platform: state | |
| entity_id: !input leak_sensors | |
| to: "on" | |
| id: "leak_alarm" | |
| action: | |
| - choose: | |
| # ============================================ | |
| # СЦЕНАРИЙ 1: ПРОТЕЧКА | |
| # ============================================ | |
| - conditions: | |
| - condition: trigger | |
| id: leak_alarm | |
| sequence: | |
| # 1. Формируем сообщение (рендерим шаблон) | |
| - variables: | |
| message: "{{ leak_template }}" | |
| # 2. Отправляем на телефоны (встроенная функция) | |
| - if: | |
| - condition: template | |
| value_template: "{{ inputs.notify_device != [] }}" | |
| then: | |
| - service: notify.mobile_app | |
| data: | |
| message: "{{ message }}" | |
| target: | |
| device_id: !input notify_device | |
| # 3. Говорим голосом (TTS) | |
| - if: | |
| - condition: template | |
| value_template: "{{ inputs.tts_player != [] }}" | |
| then: | |
| - service: tts.speak | |
| target: | |
| entity_id: tts.google_translate_en_com | |
| data: | |
| media_player_entity_id: !input tts_player | |
| message: "{{ message }}" | |
| cache: true | |
| # 4. Выполняем кастомные действия (Telegram) | |
| - choose: [] | |
| default: !input custom_action_leak | |
| # 5. Аварийное закрытие | |
| - service: input_boolean.turn_off | |
| target: | |
| entity_id: !input main_switch | |
| # ============================================ | |
| # СЦЕНАРИЙ 2: ОТКРЫТИЕ | |
| # ============================================ | |
| - conditions: | |
| - condition: trigger | |
| id: cmd_open | |
| sequence: | |
| # Логика реле | |
| - choose: | |
| - conditions: "{{ valve_type_var == 'dual_relay' }}" | |
| sequence: | |
| - service: switch.turn_off | |
| target: {entity_id: !input relay_close} | |
| - delay: !input interlock_delay | |
| - service: switch.turn_on | |
| target: {entity_id: !input relay_open} | |
| - conditions: "{{ valve_type_var == 'single_relay' }}" | |
| sequence: | |
| - service: switch.turn_on | |
| target: {entity_id: !input relay_single} | |
| # Уведомление | |
| - variables: | |
| message: "{{ status_template }}" | |
| - choose: [] | |
| default: !input custom_action_status | |
| # ============================================ | |
| # СЦЕНАРИЙ 3: ЗАКРЫТИЕ | |
| # ============================================ | |
| - conditions: | |
| - condition: trigger | |
| id: cmd_close | |
| sequence: | |
| # Логика реле | |
| - choose: | |
| - conditions: "{{ valve_type_var == 'dual_relay' }}" | |
| sequence: | |
| - service: switch.turn_off | |
| target: {entity_id: !input relay_open} | |
| - delay: !input interlock_delay | |
| - service: switch.turn_on | |
| target: {entity_id: !input relay_close} | |
| - conditions: "{{ valve_type_var == 'single_relay' }}" | |
| sequence: | |
| - service: switch.turn_off | |
| target: {entity_id: !input relay_single} | |
| # Уведомление (только если нет активной протечки) | |
| - if: | |
| - condition: state | |
| entity_id: !input leak_sensors | |
| state: "off" | |
| then: | |
| - variables: | |
| message: "{{ status_template }}" | |
| - choose: [] | |
| default: !input custom_action_status |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment