From 837ab148689bc7506f54b429940e4756c2c51b42 Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Thu, 2 Feb 2017 15:29:16 -0500 Subject: [PATCH] Document the QNAP sensor (#1943) --- source/_components/sensor.qnap.markdown | 65 ++++++++++++++++++++++++ source/images/supported_brands/qnap.png | Bin 0 -> 23115 bytes 2 files changed, 65 insertions(+) create mode 100644 source/_components/sensor.qnap.markdown create mode 100644 source/images/supported_brands/qnap.png diff --git a/source/_components/sensor.qnap.markdown b/source/_components/sensor.qnap.markdown new file mode 100644 index 00000000000..c00ad813859 --- /dev/null +++ b/source/_components/sensor.qnap.markdown @@ -0,0 +1,65 @@ +--- +layout: page +title: "QNAP Sensor" +description: "Instructions how to integrate the QNAP sensor within Home Assistant." +date: 2017-02-02 06:39 +sidebar: true +comments: false +sharing: true +footer: true +logo: qnap.png +ha_category: Sensor +ha_release: 0.38 +ha_iot_class: "Local Polling" +--- + + +This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). + +To use the `qnap` sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +sensor: + - platform: qnap + host: IP_ADDRESS_OF_QNAP_NAS + username: USERNAME + password: PASSWORD + monitored_conditions: + - status + - cpu_usage + - memory_percent_used + - network_tx + - volume_percentage_used +``` + +Configuration variables: + +- **host** (*Required*): The IP address of the QNAP NAS to monitor +- **port** (*Optional*): The port number on which the QNAP NAS web interface is reachable. Defaults to `8080`. +- **ssl** (*Optional*): Whether to connect via `https`. Defaults to `false`. +- **username** (*Required*): An user to connect to the QNAP NAS. +- **password** (*Required*): The password of the user to connect to the QNAP NAS. +- **drives** (*Optional*): Array of drives to monitor (ex: `0:1`). Defaults to all drives. +- **volumes** (*Optional*): Array of volumes to monitor (ex: `DataVol1`). Defaults to all volumes. +- **nics** (*Optional*): Array of network interfaces to monitor (ex: `eth0`). Defaults to all NICs. +- **monitored_conditions** (*Required*): Defines the stats to monitor as sensors. + - **status**: Displays overall system health. + - **cpu_temp**: Displays the CPU's temperature. + - **cpu_usage**: Displays the CPU's utilization as a percentage. + - **memory_free**: Displays the size of available RAM in GB. + - **memory_used**: Displays the size of used RAM in GB. + - **memory_percent_used**: Displays the size of used RAM as a percentage of total RAM. + - **network_link_status**: Displays whether the network interfaces is up (creates a new entry for each interface). + - **network_tx**: Displays the upload speed of a network interface in MB/s (creates a new entry for each interface). + - **network_rx**: Displays the download speed of a network interface in MB/s (creates a new entry for each interface). + - **drive_smart_status**: Displays the S.M.A.R.T. status of the drive (creates a new entry for each drive). + - **drive_temp**: Displays the temperature of the drive (creates a new entry for each drive). + - **volume_size_free**: Displays the available space of the volume in GB (creates a new entry for each volume). + - **volume_size_used**: Displays the used space of the volume in GB (creates a new entry for each volume). + - **volume_percentage_used**: Displays the used space of the volume as a percentage (creates a new entry for each volume). + +QNAP device support: + +This component has been tested on a TS-451 running QTS 4.2.2. Other QNAP NAS devices using similar firmware should work fine. +For more information about supported devices, or to report issues with your device, please visit the [qnapstats project](https://github.com/colinodell/python-qnapstats#device-support). \ No newline at end of file diff --git a/source/images/supported_brands/qnap.png b/source/images/supported_brands/qnap.png new file mode 100644 index 0000000000000000000000000000000000000000..2ffae64462cbf06d40a69878fabf775772eb4a0f GIT binary patch literal 23115 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 literal 0 HcmV?d00001