fix & opt.: prefer temperature dev

This commit is contained in:
lollipopkit
2024-04-21 01:04:43 +08:00
parent 23764f8c93
commit a0ea95b1c3
22 changed files with 152 additions and 206 deletions

View File

@@ -10,6 +10,8 @@ final class ServerCustom {
final String? pveAddr;
@HiveField(2, defaultValue: false)
final bool pveIgnoreCert;
@HiveField(3)
final String? preferTempDev;
/// {"title": "cmd"}
@HiveField(3)
@@ -20,6 +22,7 @@ final class ServerCustom {
this.pveAddr,
this.pveIgnoreCert = false,
this.cmds,
this.preferTempDev,
});
static ServerCustom fromJson(Map<String, dynamic> json) {
@@ -27,11 +30,13 @@ final class ServerCustom {
final pveAddr = json["pveAddr"] as String?;
final pveIgnoreCert = json["pveIgnoreCert"] as bool;
final cmds = json["cmds"] as Map<String, dynamic>?;
final preferTempDev = json["preferTempDev"] as String?;
return ServerCustom(
//temperature: temperature,
pveAddr: pveAddr,
pveIgnoreCert: pveIgnoreCert,
cmds: cmds?.cast<String, String>(),
preferTempDev: preferTempDev,
);
}
@@ -48,6 +53,9 @@ final class ServerCustom {
if (cmds != null) {
json["cmds"] = cmds;
}
if (preferTempDev != null) {
json["preferTempDev"] = preferTempDev;
}
return json;
}
}

View File

@@ -2,7 +2,6 @@ import 'dart:convert';
import 'package:toolbox/core/extension/listx.dart';
import 'package:toolbox/data/res/logger.dart';
import 'package:toolbox/data/res/store.dart';
final class SensorAdaptor {
final String raw;
@@ -101,92 +100,4 @@ final class SensorItem {
}
return items;
}
static double? findPreferTempVal(List<SensorItem> items) {
if (items.isEmpty) {
return null;
}
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
if (preferTemperatureDevs.isNotEmpty) {
for (final key in preferTemperatureDevs) {
final item = items.firstWhereOrNull((e) => e.device == key);
if (item != null) {
return item.props.values.firstOrNull?.current;
}
}
}
return items.first.props.values.firstOrNull?.current;
}
static const sensorsRaw = '''
{
"coretemp-isa-0000":{
"Adapter": "ISA adapter",
"Package id 0":{
"temp1_input": 51.000,
"temp1_max": 105.000,
"temp1_crit": 105.000,
"temp1_crit_alarm": 0.000
},
"Core 0":{
"temp2_input": 40.000,
"temp2_max": 105.000,
"temp2_crit": 105.000,
"temp2_crit_alarm": 0.000
},
"Core 1":{
"temp3_input": 40.000,
"temp3_max": 105.000,
"temp3_crit": 105.000,
"temp3_crit_alarm": 0.000
},
"Core 2":{
"temp4_input": 40.000,
"temp4_max": 105.000,
"temp4_crit": 105.000,
"temp4_crit_alarm": 0.000
},
"Core 3":{
"temp5_input": 40.000,
"temp5_max": 105.000,
"temp5_crit": 105.000,
"temp5_crit_alarm": 0.000
}
},
"acpitz-acpi-0":{
"Adapter": "ACPI interface",
"temp1":{
"temp1_input": 27.800,
"temp1_crit": 119.000
}
},
"iwlwifi_1-virtual-0":{
"Adapter": "Virtual device",
"temp1":{
ERROR: Can't get value of subfeature temp1_input: Can't read
}
},
"nvme-pci-0400":{
"Adapter": "PCI adapter",
"Composite":{
"temp1_input": 35.850,
"temp1_max": 83.850,
"temp1_min": -273.150,
"temp1_crit": 84.850,
"temp1_alarm": 0.000
},
"Sensor 1":{
"temp2_input": 35.850,
"temp2_max": 65261.850,
"temp2_min": -273.150
},
"Sensor 2":{
"temp3_input": 37.850,
"temp3_max": 65261.850,
"temp3_min": -273.150
}
}
}
''';
}

View File

@@ -1,5 +1,6 @@
import 'package:dartssh2/dartssh2.dart';
import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/core/extension/listx.dart';
import 'package:toolbox/data/model/app/shell_func.dart';
import 'package:toolbox/data/model/server/battery.dart';
import 'package:toolbox/data/model/server/conn.dart';

View File

@@ -1,28 +1,42 @@
part of 'server.dart';
extension ServerX on Server {
String get topRightStr {
String getTopRightStr(ServerPrivateInfo spi) {
switch (state) {
case ServerState.disconnected:
return l10n.disconnected;
case ServerState.finished:
// Highest priority of temperature display
final cmdTemp = status.customCmds['server_card_top_right'];
final temp = status.temps.first;
final sensorTemp = SensorItem.findPreferTempVal(status.sensors);
final temperatureVal = () {
// Second priority
final preferTempDev = spi.custom?.preferTempDev;
if (preferTempDev != null) {
final preferTemp = status.sensors
.firstWhereOrNull(
(e) => e.device == preferTempDev,
)
?.props
.values
.firstOrNull
?.current;
if (preferTemp != null) return preferTemp;
}
// Last priority
final temp = status.temps.first;
if (temp != null) {
return temp;
}
if (sensorTemp != null) {
return sensorTemp;
}
return null;
}();
final tempVal = temperatureVal != null
? '${temperatureVal.toStringAsFixed(1)}°C'
: null;
final upTime = status.more[StatusCmdType.uptime];
final items = [tempVal ?? cmdTemp, upTime];
final items = [
cmdTemp ??
(temperatureVal != null
? '${temperatureVal.toStringAsFixed(1)}°C'
: null),
upTime
];
final str = items.where((e) => e != null && e.isNotEmpty).join(' | ');
if (str.isEmpty) return l10n.noResult;
return str;

View File

@@ -1,5 +1,3 @@
import 'package:toolbox/data/res/store.dart';
class Temperatures {
final Map<String, double> _map = {};
@@ -37,14 +35,6 @@ class Temperatures {
if (_map.isEmpty) {
return null;
}
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
if (preferTemperatureDevs.isNotEmpty) {
for (final key in preferTemperatureDevs) {
if (_map.containsKey(key)) {
return _map[key];
}
}
}
for (final key in _cpuTemp) {
if (_map.containsKey(key)) {
return _map[key];