From 0ac921db3d7d296bd216282f1fbffa6dd1ba5eba Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 19 Nov 2019 16:18:56 +0200 Subject: Added OverallTemperature to DB Monitors. Added OverallTemperature support to Machine Emulator. Implemented OverallTemperature in maintenance screen PPC. --- Software/Graphics/Mobile/temperature-green.png | Bin 959 -> 926 bytes Software/Graphics/Mobile/temperature-green@2x.png | Bin 1725 -> 1730 bytes Software/Graphics/Mobile/temperature-green@3x.png | Bin 2474 -> 2482 bytes Software/Graphics/Mobile/temperature-red.png | Bin 0 -> 928 bytes Software/Graphics/Mobile/temperature-red@2x.png | Bin 0 -> 1733 bytes Software/Graphics/Mobile/temperature-red@3x.png | Bin 0 -> 2464 bytes Software/Graphics/Mobile/temperature-yellow.png | Bin 0 -> 927 bytes Software/Graphics/Mobile/temperature-yellow@2x.png | Bin 0 -> 1722 bytes Software/Graphics/Mobile/temperature-yellow@3x.png | Bin 0 -> 2469 bytes .../Messages/Diagnostics/DiagnosticsMonitors.proto | 3 ++ .../Images/temperature-green.png | Bin 959 -> 926 bytes .../Images/temperature-red.png | Bin 0 -> 928 bytes .../Images/temperature-yellow.png | Bin 0 -> 927 bytes .../Models/OverallTemperatureModel.cs | 30 +++++++++++++++++++ .../Tango.PPC.Maintenance.csproj | 5 ++++ .../ViewModels/MaintenanceViewVM.cs | 10 +++++++ .../Views/MaintenanceView.xaml | 21 ++++++++++++-- .../Tango.BL/Enumerations/TechMonitors.cs | 6 ++++ .../Tango.Integration/Operation/MachineOperator.cs | 4 +++ .../Tango.PMR/Diagnostics/DiagnosticsMonitors.cs | 32 ++++++++++++++++++--- .../Tango.MachineEM.UI/Views/MainView.xaml | 8 +++++- 21 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 Software/Graphics/Mobile/temperature-red.png create mode 100644 Software/Graphics/Mobile/temperature-red@2x.png create mode 100644 Software/Graphics/Mobile/temperature-red@3x.png create mode 100644 Software/Graphics/Mobile/temperature-yellow.png create mode 100644 Software/Graphics/Mobile/temperature-yellow@2x.png create mode 100644 Software/Graphics/Mobile/temperature-yellow@3x.png create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-red.png create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-yellow.png create mode 100644 Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Models/OverallTemperatureModel.cs diff --git a/Software/Graphics/Mobile/temperature-green.png b/Software/Graphics/Mobile/temperature-green.png index cdea8ff8b..f67323dde 100644 Binary files a/Software/Graphics/Mobile/temperature-green.png and b/Software/Graphics/Mobile/temperature-green.png differ diff --git a/Software/Graphics/Mobile/temperature-green@2x.png b/Software/Graphics/Mobile/temperature-green@2x.png index f7e7143eb..3d0c1724a 100644 Binary files a/Software/Graphics/Mobile/temperature-green@2x.png and b/Software/Graphics/Mobile/temperature-green@2x.png differ diff --git a/Software/Graphics/Mobile/temperature-green@3x.png b/Software/Graphics/Mobile/temperature-green@3x.png index be95be97e..d91cabfc8 100644 Binary files a/Software/Graphics/Mobile/temperature-green@3x.png and b/Software/Graphics/Mobile/temperature-green@3x.png differ diff --git a/Software/Graphics/Mobile/temperature-red.png b/Software/Graphics/Mobile/temperature-red.png new file mode 100644 index 000000000..5e6b505a3 Binary files /dev/null and b/Software/Graphics/Mobile/temperature-red.png differ diff --git a/Software/Graphics/Mobile/temperature-red@2x.png b/Software/Graphics/Mobile/temperature-red@2x.png new file mode 100644 index 000000000..265f02527 Binary files /dev/null and b/Software/Graphics/Mobile/temperature-red@2x.png differ diff --git a/Software/Graphics/Mobile/temperature-red@3x.png b/Software/Graphics/Mobile/temperature-red@3x.png new file mode 100644 index 000000000..4c19dbc70 Binary files /dev/null and b/Software/Graphics/Mobile/temperature-red@3x.png differ diff --git a/Software/Graphics/Mobile/temperature-yellow.png b/Software/Graphics/Mobile/temperature-yellow.png new file mode 100644 index 000000000..359e93d6d Binary files /dev/null and b/Software/Graphics/Mobile/temperature-yellow.png differ diff --git a/Software/Graphics/Mobile/temperature-yellow@2x.png b/Software/Graphics/Mobile/temperature-yellow@2x.png new file mode 100644 index 000000000..eaabb1c81 Binary files /dev/null and b/Software/Graphics/Mobile/temperature-yellow@2x.png differ diff --git a/Software/Graphics/Mobile/temperature-yellow@3x.png b/Software/Graphics/Mobile/temperature-yellow@3x.png new file mode 100644 index 000000000..0f58a63d5 Binary files /dev/null and b/Software/Graphics/Mobile/temperature-yellow@3x.png differ diff --git a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto index 82d8d3192..9a988beb8 100644 --- a/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto +++ b/Software/PMR/Messages/Diagnostics/DiagnosticsMonitors.proto @@ -213,4 +213,7 @@ message DiagnosticsMonitors //Mid Tanks Ink Level (Min = 0, Max = 2, PPF = 1) Channel Count = 8 repeated DoubleArray MidTanksInkLevel = 65; + //Overall Temperature (Min = 0, Max = 100, PPF = 1) + repeated double OverallTemperature = 66; + } diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-green.png b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-green.png index cdea8ff8b..f67323dde 100644 Binary files a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-green.png and b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-green.png differ diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-red.png b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-red.png new file mode 100644 index 000000000..5e6b505a3 Binary files /dev/null and b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-red.png differ diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-yellow.png b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-yellow.png new file mode 100644 index 000000000..359e93d6d Binary files /dev/null and b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Images/temperature-yellow.png differ diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Models/OverallTemperatureModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Models/OverallTemperatureModel.cs new file mode 100644 index 000000000..694071d0d --- /dev/null +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Models/OverallTemperatureModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core; +using Tango.Integration.Operation; + +namespace Tango.PPC.Maintenance.Models +{ + public class OverallTemperatureModel : ExtendedObject + { + private double _temperature; + public double Temperature + { + get { return _temperature; } + set { _temperature = value; RaisePropertyChangedAuto(); RaisePropertyChanged(nameof(IsWarning)); RaisePropertyChanged(nameof(IsError)); } + } + + public bool IsWarning + { + get { return Temperature > MachineOperator.OVERALL_TEMPERATURE_WARNING; } + } + + public bool IsError + { + get { return Temperature >= MachineOperator.OVERALL_TEMPERATURE_ERROR; } + } + } +} diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj index d774649ea..4a6957722 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Tango.PPC.Maintenance.csproj @@ -102,6 +102,7 @@ + Code @@ -228,6 +229,10 @@ + + + + diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs index 39932888e..014443eeb 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/ViewModels/MaintenanceViewVM.cs @@ -27,9 +27,18 @@ namespace Tango.PPC.Maintenance.ViewModels set { _midTankLevels = value; RaisePropertyChangedAuto(); } } + private OverallTemperatureModel _overallTemperature; + public OverallTemperatureModel OverallTemperature + { + get { return _overallTemperature; } + set { _overallTemperature = value; RaisePropertyChangedAuto(); } + } + + public MaintenanceViewVM() { Guides = new ObservableCollection(GuideHelper.CreateAllGuides()); + OverallTemperature = new OverallTemperatureModel(); OpenGuideCommand = new RelayCommand(OpenGuide); } @@ -55,6 +64,7 @@ namespace Tango.PPC.Maintenance.ViewModels private void MachineOperator_MachineStatusChanged(object sender, MachineStatus status) { UpdateMidTankLevels(status); + OverallTemperature.Temperature = status.OverallTemperature; } public async void OpenGuide(GuideBase guide) diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml index 658d0502c..43a74a1a7 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Views/MaintenanceView.xaml @@ -66,8 +66,25 @@ - - + + + + + + + + º + diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs b/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs index a017c18d1..ad77d945c 100644 --- a/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs +++ b/Software/Visual_Studio/Tango.BL/Enumerations/TechMonitors.cs @@ -373,6 +373,12 @@ namespace Tango.BL.Enumerations [Description("Mixer")] MixerTemperature = 9, + /// + /// (Overall Temperature) + /// + [Description("Overall Temperature")] + OverallTemperature = 102, + /// /// (Poller Motor) /// diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index 98d3248c5..85ee66756 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -54,10 +54,14 @@ namespace Tango.Integration.Operation public const String FIRMWARE_UPGRADE_FOLDER_NAME = "UpgradePackage"; public const String FIRMWARE_UPGRADE_CONFIG_FILE_NAME = "package.cfg"; public const String JOB_DESCRIPTION_FILE_NAME = "job_segments.jdf"; + public const int MAX_DISPENSER_NANOLITER = 130000000; public const double MAX_MIDTANK_LITERS = 1.8; public const double EMPTY_MIDTANK_LITERS = 0.2; public const double LOW_MIDTANK_LITERS = 0.3; + public const double OVERALL_TEMPERATURE_OK = 30; + public const double OVERALL_TEMPERATURE_WARNING = 30; + public const double OVERALL_TEMPERATURE_ERROR = 40; private bool _diagnosticsSent; private bool _eventsSent; diff --git a/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs b/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs index 2e7191370..ea6dfb0cb 100644 --- a/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs +++ b/Software/Visual_Studio/Tango.PMR/Diagnostics/DiagnosticsMonitors.cs @@ -23,7 +23,7 @@ namespace Tango.PMR.Diagnostics { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChlEaWFnbm9zdGljc01vbml0b3JzLnByb3RvEhVUYW5nby5QTVIuRGlhZ25v", - "c3RpY3MaEURvdWJsZUFycmF5LnByb3RvIoMQChNEaWFnbm9zdGljc01vbml0", + "c3RpY3MaEURvdWJsZUFycmF5LnByb3RvIp8QChNEaWFnbm9zdGljc01vbml0", "b3JzEhQKDERhbmNlcjFBbmdsZRgBIAMoARIUCgxEYW5jZXIyQW5nbGUYAiAD", "KAESFAoMRGFuY2VyM0FuZ2xlGAMgAygBEhwKFEZlZWRlck1vdG9yRnJlcXVl", "bmN5GAQgAygBEhIKCkRyeWVyTW90b3IYBSADKAESEwoLUG9sbGVyTW90b3IY", @@ -69,12 +69,12 @@ namespace Tango.PMR.Diagnostics { "YXRlckN1cnJlbnQYPyADKAESPgoSRGlzcGVuc2Vyc0lua0xldmVsGEAgAygL", "MiIuVGFuZ28uUE1SLkRpYWdub3N0aWNzLkRvdWJsZUFycmF5EjwKEE1pZFRh", "bmtzSW5rTGV2ZWwYQSADKAsyIi5UYW5nby5QTVIuRGlhZ25vc3RpY3MuRG91", - "YmxlQXJyYXlCIQofY29tLnR3aW5lLnRhbmdvLnBtci5kaWFnbm9zdGljc2IG", - "cHJvdG8z")); + "YmxlQXJyYXkSGgoST3ZlcmFsbFRlbXBlcmF0dXJlGEIgAygBQiEKH2NvbS50", + "d2luZS50YW5nby5wbXIuZGlhZ25vc3RpY3NiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Tango.PMR.Diagnostics.DoubleArrayReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.DiagnosticsMonitors), global::Tango.PMR.Diagnostics.DiagnosticsMonitors.Parser, new[]{ "Dancer1Angle", "Dancer2Angle", "Dancer3Angle", "FeederMotorFrequency", "DryerMotor", "PollerMotor", "WinderMotor", "ScrewMotor", "ThreadSpeed", "MixerTemperature", "HeadZone1Temperature", "HeadZone2Temperature", "HeadZone3Temperature", "HeadAirFlow", "FeederTension", "PullerTension", "DryerZone1Temperature", "DryerZone2Temperature", "DryerZone3Temperature", "DryerAirFlow", "WinderTension", "DispensersMotorsFrequency", "DispensersAngularEncoders", "DispensersLinearPositions", "DispensersPressure", "FilterDeltaPressure", "ChillerTemperature", "Dispenser1MotorFrequency", "Dispenser2MotorFrequency", "Dispenser3MotorFrequency", "Dispenser4MotorFrequency", "Dispenser5MotorFrequency", "Dispenser6MotorFrequency", "Dispenser7MotorFrequency", "Dispenser8MotorFrequency", "HeadZone4Temperature", "HeadZone5Temperature", "HeadZone6Temperature", "BlowerVoltage", "Dispenser1Pressure", "Dispenser2Pressure", "Dispenser3Pressure", "Dispenser4Pressure", "Dispenser5Pressure", "Dispenser6Pressure", "Dispenser7Pressure", "Dispenser8Pressure", "MidTank1Level", "MidTank2Level", "MidTank3Level", "MidTank4Level", "MidTank5Level", "MidTank6Level", "MidTank7Level", "MidTank8Level", "DrierZone1HeaterCurrent", "DrierZone2HeaterCurrent", "HeadZone1HeaterCurrent", "HeadZone2HeaterCurrent", "HeadZone3HeaterCurrent", "HeadZone4HeaterCurrent", "HeadZone56HeaterCurrent", "Mixer1HeaterCurrent", "DispensersInkLevel", "MidTanksInkLevel" }, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Diagnostics.DiagnosticsMonitors), global::Tango.PMR.Diagnostics.DiagnosticsMonitors.Parser, new[]{ "Dancer1Angle", "Dancer2Angle", "Dancer3Angle", "FeederMotorFrequency", "DryerMotor", "PollerMotor", "WinderMotor", "ScrewMotor", "ThreadSpeed", "MixerTemperature", "HeadZone1Temperature", "HeadZone2Temperature", "HeadZone3Temperature", "HeadAirFlow", "FeederTension", "PullerTension", "DryerZone1Temperature", "DryerZone2Temperature", "DryerZone3Temperature", "DryerAirFlow", "WinderTension", "DispensersMotorsFrequency", "DispensersAngularEncoders", "DispensersLinearPositions", "DispensersPressure", "FilterDeltaPressure", "ChillerTemperature", "Dispenser1MotorFrequency", "Dispenser2MotorFrequency", "Dispenser3MotorFrequency", "Dispenser4MotorFrequency", "Dispenser5MotorFrequency", "Dispenser6MotorFrequency", "Dispenser7MotorFrequency", "Dispenser8MotorFrequency", "HeadZone4Temperature", "HeadZone5Temperature", "HeadZone6Temperature", "BlowerVoltage", "Dispenser1Pressure", "Dispenser2Pressure", "Dispenser3Pressure", "Dispenser4Pressure", "Dispenser5Pressure", "Dispenser6Pressure", "Dispenser7Pressure", "Dispenser8Pressure", "MidTank1Level", "MidTank2Level", "MidTank3Level", "MidTank4Level", "MidTank5Level", "MidTank6Level", "MidTank7Level", "MidTank8Level", "DrierZone1HeaterCurrent", "DrierZone2HeaterCurrent", "HeadZone1HeaterCurrent", "HeadZone2HeaterCurrent", "HeadZone3HeaterCurrent", "HeadZone4HeaterCurrent", "HeadZone56HeaterCurrent", "Mixer1HeaterCurrent", "DispensersInkLevel", "MidTanksInkLevel", "OverallTemperature" }, null, null, null) })); } #endregion @@ -170,6 +170,7 @@ namespace Tango.PMR.Diagnostics { mixer1HeaterCurrent_ = other.mixer1HeaterCurrent_.Clone(); dispensersInkLevel_ = other.dispensersInkLevel_.Clone(); midTanksInkLevel_ = other.midTanksInkLevel_.Clone(); + overallTemperature_ = other.overallTemperature_.Clone(); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1022,6 +1023,19 @@ namespace Tango.PMR.Diagnostics { get { return midTanksInkLevel_; } } + /// Field number for the "OverallTemperature" field. + public const int OverallTemperatureFieldNumber = 66; + private static readonly pb::FieldCodec _repeated_overallTemperature_codec + = pb::FieldCodec.ForDouble(530); + private readonly pbc::RepeatedField overallTemperature_ = new pbc::RepeatedField(); + /// + ///Overall Temperature (Min = 0, Max = 100, PPF = 1) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pbc::RepeatedField OverallTemperature { + get { return overallTemperature_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as DiagnosticsMonitors); @@ -1100,6 +1114,7 @@ namespace Tango.PMR.Diagnostics { if(!mixer1HeaterCurrent_.Equals(other.mixer1HeaterCurrent_)) return false; if(!dispensersInkLevel_.Equals(other.dispensersInkLevel_)) return false; if(!midTanksInkLevel_.Equals(other.midTanksInkLevel_)) return false; + if(!overallTemperature_.Equals(other.overallTemperature_)) return false; return true; } @@ -1171,6 +1186,7 @@ namespace Tango.PMR.Diagnostics { hash ^= mixer1HeaterCurrent_.GetHashCode(); hash ^= dispensersInkLevel_.GetHashCode(); hash ^= midTanksInkLevel_.GetHashCode(); + hash ^= overallTemperature_.GetHashCode(); return hash; } @@ -1246,6 +1262,7 @@ namespace Tango.PMR.Diagnostics { mixer1HeaterCurrent_.WriteTo(output, _repeated_mixer1HeaterCurrent_codec); dispensersInkLevel_.WriteTo(output, _repeated_dispensersInkLevel_codec); midTanksInkLevel_.WriteTo(output, _repeated_midTanksInkLevel_codec); + overallTemperature_.WriteTo(output, _repeated_overallTemperature_codec); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1316,6 +1333,7 @@ namespace Tango.PMR.Diagnostics { size += mixer1HeaterCurrent_.CalculateSize(_repeated_mixer1HeaterCurrent_codec); size += dispensersInkLevel_.CalculateSize(_repeated_dispensersInkLevel_codec); size += midTanksInkLevel_.CalculateSize(_repeated_midTanksInkLevel_codec); + size += overallTemperature_.CalculateSize(_repeated_overallTemperature_codec); return size; } @@ -1389,6 +1407,7 @@ namespace Tango.PMR.Diagnostics { mixer1HeaterCurrent_.Add(other.mixer1HeaterCurrent_); dispensersInkLevel_.Add(other.dispensersInkLevel_); midTanksInkLevel_.Add(other.midTanksInkLevel_); + overallTemperature_.Add(other.overallTemperature_); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1718,6 +1737,11 @@ namespace Tango.PMR.Diagnostics { midTanksInkLevel_.AddEntriesFrom(input, _repeated_midTanksInkLevel_codec); break; } + case 530: + case 529: { + overallTemperature_.AddEntriesFrom(input, _repeated_overallTemperature_codec); + break; + } } } } diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml index 15cbf9dc4..58fbfef4c 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml @@ -198,7 +198,7 @@ IDS Packs Levels - + @@ -230,6 +230,12 @@ MACHINE STATE + + + OVERALL TEMPERATURE + + + -- cgit v1.3.1