home-assistant.io/source/_components/sensor.file.markdown
2018-11-12 11:13:47 +01:00

74 lines
2.1 KiB
Markdown

---
layout: page
title: "File Sensor"
description: "Instructions on how to integrate sensors which read from files into Home Assistant."
date: 2017-05-13 12:10
sidebar: true
comments: false
sharing: true
footer: true
logo: file.png
ha_category: Utility
ha_iot_class: "Local Polling"
ha_release: 0.45
---
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 [whitelist_external_dirs](/docs/configuration/basic/).
## {% linkable_title Configuration %}
To enable the `file` sensor, add the following lines to your `configuration.yaml`:
```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](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
required: false
type: template
{% endconfiguration %}
## {% linkable_title Examples %}
In this section you find some real-life examples of how to use this sensor.
### {% linkable_title Entries as JSON %}
Assuming that the log file contains multiple values formatted as JSON like shown below:
```text
[...]
{"temperature": 21, "humidity": 39}
{"temperature": 22, "humidity": 36}
```
This would require the following entry in the `configuration.yaml` file to extract the temperature:
```yaml
# Example configuration.yaml entry
sensor:
- platform: file
name: Temperature
file_path: /home/user/.homeassistant/sensor.json
value_template: {% raw %}'{{ value_json.temperature }}'{% endraw %}
unit_of_measurement: '°C'
```