diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php index 4b59d875c..8a44c9094 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php @@ -132,7 +132,12 @@ class DashboardController extends ApiControllerBase 'rtt' => gettext('RTT'), 'rttd' => gettext('RTTd'), 'loss' => gettext('Loss'), - ] + ], + 'thermalsensors' => [ + 'title' => gettext('Thermal Sensors'), + 'help' => gettext('CPU thermal sensors often measure the same temperature for each core. If this is the case, only the first core is shown.'), + 'unconfigured' => gettext('Thermal sensors not available or not configured.') + ], ]; } diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SystemController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SystemController.php index 71a09782e..7d243dd38 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SystemController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SystemController.php @@ -332,4 +332,24 @@ class SystemController extends ApiControllerBase { return json_decode((new Backend())->configdRun('system show swapinfo'), true); } + + public function systemTemperatureAction() + { + $result = []; + + foreach (explode("\n", (new Backend())->configdRun('system temp')) as $sysctl) { + $parts = explode('=', $); + if (count($parts) >= 2) { + $tempItem = array(); + $tempItem['device'] = $parts[0]; + $tempItem['device_seq'] = filter_var($tempItem['device'], FILTER_SANITIZE_NUMBER_INT); + $tempItem['temperature'] = trim(str_replace('C', '', $parts[1])); + $tempItem['type'] = strpos($tempItem['device'], 'hw.acpi') !== false ? "zone" : "core"; + $tempItem['type_translated'] = $tempItem['type'] == "zone" ? gettext("Zone") : gettext("Core"); + $result[] = $tempItem; + } + } + + return $result; + } } diff --git a/src/opnsense/www/js/opnsense_widget_manager.js b/src/opnsense/www/js/opnsense_widget_manager.js index 16bcf1fd0..45c34572d 100644 --- a/src/opnsense/www/js/opnsense_widget_manager.js +++ b/src/opnsense/www/js/opnsense_widget_manager.js @@ -501,7 +501,7 @@ class WidgetManager { let $header = $(`