Skip to content

Commit

Permalink
Add config flow to System Monitor (#30115)
Browse files Browse the repository at this point in the history
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
  • Loading branch information
gjohansson-ST and MartinHjelmare committed Dec 27, 2023
1 parent 6db5889 commit fb6a973
Showing 1 changed file with 42 additions and 153 deletions.
195 changes: 42 additions & 153 deletions source/_integrations/systemmonitor.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -6,77 +6,58 @@ ha_category:
ha_release: pre 0.7
ha_iot_class: Local Push
ha_domain: systemmonitor
ha_config_flow: true
ha_platforms:
- sensor
ha_integration_type: integration
---

The `systemmonitor` sensor platform allows you to monitor disk usage,
The System monitor integration allows you to monitor disk usage,
memory usage, CPU usage, and running processes.

To add this platform to your installation,
add the following to your `configuration.yaml` file:

```yaml
# Example configuration.yaml entry
sensor:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /config
- type: memory_free
```
{% include integrations/config_flow.md %}

{% configuration %}
resources:
description: Contains all entries to display.
required: true
type: list
keys:
type:
description: The type of the information to display, please check the table below for details.
required: true
arg:
description: Argument to use, please check the table below for details.
required: false
{% endconfiguration %}

After restarting Home Assistant, these sensors will show up and update their
information every 15 seconds.

The table contains types and their argument to use in your `configuration.yaml`
file.

| Type (`type:`) | Argument (`arg:`) | Argument mandatory |
| :--------------------- |:--------------------------|:--------------------------|
| disk_use_percent | Path, e.g., `/` | no |
| disk_use | Path, e.g., `/` | no |
| disk_free | Path, e.g., `/` | no |
| memory_use_percent | | |
| memory_use | | |
| memory_free | | |
| swap_use_percent | | |
| swap_use | | |
| swap_free | | |
| load_1m | | |
| load_5m | | |
| load_15m | | |
| network_in | Interface, e.g., `eth0` | yes |
| network_out | Interface, e.g., `eth0` | yes |
| throughput_network_in | Interface, e.g., `eth0` | yes |
| throughput_network_out | Interface, e.g., `eth0` | yes |
| packets_in | Interface, e.g., `eth0` | yes |
| packets_out | Interface, e.g., `eth0` | yes |
| ipv4_address | Interface, e.g., `eth0` | yes |
| ipv6_address | Interface, e.g., `eth0` | yes |
| processor_use | | |
| processor_temperature | | |
| process | Binary, e.g., `octave-cli` | yes |
| last_boot | | |
## Sensors

## Disk usage
**All entities are disabled by default, you need to enable the entities that you wish to use.**

### Disks

- Disk free - (One per disk/mount point)
- Disk use - (One per disk/mount point)
- Disk use (percent) - (One per disk/mount point)

### Network

- IPv4 address - (One per network interface)
- IPv6 address - (One per network interface)
- Network in - (One per network interface)
- Network out - (One per network interface)
- Packets in - (One per network interface)
- Packets out - (One per network interface)
- Network throughput in - (One per network interface)
- Network throughput out - (One per network interface)

### Other

- Last boot
- Load (15m)
- Load (5m)
- Load (1m)
- Memory free
- Memory use
- Memory use (percent)
- Processor use
- Processor temperature
- Swap free
- Swap use
- Swap use (percent)

If no path is provided via the optional argument, the integration defaults to '/' (root).
### Add `process` sensor

The `process` sensor needs to be configured by the config entry options. Go to **{% my integrations title="Settings > Devices & Services" %}**, select the **System Monitor** integration and click **Configure** to select which `process` sensors should be created.

## Disk usage

**Note:** The disk usage sensors do not support monitoring folder/directory sizes. Instead, it is only concerned with "disks" (more specifically mount points on Linux).

Expand All @@ -89,100 +70,8 @@ tmpfs 934M 0 934M 0% /dev/shm
/dev/mmcblk0p1 253M 54M 199M 22% /boot
```

Defining a `disk_use` sensor for `/` and `/home/pi` is redundant and will return the same values, since they both belong to the same "disk". However, defining separate sensors for `/dev` and `/dev/shm` is possible and provides different values, since those are treated as separate "disks" by the integration.

```yaml
# Example configuration.yaml entry
sensor:
- platform: systemmonitor
resources:
- type: disk_use
arg: /dev
- type: disk_use
arg: /dev/shm
```

## Processor temperature

- If no hardware sensor data is available (e.g., because the integration runs in a virtualized environment), the sensor entity will not be created.
- The unit of measurement (Celsius vs. Fahrenheit) will be chosen based on the system configuration.
- Only the very first processor related hardware sensor is read, i.e., no individual core temperatures (even if the hardware sensor could provide that level of detail).

## Linux specific

To retrieve all available network interfaces on a Linux System, execute the
`ifconfig` or `ip` command. The command differs based on your operation system and version.

```bash
ifconfig -a | sed 's/[ \t].*//;/^$/d'
```

```bash
ip link show
```

## Windows specific

When running this platform on Microsoft Windows, Typically,
the default interface would be called `Local Area Connection`,
so your configuration might look like:

```yaml
sensor:
- platform: systemmonitor
resources:
- type: network_in
arg: "Local Area Connection"
```

If you need to use some other interface, open a command line prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ipconfig` might look like:

```bash
Wireless LAN adapter Wireless Network Connection:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
```

Where the name is `Wireless Network Connection`.

## All available resources

```yaml
# Example configuration.yaml entry with all entry types (delete/comment out as necessary)
sensor:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /config
- type: disk_use
- type: disk_free
- type: memory_use_percent
- type: memory_use
- type: memory_free
- type: swap_use_percent
- type: swap_use
- type: swap_free
- type: load_1m
- type: load_5m
- type: load_15m
- type: network_in
arg: eth0
- type: network_out
arg: eth0
- type: throughput_network_in
arg: eth0
- type: throughput_network_out
arg: eth0
- type: packets_in
arg: eth0
- type: packets_out
arg: eth0
- type: ipv4_address
arg: eth0
- type: ipv6_address
arg: eth0
- type: processor_use
- type: processor_temperature
- type: last_boot
```

0 comments on commit fb6a973

Please sign in to comment.