From e04f16984dd0f800e4ba3b684c7a892b59acfbb8 Mon Sep 17 00:00:00 2001 From: Ferry van Zeelst Date: Thu, 3 Nov 2016 10:26:14 +0100 Subject: [PATCH] Synology DSM Sensor Documentation (#1378) * Add files via upload * Add files via upload * Updated Reference to Creator Image --- .../_components/sensor.synologydsm.markdown | 78 ++++++++++++++++++ .../images/supported_brands/synologydsm.png | Bin 0 -> 11300 bytes 2 files changed, 78 insertions(+) create mode 100644 source/_components/sensor.synologydsm.markdown create mode 100644 source/images/supported_brands/synologydsm.png diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/sensor.synologydsm.markdown new file mode 100644 index 00000000000..c7e9a753f75 --- /dev/null +++ b/source/_components/sensor.synologydsm.markdown @@ -0,0 +1,78 @@ +--- +layout: page +title: "SynologyDSM Sensor" +description: "Instructions how to integrate the SynologyDSM sensor within Home Assistant." +date: 2016-10-30 23:21 +sidebar: true +comments: false +sharing: true +footer: true +logo: synologydsm.png +ha_category: Sensor +ha_release: 0.31.1 +ha_iot_class: depends +--- + + +This `SynologyDSM` sensor allows getting various statistics from your Synology NAS. Please note that using this sensor wakes up your synology if in hibernation mode. + +To use the SynologyDSM sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +sensor: + - platform: synologydsm + host: + port: + username: + password: + monitored_conditions: + - cpu_total_load + - memory_real_usage + - network_up + - network_down + - disk_smart_status + - disk_temp + - volume_status + - volume_size_used +``` + +Configuration variables: + +- **host** (*Required*): The IP address of the Synology NAS to monitor +- **port** (*Optional*): The port number on which the NAS is reachable (defaults to 5000). +- **username** (*Required*): An user to connect to the Synology NAS (a seperate account is adviced). +- **password** (*Required*): The password of the user to connect to the Synology NAS. +- **volumes** (*Optional*): Array of volumes to monitor (defaults to all volumes). +- **disks** (*Optional*): Array of disks to monitor (defaults to all disks). +- **monitored_conditions** (*Required*): Defines a [template](/topics/templating/) to extract a value from the payload. + - **cpu_other_load**: Displays unspecified load in percentage + - **cpu_user_load**: Displays user load in percentage + - **cpu_system_load**: Displays system load in percentage + - **cpu_total_load**: Displays combined load in percentage + - **cpu_1min_load**: Displays maximum load in past minute + - **cpu_5min_load**: Displays maximum load in past 5 minutes + - **cpu_15min_load**: Displays maximum load in past 15 minutes + - **memory_real_usage**: Displays percentage of memory used + - **memory_size**: Displays total size of memory in MB's + - **memory_cached**: Displays total size of cache in MB's + - **memory_available_swap**: Displays total size of available swap in MB's + - **memory_available_real**: Displays total size of memory used (based on real memory) in MB's + - **memory_total_swap**: Displays total size of actual memory in MB's + - **memory_total_real**: Displays total size of real memory in MB's + - **network_up**: Displays total up speed of network interfaces (combines all interfaces) + - **network_down**: Displays total down speed of network interfaces (combines all interfaces) + - **disk_name**: Displays the name of the harddisk (creates a new entry for each disk) + - **disk_device**: Displays the path of the harddisk (creates a new entry for each disk) + - **disk_smart_status**: Displays the S.M.A.R.T status of the harddisk (creates a new entry for each disk) + - **disk_status**: Displays the status of the harddisk (creates a new entry for each disk) + - **disk_exceed_bad_sector_thr**: Displays true / false to indicate if the harddisk exceeded the maximum bad sector threshold (creates a new entry for each disk) + - **disk_below_remain_life_thr**: Displays true / false to indicate if the harddisk dropped below the remain life threshold (creates a new entry for each disk) + - **disk_temp**: Displays the temperature of the harddisk (creates a new entry for each disk, uses the unit_system to display in C or F) + - **volume_status**: Displays the status of the volume (creates a new entry for each volume) + - **volume_device_type**: Displays the volume type (RAID, etc) (creates a new entry for each volume) + - **volume_size_total**: Displays the total size of the volume in GB's (creates a new entry for each volume) + - **volume_size_used**: Displays the used space on this volume in GB's (creates a new entry for each volume) + - **volume_percentage_used**: Displays the percentage used for this volume in GB's (creates a new entry for each volume) + - **volume_disk_temp_avg**: Displays the average temperature of all disks in the volume (creates a new entry for each volume) + - **volume_disk_temp_max**: Displays the maximum temperature of all disks in the volume (creates a new entry for each volume) diff --git a/source/images/supported_brands/synologydsm.png b/source/images/supported_brands/synologydsm.png new file mode 100644 index 0000000000000000000000000000000000000000..9c007a087668a9c64a1faa5cb2d54d7ddc20d432 GIT binary patch literal 11300 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 DCK}+K literal 0 HcmV?d00001