From f95802767197613a05c6ea49eb83c8c2280ee052 Mon Sep 17 00:00:00 2001 From: Stefan Dej Date: Sun, 31 Jan 2021 00:46:01 +0100 Subject: [PATCH] feature: add additional sensor support in temperature panel (bme280...) Signed-off-by: Stefan Dej --- src/components/panels/ToolsPanel.vue | 17 ++++++++++--- src/store/printer/getters.js | 38 ++++++++++++++++++++++++++++ src/store/variables.js | 5 ++++ 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/components/panels/ToolsPanel.vue b/src/components/panels/ToolsPanel.vue index 1d802d3d..42329405 100644 --- a/src/components/panels/ToolsPanel.vue +++ b/src/components/panels/ToolsPanel.vue @@ -75,7 +75,10 @@ {{ convertName(heater.name) }} {{ heater.target > 0 ? (heater.power !== null ? (heater.power > 0 ? (heater.power * 100).toFixed(0)+'%' : "0%") : "active") : "off" }} - {{ heater.temperature ? heater.temperature.toFixed(1) : 0 }}°C + + {{ heater.temperature ? heater.temperature.toFixed(1) : 0 }}°C + {{ values.value.toFixed(1) }} {{ values.unit }} + @@ -89,7 +92,10 @@ {{ convertName(fan.name) }} {{ fan.target > 0 && fan.speed > 0 ? (fan.speed * 100).toFixed(0)+"%" : (fan.target > 0 ? "standby" : "off") }} - {{ fan.temperature ? fan.temperature.toFixed(1) : 0}}°C + + {{ fan.temperature ? fan.temperature.toFixed(1) : 0}}°C + {{ values.value.toFixed(1) }} {{ values.unit }} + @@ -101,20 +107,23 @@ {{ sensor.icon }} - {{ convertName(sensor.name) }} + + {{ convertName(sensor.name) }} +   min: {{ sensor.measured_min_temp ? sensor.measured_min_temp.toFixed(1) : 0}}°
max: {{ sensor.measured_max_temp ? sensor.measured_max_temp.toFixed(1) : 0 }}°
+ {{ values.value.toFixed(1) }} {{ values.unit }}
  diff --git a/src/store/printer/getters.js b/src/store/printer/getters.js index 6a5f571a..c0e5bdb5 100644 --- a/src/store/printer/getters.js +++ b/src/store/printer/getters.js @@ -1,4 +1,5 @@ import { caseInsensitiveNameSort } from '@/plugins/helpers' +import { additionalSensors } from '@/store/variables' export default { @@ -77,6 +78,7 @@ export default { color: color, target: value.target, temperature: value.temperature, + additionValues: getters.getAdditionSensors(nameSplit[1]), power: 'power' in value ? value.power : null, presets: rootGetters["gui/getPresetsFromHeater"]({ name: key }), chartColor: getters["tempHistory/getDatasetColor"](name), @@ -104,6 +106,7 @@ export default { name: nameSplit[1], target: value.target, temperature: value.temperature, + additionValues: getters.getAdditionSensors(nameSplit[1]), speed: value.speed, presets: rootGetters["gui/getPresetsFromHeater"]({ name: key }), chartColor: getters["tempHistory/getDatasetColor"](nameSplit[1]), @@ -132,9 +135,12 @@ export default { if (value.temperature <= min_temp + split) icon = "mdi-thermometer-low" if (value.temperature >= max_temp - split) icon = "mdi-thermometer-high" + + sensors.push({ name: nameSplit[1], temperature: value.temperature, + additionValues: getters.getAdditionSensors(nameSplit[1]), icon: icon, min_temp: min_temp, max_temp: max_temp, @@ -277,6 +283,38 @@ export default { }) }, + getAdditionSensors: state => (name) => { + let additionValues = {} + additionalSensors.forEach(sensorName => { + if (sensorName+" "+name in state) { + Object.keys(state[sensorName+" "+name]).forEach(key => { + if (key !== "temperature") { + let tmp = {} + tmp[key] = {} + tmp[key]['value'] = state[sensorName+" "+name][key] + + switch(key) { + case 'pressure': + tmp[key]['unit'] = "hPa" + break + + case 'humidity': + tmp[key]['unit'] = "%" + break + + default: + tmp[key]['unit'] = "" + } + + additionValues = Object.assign(additionValues, tmp) + } + }) + } + }) + + return additionValues + }, + getAllMacros: state => { let array = [] diff --git a/src/store/variables.js b/src/store/variables.js index a3ef9cbf..cee4d73b 100644 --- a/src/store/variables.js +++ b/src/store/variables.js @@ -16,4 +16,9 @@ export const datasetTypes = [ "temperature", "target", "power", +] + +export const additionalSensors = [ + "bme280", + "htu21d", ] \ No newline at end of file