From 7515c44298620c8983d31c4f4a7d8f35e4488604 Mon Sep 17 00:00:00 2001 From: Sam Stenvall Date: Fri, 16 Aug 2024 12:39:11 +0300 Subject: [PATCH] Refactor ANALOG_INPUT_SENSOR_TYPES into an array --- app/enervent.mjs | 54 +++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/app/enervent.mjs b/app/enervent.mjs index f17e410..2949cd8 100644 --- a/app/enervent.mjs +++ b/app/enervent.mjs @@ -65,22 +65,34 @@ export const SENSOR_TYPE_CO2 = 'CO2' export const SENSOR_TYPE_RH = 'RH' export const SENSOR_TYPE_ROOM_TEMP = 'ROOM_TEMP' -// 0=NA, 1=CO2_1, 2=CO2_2, 3=CO2_3, 4=RH_1, 5=RH_2, 6=RH_3, 7=OUT_TERM, 8=ROOM_TERM_1, -// 9=ROOM_TERM_2, 10=ROOM_TERM_3, 11=TEMP_SP, 12=Time relay, 13=External heating disable, 14=External cooling disable, -// 15=PDE10, 16=PDE30 -export const ANALOG_INPUT_SENSOR_TYPES = { +export const ANALOG_INPUT_SENSOR_TYPES = [ // Skip sensor types we can't handle - 0: { type: SENSOR_TYPE_NONE }, - 1: { type: SENSOR_TYPE_CO2, name: 'analogInputCo21', description: 'CO2 #1' }, - 2: { type: SENSOR_TYPE_CO2, name: 'analogInputCo22', description: 'CO2 #1' }, - 3: { type: SENSOR_TYPE_CO2, name: 'analogInputCo23', description: 'CO2 #1' }, - 4: { type: SENSOR_TYPE_RH, name: 'analogInputHumidity1', description: 'RH #1' }, - 5: { type: SENSOR_TYPE_RH, name: 'analogInputHumidity2', description: 'RH #1' }, - 6: { type: SENSOR_TYPE_RH, name: 'analogInputHumidity3', description: 'RH #1' }, - 8: { type: SENSOR_TYPE_ROOM_TEMP, name: 'analogInputRoomTemperature1', description: 'Room temperature #1' }, - 9: { type: SENSOR_TYPE_ROOM_TEMP, name: 'analogInputRoomTemperature2', description: 'Room temperature #1' }, - 10: { type: SENSOR_TYPE_ROOM_TEMP, name: 'analogInputRoomTemperature3', description: 'Room temperature #1' }, -} + { type: 0, sensorType: SENSOR_TYPE_NONE }, + { type: 1, sensorType: SENSOR_TYPE_CO2, name: 'analogInputCo21', description: 'CO2 #1' }, + { type: 2, sensorType: SENSOR_TYPE_CO2, name: 'analogInputCo22', description: 'CO2 #1' }, + { type: 3, sensorType: SENSOR_TYPE_CO2, name: 'analogInputCo23', description: 'CO2 #1' }, + { type: 4, sensorType: SENSOR_TYPE_RH, name: 'analogInputHumidity1', description: 'RH #1' }, + { type: 5, sensorType: SENSOR_TYPE_RH, name: 'analogInputHumidity2', description: 'RH #1' }, + { type: 6, sensorType: SENSOR_TYPE_RH, name: 'analogInputHumidity3', description: 'RH #1' }, + { + type: 8, + sensorType: SENSOR_TYPE_ROOM_TEMP, + name: 'analogInputRoomTemperature1', + description: 'Room temperature #1', + }, + { + type: 9, + sensorType: SENSOR_TYPE_ROOM_TEMP, + name: 'analogInputRoomTemperature2', + description: 'Room temperature #1', + }, + { + type: 10, + sensorType: SENSOR_TYPE_ROOM_TEMP, + name: 'analogInputRoomTemperature3', + description: 'Room temperature #1', + }, +] export const AUTOMATION_TYPE_LEGACY_EDA = 'LEGACY_EDA' export const AUTOMATION_TYPE_EDA = 'EDA' @@ -196,9 +208,9 @@ export const parseStateBitField = (state) => { export const hasRoomTemperatureSensor = (sensorTypesResult) => { for (let i = 0; i < 6; i++) { - const sensorType = ANALOG_INPUT_SENSOR_TYPES[sensorTypesResult.data[i]] + const sensor = ANALOG_INPUT_SENSOR_TYPES.find((sensor) => sensor.type === sensorTypesResult.data[i]) - if (sensorType.type === SENSOR_TYPE_ROOM_TEMP) { + if (sensor?.sensorType === SENSOR_TYPE_ROOM_TEMP) { return true } } @@ -210,17 +222,17 @@ export const parseAnalogSensors = (sensorTypesResult, sensorValuesResult) => { const sensorReadings = {} for (let i = 0; i < 6; i++) { - const sensorType = ANALOG_INPUT_SENSOR_TYPES[sensorTypesResult.data[i]] + const sensor = ANALOG_INPUT_SENSOR_TYPES.find((sensor) => sensor.type === sensorTypesResult.data[i]) - switch (sensorType.type) { + switch (sensor?.sensorType) { // Use raw value case SENSOR_TYPE_CO2: case SENSOR_TYPE_RH: - sensorReadings[sensorType.name] = sensorValuesResult.data[i] + sensorReadings[sensor.name] = sensorValuesResult.data[i] break // Parse as temperature case SENSOR_TYPE_ROOM_TEMP: - sensorReadings[sensorType.name] = parseTemperature(sensorValuesResult.data[i]) + sensorReadings[sensor.name] = parseTemperature(sensorValuesResult.data[i]) break } }