Загрузка данных


# В файле automations.yaml или через UI

# Создайте два таймера:
# - vibration_timer: для отслеживания первых 5 минут вибрации
# - finish_timer: для ожидания 5 минут после прекращения вибрации

# Таймеры можно создать в разделе Таймеры:
timer:
  vibration_timer:
    duration: '00:05:00'
  finish_timer:
    duration: '00:05:00'

# Автоматизация для начала отслеживания при первой вибрации
- alias: Start Vibration Monitoring
  trigger:
    - platform: state
      entity_id: binary_sensor.vibration_sensor
      to: 'on'
  action:
    - service: timer.start
      data:
        entity_id: timer.vibration_timer
    - service: input_number.set_value
      data:
        entity_id: input_number.vibration_count
        value: 1
    - service: input_boolean.turn_on
      target:
        entity_id: input_boolean.vibration_active

# Перезапуск счетчика вибраций при каждой вибрации в течение первых 5 минут
- alias: Count Vibration Pulses
  trigger:
    - platform: state
      entity_id: binary_sensor.vibration_sensor
      to: 'on'
      for: '00:00:01'  # короткое время, чтобы поймать каждую вибрацию
  condition:
    - condition: state
      entity_id: input_boolean.vibration_active
      state: 'on'
  action:
    - service: input_number.set_value
      data:
        entity_id: input_number.vibration_count
        value: "{{ (states('input_number.vibration_count') | int) + 1 }}"

# Когда вибрация прекращается, начинаем ждать 5 минут
- alias: On Vibration End
  trigger:
    - platform: state
      entity_id: binary_sensor.vibration_sensor
      to: 'off'
      for: '00:00:10'  # убедимся, что вибрации действительно прекратились
  condition:
    - condition: state
      entity_id: input_boolean.vibration_active
      state: 'on'
  action:
    - service: timer.start
      data:
        entity_id: timer.finish_timer

# Обработка окончания первых 5 минут
- alias: Check Vibration Pulses after 5 min
  trigger:
    - platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.vibration_timer
  condition:
    - condition: numeric_state
      entity_id: input_number.vibration_count
      above: 1  # было более одного вибрационного сигнала за первые 5 минут
  action:
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.vibration_active
    # далее ждем завершения после остановки вибрации
  

# Обработка завершения ожидания после прекращения вибрации
- alias: Finalize after 5 min no vibration
  trigger:
    - platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.finish_timer
  condition:
    - condition: state
      entity_id: binary_sensor.vibration_sensor
      to: 'off'
  action:
    - service: notify.your_notification_service
      data:
        message: "Вещи постираны."

    # сбрасываем счетчики и статус
    - service: input_number.set_value
      data:
        entity_id: input_number.vibration_count
        value: 0
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.vibration_active