From 71fc8a70177321676e4a955eb25f63ed3a42260b Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 15 Sep 2020 11:19:36 -0700 Subject: [PATCH] Metrics and lighting implementation (#116) Implements metrics and lighting control. --- photon-client/src/App.vue | 8 +- photon-client/src/store/index.js | 15 ++- photon-client/src/views/SettingsView.vue | 60 +++--------- .../src/views/SettingsViews/General.vue | 50 +++++++--- .../src/views/SettingsViews/Lighting.vue | 13 ++- .../src/views/SettingsViews/Networking.vue | 95 +++++++++++++------ .../src/main/java/org/photonvision/Main.java | 15 ++- .../common/configuration/ConfigManager.java | 30 +++++- .../common/configuration/HardwareConfig.java | 8 +- .../configuration/HardwareSettings.java | 22 +++++ .../common/configuration/NetworkConfig.java | 2 +- .../configuration/PhotonConfiguration.java | 56 +++++++---- .../common/hardware/HardwareManager.java | 41 +++++--- .../common/hardware/metrics/CPUMetrics.java | 14 ++- .../common/hardware/metrics/GPUMetrics.java | 13 ++- .../common/hardware/metrics/MetricsBase.java | 14 +-- .../hardware/metrics/MetricsPublisher.java | 52 +++++----- .../common/util/SerializationUtils.java | 1 + .../photonvision/server/RequestHandler.java | 6 ++ .../java/org/photonvision/server/Server.java | 1 + .../photonvision/server/SocketHandler.java | 7 ++ .../server/SocketMessageType.java | 1 + .../photonvision/hardware/HardwareTest.java | 3 +- 23 files changed, 345 insertions(+), 182 deletions(-) create mode 100644 photon-server/src/main/java/org/photonvision/common/configuration/HardwareSettings.java diff --git a/photon-client/src/App.vue b/photon-client/src/App.vue index a54bc10d2..480023f20 100644 --- a/photon-client/src/App.vue +++ b/photon-client/src/App.vue @@ -38,9 +38,9 @@ @@ -53,6 +53,7 @@ mdi-settings @@ -118,7 +119,7 @@ > - + @@ -246,6 +247,9 @@ import Logs from "./views/LogsView" this.handleInputWithIndex('currentPipeline', this.previouslySelectedIndex || 0); } this.previouslySelectedIndex = null; + }, + switchToSettingsTab() { + this.axios.post('http://' + this.$address + '/api/sendMetrics', {}) } } }; diff --git a/photon-client/src/store/index.js b/photon-client/src/store/index.js index da51e2347..b6e475aa1 100644 --- a/photon-client/src/store/index.js +++ b/photon-client/src/store/index.js @@ -127,6 +127,14 @@ export default new Vuex.Store({ patternHeight: 7, boardType: 0, // Chessboard, dotboard }, + metrics: { + cpuTemp: "N/A", + cpuUtil: "N/A", + cpuMem: "N/A", + gpuMem: "N/A", + ramUtil: "N/A", + gpuMemUtil: "N/A", + } }, mutations: { compactMode: set('compactMode'), @@ -135,6 +143,7 @@ export default new Vuex.Store({ selectedOutputs: set('selectedOutputs'), settings: set('settings'), calibrationData: set('calibrationData'), + metrics: set('metrics'), logString: (state, newStr) => { const str = state.logMessages; str.push(newStr) @@ -182,8 +191,12 @@ export default new Vuex.Store({ Vue.set(state, 'pipelineResults', payload[key]) } } + }, - + mutateEnabledLEDPercentage(state, payload) { + const settings = state.settings; + settings.lighting.brightness = payload; + Vue.set(state, "settings", settings); }, mutateCalibrationState: (state, payload) => { diff --git a/photon-client/src/views/SettingsView.vue b/photon-client/src/views/SettingsView.vue index ad6e18441..67375ab61 100644 --- a/photon-client/src/views/SettingsView.vue +++ b/photon-client/src/views/SettingsView.vue @@ -8,32 +8,19 @@ cols="12" style="max-width: 1400px" > - - - {{ item.name }} - - - - Save - - + {{ item.name }} + + diff --git a/photon-client/src/views/SettingsViews/General.vue b/photon-client/src/views/SettingsViews/General.vue index 064d9f121..0c56ac658 100644 --- a/photon-client/src/views/SettingsViews/General.vue +++ b/photon-client/src/views/SettingsViews/General.vue @@ -1,14 +1,21 @@