2022-03-30 21:50:39 +02:00

3.7 KiB

title description ha_category ha_release ha_iot_class ha_codeowners ha_domain ha_platforms ha_integration_type
File Instructions on how to integrate sensors which read from files into Home Assistant.
Notifications
Sensor
Utility
pre 0.7 Local Polling
@fabaff
file
notify
sensor
integration

There is currently support for the following device types within Home Assistant:

Notifications

The file platform allows you to store notifications from Home Assistant as a file.

To enable file notifications in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
notify:
  - name: NOTIFIER_NAME
    platform: file
    filename: FILENAME

{% configuration %} name: description: Setting the optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME. required: false default: notify type: string filename: description: Name of the file to use. The file will be created if it doesn't exist. Add the path of your configuration folder (e.g., /config) to save the file there. required: true type: string timestamp: description: Setting timestamp to true adds a timestamp to every entry. required: false default: false type: boolean {% endconfiguration %}

To use notifications, please see the getting started with automation page.

Sensor

The file sensor platform reads the entries from a plain-text file and shows the found value. Only the last line of the file is used. This is similar to do $ tail -n 1 sensor.txt on the command-line. Note that file paths must be added to allowlist_external_dirs.

To enable the file sensor, add the following lines to your configuration.yaml:

# Example configuration.yaml entry
sensor:
  - platform: file
    file_path: /home/user/.homeassistant/sensor-data.txt

{% configuration %} file_path: description: Path to file that stores the sensor data. required: true type: string name: description: Name of the sensor to use in the frontend. required: false default: file name type: string unit_of_measurement: description: Defines the units of measurement of the sensor, if any. required: false type: string value_template: description: Defines a template to extract a value from the payload. required: false type: template {% endconfiguration %}

Examples

In this section you find some real-life examples of how to use this sensor.

Entries as JSON

Assuming that the log file contains multiple values formatted as JSON like shown below:

[...]
{"temperature": 21, "humidity": 39}
{"temperature": 22, "humidity": 36}

This would require the following entry in the configuration.yaml file to extract the temperature:

{% raw %}

# Example configuration.yaml entry
sensor:
  - platform: file
    name: Temperature
    file_path: /home/user/.homeassistant/sensor.json
    value_template: '{{ value_json.temperature }}'
    unit_of_measurement: "°C"

{% endraw %}

Entries as CSV

Assuming the log file contains multiple values formatted as CSV like shown below:

timestamp,temperature,humidity
1631472948,21,39
1631472949,22,36

This would require the following entry in the configuration.yaml file to extract the temperature:

{% raw %}

# Example configuration.yaml entry
sensor:
  - platform: file
    name: Temperature
    file_path: /home/user/.homeassistant/sensor.csv
    value_template: '{{ value.split(",")[1] }}'
    unit_of_measurement: "°C"

{% endraw %}