Code improvement

This commit is contained in:
Evgenii Abramov
2021-03-29 21:18:23 +03:00
parent 197b7c5de8
commit 1742407600

View File

@@ -42,7 +42,7 @@ class Device {
} }
} }
/* Create init state on device object create */ /* Create init state (for capabilities and properties) on device object create */
initState(cp) { initState(cp) {
const {type, parameters} = cp; const {type, parameters} = cp;
const actType = String(type).split('.')[2]; const actType = String(type).split('.')[2];
@@ -60,10 +60,24 @@ class Device {
value: false value: false
} }
} }
case 'toggle': { // case 'color_setting': {
// return {
// instance: (p => {
// if (p.temperature_k != undefined) return 'temperature_k';
// if (p.color_model != undefined) return p.color_model;
// else return undefined;
// })(parameters),
// value: (p => {
// if (p.temperature_k != undefined) return p.temperature_k.min || 4500;
// if (p.color_model == 'rgb') return 16777215;
// if (p.color_model == 'hsv') return {h: 0, s: 0, v: 100};
// })(parameters)
// }
// }
case 'mode': {
return { return {
instance: parameters.instance, instance: parameters.instance,
value: false value: parameters.modes[0].value
} }
} }
case 'range': { case 'range': {
@@ -72,10 +86,10 @@ class Device {
value: parameters.range.min value: parameters.range.min
} }
} }
case 'mode': { case 'toggle': {
return { return {
instance: parameters.instance, instance: parameters.instance,
value: parameters.modes[0].value value: false
} }
} }
default: { default: {
@@ -86,6 +100,26 @@ class Device {
} }
/* Find capability by type (and instance) */
findCapability(type, instance) {
const {capabilities} = this.data;
if (instance != undefined) {
return capabilities.find(c => c.type === type && c.state.instance === instance);
} else {
return capabilities.find(c => c.type === type);
}
}
/* Unused for now */
// findProperty(type) {
// return this.data.properties.find(p => p.type === type);
// }
/* Find 'set' topic by instance*/
findTopicByInstance(instance) {
return this.data.custom_data.mqtt.find(i => i.instance === instance).set;
}
/* Get mapped value (if exist) for capability type */ /* Get mapped value (if exist) for capability type */
/** /**
* *
@@ -105,21 +139,6 @@ class Device {
return (mappedValue != undefined) ? mappedValue : val; return (mappedValue != undefined) ? mappedValue : val;
} }
/* Find capability by type */
findCapability(type) {
return this.data.capabilities.find(c => c.type === type);
}
/* Unused for now */
findProperty(type) {
return this.data.properties.find(p => p.type === type);
}
/* Find 'set' topic by instance*/
findTopicByInstance(instance) {
return this.data.custom_data.mqtt.find(i => i.instance === instance).set;
}
getInfo() { getInfo() {
const {id, name, description, room, type, capabilities, properties} = this.data; const {id, name, description, room, type, capabilities, properties} = this.data;
return {id, name, description, room, type, capabilities, properties}; return {id, name, description, room, type, capabilities, properties};
@@ -160,7 +179,7 @@ class Device {
let message; let message;
let topic; let topic;
try { try {
const capability = this.findCapability(type); const capability = this.findCapability(type, instance);
if (capability == undefined) throw new Error(`Can't find capability '${type}' in device '${id}'`); if (capability == undefined) throw new Error(`Can't find capability '${type}' in device '${id}'`);
capability.state.value = value; capability.state.value = value;
topic = this.findTopicByInstance(instance); topic = this.findTopicByInstance(instance);