mirror of
https://github.com/parnic/MMM-IntelliCenter.git
synced 2025-06-16 21:21:53 -05:00
Get control labels, status working
This gets everything working in the module except the ability to turn circuits on and off and set heat temperatures.
This commit is contained in:
@ -158,24 +158,11 @@ Module.register("MMM-IntelliCenter", {
|
|||||||
|
|
||||||
if (controlObj.type === "circuit") {
|
if (controlObj.type === "circuit") {
|
||||||
let { name } = controlObj;
|
let { name } = controlObj;
|
||||||
// todo: rework how controls are specified
|
|
||||||
// for (const circuit in poolData.controllerConfig.bodyArray) {
|
|
||||||
// if (
|
|
||||||
// poolData.controllerConfig.bodyArray[circuit].circuitId ===
|
|
||||||
// controlObj.id
|
|
||||||
// ) {
|
|
||||||
// if (!name) {
|
|
||||||
// name = poolData.controllerConfig.bodyArray[circuit].name;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
let on = false;
|
let on = false;
|
||||||
// for (const circuit in poolData.status.circuitArray) {
|
if (poolData.circuits[controlObj.id]) {
|
||||||
// if (poolData.status.circuitArray[circuit].id === controlObj.id) {
|
name = poolData.circuits[controlObj.id].name ?? controlObj.name;
|
||||||
// on = poolData.status.circuitArray[circuit].state !== 0;
|
on = poolData.circuits[controlObj.id].status;
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
let cls = "";
|
let cls = "";
|
||||||
if (this.config.colored) {
|
if (this.config.colored) {
|
||||||
@ -191,6 +178,7 @@ Module.register("MMM-IntelliCenter", {
|
|||||||
class: this.config.contentClass,
|
class: this.config.contentClass,
|
||||||
});
|
});
|
||||||
} else if (controlObj.type === "heatpoint") {
|
} else if (controlObj.type === "heatpoint") {
|
||||||
|
// todo: if "body" isn't defined in the user's config correctly, this will error out
|
||||||
const body = controlObj.body.toLowerCase();
|
const body = controlObj.body.toLowerCase();
|
||||||
if (body !== "pool" && body !== "spa") {
|
if (body !== "pool" && body !== "spa") {
|
||||||
Log.warn(
|
Log.warn(
|
||||||
@ -214,6 +202,7 @@ Module.register("MMM-IntelliCenter", {
|
|||||||
class: this.config.contentClass,
|
class: this.config.contentClass,
|
||||||
});
|
});
|
||||||
} else if (controlObj.type === "heatmode") {
|
} else if (controlObj.type === "heatmode") {
|
||||||
|
// todo: if "body" isn't defined in the user's config correctly, this will error out
|
||||||
const body = controlObj.body.toLowerCase();
|
const body = controlObj.body.toLowerCase();
|
||||||
if (body !== "pool" && body !== "spa") {
|
if (body !== "pool" && body !== "spa") {
|
||||||
Log.warn(
|
Log.warn(
|
||||||
|
@ -26,6 +26,7 @@ const poolData = {
|
|||||||
saltPPM: 0,
|
saltPPM: 0,
|
||||||
saturation: 0,
|
saturation: 0,
|
||||||
freezeMode: false,
|
freezeMode: false,
|
||||||
|
circuits: {},
|
||||||
};
|
};
|
||||||
let poolObjnam = "B1101";
|
let poolObjnam = "B1101";
|
||||||
let spaObjnam = "B1202";
|
let spaObjnam = "B1202";
|
||||||
@ -222,6 +223,14 @@ module.exports = NodeHelper.create({
|
|||||||
if (obj.params.STATUS) {
|
if (obj.params.STATUS) {
|
||||||
poolData.freezeMode = obj.params.STATUS === "ON";
|
poolData.freezeMode = obj.params.STATUS === "ON";
|
||||||
}
|
}
|
||||||
|
} else if (Object.keys(poolData.circuits).includes(obj.objnam)) {
|
||||||
|
Log.info(
|
||||||
|
`[MMM-IntelliCenter] received update for circuit ${obj.objnam}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (obj.params.STATUS) {
|
||||||
|
poolData.circuits[obj.objnam].status = obj.params.STATUS === "ON";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.info(
|
Log.info(
|
||||||
`[MMM-IntelliCenter] received update for untracked object: ${obj.objnam}`,
|
`[MMM-IntelliCenter] received update for untracked object: ${obj.objnam}`,
|
||||||
@ -267,11 +276,37 @@ module.exports = NodeHelper.create({
|
|||||||
|
|
||||||
Log.info("[MMM-IntelliCenter] getting circuit information...");
|
Log.info("[MMM-IntelliCenter] getting circuit information...");
|
||||||
const circuits = await foundUnit.send(messages.GetCircuitStatus());
|
const circuits = await foundUnit.send(messages.GetCircuitStatus());
|
||||||
const freezeCirc = circuits.objectList?.find((obj) => obj.params?.SUBTYP === "FRZ");
|
const freezeCirc = circuits.objectList?.find(
|
||||||
|
(obj) => obj.params?.SUBTYP === "FRZ",
|
||||||
|
);
|
||||||
if (freezeCirc) {
|
if (freezeCirc) {
|
||||||
freezeObjnam = freezeCirc.objnam;
|
freezeObjnam = freezeCirc.objnam;
|
||||||
Log.info(`[MMM-IntelliCenter] registering for freeze-protection updates...`);
|
Log.info(
|
||||||
await foundUnit.send(messages.SubscribeToUpdates(freezeObjnam, "STATUS"));
|
`[MMM-IntelliCenter] registering for freeze-protection updates...`,
|
||||||
|
);
|
||||||
|
await foundUnit.send(
|
||||||
|
messages.SubscribeToUpdates(freezeObjnam, "STATUS"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (this.config.controls?.length > 0) {
|
||||||
|
for (const circuit of circuits.objectList) {
|
||||||
|
const wantedControl = this.config.controls.find(
|
||||||
|
(c) => c.id === circuit.objnam,
|
||||||
|
);
|
||||||
|
if (!wantedControl) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
poolData.circuits[circuit.objnam] = {
|
||||||
|
status: false,
|
||||||
|
name: circuit.params.SNAME,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const circuit of Object.keys(poolData.circuits)) {
|
||||||
|
Log.info(`[MMM-IntelliCenter] registering for ${circuit} updates...`);
|
||||||
|
await foundUnit.send(messages.SubscribeToUpdates(circuit, "STATUS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bodyUpdates.length > 0) {
|
if (bodyUpdates.length > 0) {
|
||||||
|
Reference in New Issue
Block a user