Save last pH/ORP to restore across restarts
All checks were successful
Node.js CI / build (18.x) (push) Successful in 21s
Node.js CI / build (20.x) (push) Successful in 6s
Node.js CI / build (22.x) (push) Successful in 6s

This commit is contained in:
2025-02-01 15:52:10 -06:00
parent b187da8feb
commit ff05fce350
3 changed files with 42 additions and 2 deletions

2
.gitignore vendored
View File

@ -56,3 +56,5 @@ typings/
# dotenv environment variables file # dotenv environment variables file
.env .env
lastData.json

View File

@ -1,8 +1,16 @@
import eslint from "@eslint/js"; import eslint from "@eslint/js";
import globals from "globals";
export default [ export default [
eslint.configs.recommended, eslint.configs.recommended,
{ {
ignores: ["eslint.config.mjs"], ignores: ["eslint.config.mjs"],
}, },
{
languageOptions: {
globals: {
...globals.node,
},
},
},
]; ];

View File

@ -1,10 +1,13 @@
/* global module require clearInterval clearTimeout setTimeout setInterval */
var NodeHelper = require("node_helper"); var NodeHelper = require("node_helper");
const { FindUnits, Unit } = require("node-intellicenter"); const { FindUnits, Unit } = require("node-intellicenter");
const messages = require("node-intellicenter/messages"); const messages = require("node-intellicenter/messages");
const Log = require("logger"); const Log = require("logger");
const path = require("path");
const fs = require("fs");
const filename = "/lastData.json";
var configFilename = path.resolve(__dirname + filename);
const reconnectDelayMs = 10 * 1000; const reconnectDelayMs = 10 * 1000;
const unitFinderTimeoutMs = 5 * 1000; const unitFinderTimeoutMs = 5 * 1000;
@ -39,6 +42,31 @@ let freezeObjnam = "";
let initialConnectDone = false; let initialConnectDone = false;
module.exports = NodeHelper.create({ module.exports = NodeHelper.create({
start() {
Log.info("##### Starting node helper for: " + this.name);
try {
const data = fs.readFileSync(configFilename);
if (data && data.length > 0) {
const parsed = JSON.parse(data);
poolData.lastPHVal = parsed.lastPH ?? 0;
poolData.lastOrpVal = parsed.lastOrp ?? 0;
}
} catch {
// no existing config
}
},
saveLast() {
const obj = {
lastPH: poolData.lastPHVal,
lastOrp: poolData.lastOrpVal,
};
const json = JSON.stringify(obj);
fs.writeFileSync(configFilename, json, "utf8");
},
setCircuit(circuitState) { setCircuit(circuitState) {
if (!foundUnit) { if (!foundUnit) {
return; return;
@ -209,9 +237,11 @@ module.exports = NodeHelper.create({
if (poolData.phVal !== 0) { if (poolData.phVal !== 0) {
poolData.lastPHVal = poolData.phVal; poolData.lastPHVal = poolData.phVal;
this.saveLast();
} }
if (poolData.orp !== 0) { if (poolData.orp !== 0) {
poolData.lastOrpVal = poolData.orp; poolData.lastOrpVal = poolData.orp;
this.saveLast();
} }
} else if (obj.objnam === poolObjnam) { } else if (obj.objnam === poolObjnam) {
Log.info("[MMM-IntelliCenter] received pool update"); Log.info("[MMM-IntelliCenter] received pool update");