Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| docs_in_draft:tempmon [2026/08/16 13:06] – created crashtest | docs_in_draft:tempmon [2026/08/16 13:08] (current) – crashtest | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | a | + | ***Was under OMV7 and an OMV8 plugin*** |
| + | |||
| + | ====== Temp Monitor (openmediavault-tempmon) ====== | ||
| + | |||
| + | A flexible temperature monitoring plugin for OpenMediaVault 7/8. Unlike fixed-sensor plugins, Temp Monitor lets you define any number of sensors using custom shell scripts — one script per sensor, each outputting | ||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Install via omv-extras in the OMV web interface under **System → omv-extras**, | ||
| + | |||
| + | <code bash> | ||
| + | apt-get install openmediavault-tempmon | ||
| + | </ | ||
| + | |||
| + | After installation, | ||
| + | |||
| + | ===== Adding a Sensor ===== | ||
| + | |||
| + | Navigate to **Services → Temp Monitor**. | ||
| + | |||
| + | Click the **+** (Create) button to open the sensor form. | ||
| + | |||
| + | ==== Sensor Fields ==== | ||
| + | |||
| + | ^ Field ^ Description ^ | ||
| + | | **Name** | Display label used on the dashboard widget and performance chart. Set on creation only — cannot be changed after saving. | | ||
| + | | **Script path** | Full path where the script will be written on disk (e.g. ''/ | ||
| + | | **Script** | Shell script that outputs a single raw numeric value on stdout. See [[# | ||
| + | | **Divisor** | The raw value is divided by this number to produce degrees Celsius. Use '' | ||
| + | | **Dashboard widget** | When enabled, a gauge widget is added to the dashboard showing the current temperature. | | ||
| + | | **Performance chart** | When enabled, an RRD graph is added under **Diagnostics → Performance Statistics → Temp Monitor**. | | ||
| + | | **Current reading** | Live reading from the sensor script, shown when editing an existing sensor. | | ||
| + | |||
| + | After saving, click **Apply Changes** to deploy the scripts and regenerate the collectd configuration, | ||
| + | |||
| + | <note important> | ||
| + | The **Name** field can only be set when creating a sensor. To rename a sensor, delete it and recreate it. | ||
| + | </ | ||
| + | |||
| + | ===== Example Scripts ===== | ||
| + | |||
| + | ==== Linux Thermal Zone (millidegrees) ==== | ||
| + | |||
| + | Most ARM boards, Intel, and AMD CPUs expose temperatures via the kernel' | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | To find the right thermal zone: | ||
| + | |||
| + | <code bash> | ||
| + | for z in / | ||
| + | echo "$z: $(cat ${z}type) = $(cat ${z}temp)" | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | ==== lm-sensors (degrees, already Celsius) ==== | ||
| + | |||
| + | If '' | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | sensors -u | awk '/ | ||
| + | </ | ||
| + | |||
| + | Adjust the '' | ||
| + | |||
| + | ==== Hard Drive Temperature via hddtemp ==== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | hddtemp -n /dev/sda | ||
| + | </ | ||
| + | |||
| + | Use **Divisor: 1**. | ||
| + | |||
| + | ==== Hard Drive Temperature via smartctl ==== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | smartctl -A /dev/sda | awk '/ | ||
| + | </ | ||
| + | |||
| + | Use **Divisor: 1**. | ||
| + | |||
| + | ==== Fixed / Test Value ==== | ||
| + | |||
| + | Useful for verifying the widget and chart pipeline without real hardware: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | Use **Divisor: 1000** → displays 42.0 °C. | ||
| + | |||
| + | ==== NVMe Drive Temperature ==== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | nvme smart-log /dev/nvme0 | awk '/ | ||
| + | </ | ||
| + | |||
| + | Use **Divisor: 1000**. | ||
| + | |||
| + | ===== Dashboard Widgets ===== | ||
| + | |||
| + | Each sensor with **Dashboard widget** enabled gets a circular gauge on the OMV dashboard showing the current temperature. The gauge fills from 0–100 °C. | ||
| + | |||
| + | Widgets are generated automatically when **Apply Changes** is run. They appear under the widget picker on the dashboard — click the grid icon at the top right of the dashboard to add or arrange them. | ||
| + | |||
| + | Colors are assigned deterministically from the sensor' | ||
| + | |||
| + | ===== Performance Charts ===== | ||
| + | |||
| + | Sensors with **Performance chart** enabled are recorded by collectd and graphed under **Diagnostics → Performance Statistics → Temp Monitor**. | ||
| + | |||
| + | The chart page appears automatically after **Apply Changes** once at least one chart-enabled sensor exists. It is removed if all sensors have the chart option disabled. | ||
| + | |||
| + | Charts are updated every 60 seconds (collectd' | ||
| + | |||
| + | < | ||
| + | After clicking **Apply Changes**, it takes up to 60 seconds for the first data point to appear. The chart page will show a placeholder image until data is available. A browser refresh (Ctrl+Shift+R) may be needed to see newly added chart pages. | ||
| + | </ | ||
| + | |||
| + | ===== How It Works ===== | ||
| + | |||
| + | - Each sensor' | ||
| + | - collectd' | ||
| + | - collectd writes the values to RRD files under ''/ | ||
| + | - '' | ||
| + | - The dashboard widget uses a live RPC call ('' | ||
| + | |||
| + | ===== Troubleshooting ===== | ||
| + | |||
| + | ==== Widget shows " | ||
| + | |||
| + | * Check that **Apply Changes** has been run since the sensor was created. | ||
| + | * Verify the script file exists and is executable: <code bash>ls -la / | ||
| + | * Test the script manually: <code bash>/ | ||
| + | * Check for errors in the script path or script content in the sensor form. | ||
| + | |||
| + | ==== Performance chart page missing ==== | ||
| + | |||
| + | * Ensure at least one sensor has **Performance chart** enabled and **Apply Changes** has been run. | ||
| + | * Try a hard browser refresh (Ctrl+Shift+R). | ||
| + | |||
| + | ==== Performance chart shows no data / placeholder image ==== | ||
| + | |||
| + | * Wait up to 60 seconds after **Apply Changes** for the first data point. | ||
| + | * Check collectd is running: <code bash> | ||
| + | * Check collectd can execute the sensor script as '' | ||
| + | * Check the collectd configuration was written: <code bash>cat / | ||
| + | * Check the sensor conf was written: <code bash>cat / | ||
| + | |||
| + | ==== Sensor name is greyed out when editing ==== | ||
| + | |||
| + | This is by design. The name is locked after creation because it is used to identify the sensor' | ||
| + | |||
| + | ===== Multiple Sensors ===== | ||
| + | |||
| + | There is no fixed limit on the number of sensors. Add one sensor per thermal source. Each gets its own: | ||
| + | |||
| + | * Row in the **Services → Temp Monitor** datatable with live reading | ||
| + | * Dashboard gauge widget (if enabled) | ||
| + | * RRD graph on the performance page (if enabled) | ||
| + | |||
| + | Example multi-sensor setup: | ||
| + | |||
| + | ^ Name ^ Script path ^ Script ^ Divisor ^ | ||
| + | | CPU | ''/ | ||
| + | | NVMe | ''/ | ||
| + | | HDD | ''/ | ||
| + | | Board | ''/ | ||