home-assistant.io/source/_integrations/folder_watcher.markdown

2.2 KiB

title description ha_category ha_iot_class ha_release ha_quality_scale ha_domain
Folder Watcher Component for monitoring changes within the filesystem.
System Monitor
Local Polling 0.67 internal folder_watcher

This integration adds Watchdog file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored event_type are:

  • created
  • deleted
  • modified
  • moved

Configured folders must be added to whitelist_external_dirs. Note that by default folder monitoring is recursive, meaning that the contents of sub-folders are also monitored.

Configuration

To enable the Folder Watcher integration in your installation, add the following to your configuration.yaml file:

{% raw %}

folder_watcher:
  - folder: /config

{% endraw %}

{% configuration %} folder: description: The folder path required: true type: string patterns: description: Pattern matching to apply required: false default: "*" type: string {% endconfiguration %}

Patterns

Pattern matching using fnmatch can be used to limit filesystem monitoring to only files which match the configured patterns. The following example shows the configuration required to only monitor filetypes .yaml and .txt.

{% raw %}

folder_watcher:
  - folder: /config
    patterns:
      - '*.yaml'
      - '*.txt'

{% endraw %}

Automations

Automations can be triggered on filesystem event data using a data_template. The following automation will send a notification with the name and folder of new files added to that folder:

{% raw %}

#Send notification for new image (including the image itself)
automation:
  alias: New file alert
  trigger:
    platform: event
    event_type: folder_watcher
    event_data:
      event_type: created
  action:
    service: notify.notify
    data_template:
      title: New image captured!
      message: "Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}"
      data:
        file: "{{ trigger.event.data.path }}"

{% endraw %}