From 1fcbf7a66758119cbbf03fb735de5f6270e5a2e4 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Tue, 3 Oct 2023 00:58:52 +0300 Subject: [PATCH] Bump version to 0.1.3 --- package.json | 2 +- thermostat.js | 133 ++++++++++++++++++++++++++------------------------ 2 files changed, 70 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index c722fbd..ba4e64d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@vvzvlad/node-red-contrib-rn-combined-nodes", - "version": "0.1.2", + "version": "0.1.3", "description": "", "main": "index.js", "keywords": [ diff --git a/thermostat.js b/thermostat.js index 666243f..af2f53c 100644 --- a/thermostat.js +++ b/thermostat.js @@ -45,70 +45,6 @@ module.exports = function(RED) { } - function logic() { - if (control_mode === "off") { - heater_status = 0 - debug_text("Heater: force/off") - return - } - - if (control_mode === "on") { - heater_status = 1 - debug_text("Heater: force/on") - return - } - - if (control_mode === "auto-predict" && current_temp !== null && target_temp !== null) { - const predicted_temp = predict_temp_change(current_temp, 40) - if (window_state === "open" && window_mode === "cool") { - heater_status = 0 - debug_text("Heater: w-open-cool/off") - return - } - if (window_state === "open" && window_mode === "heat") { - heater_status = 1 - debug_text("Heater: w-open-heat/on") - return - } - - if (window_state === "close") { - if (predicted_temp < target_temp) { - heater_status = 1 - debug_text(`Heater: auto-predict/${"on"}`) - } else if (predicted_temp >= target_temp) { - heater_status = 0 - debug_text(`Heater: auto-predict/${"off"}`) - } - } - return - } - - if (control_mode === "auto" && current_temp !== null && target_temp !== null) { - if (window_state === "open" && window_mode === "cool") { - heater_status = 0 - debug_text("Heater: w-open-cool/off") - return - } - if (window_state === "open" && window_mode === "heat") { - heater_status = 1 - debug_text("Heater: w-open-heat/on") - return - } - - if (window_state === "close") { - if (current_temp <= target_temp - HEAT_ON_THRESHOLD) { - heater_status = 1 - debug_text(`Heater: auto/${"on"}`) - } else if (current_temp >= target_temp + HEAT_OFF_THRESHOLD) { - heater_status = 0 - debug_text(`Heater: auto/${"off"}`) - } else { - debug_text(`Heater: auto/${"hyst"}`) - } - } - return - } - } node.on('input', function(msg) { let topic = msg.topic @@ -121,6 +57,75 @@ module.exports = function(RED) { let window_mode = context.get("window_mode") || "cool" //heat, cool, off let heater_status = null + + function logic() { + if (control_mode === "off") { + heater_status = 0 + debug_text("Heater: force/off") + return + } + + if (control_mode === "on") { + heater_status = 1 + debug_text("Heater: force/on") + return + } + + if (control_mode === "auto-predict" && current_temp !== null && target_temp !== null) { + const predicted_temp = predict_temp_change(current_temp, 40) + if (window_state === "open" && window_mode === "cool") { + heater_status = 0 + debug_text("Heater: w-open-cool/off") + return + } + if (window_state === "open" && window_mode === "heat") { + heater_status = 1 + debug_text("Heater: w-open-heat/on") + return + } + + if (window_state === "close") { + if (predicted_temp < target_temp) { + heater_status = 1 + debug_text(`Heater: auto-predict/${"on"}`) + } else if (predicted_temp >= target_temp) { + heater_status = 0 + debug_text(`Heater: auto-predict/${"off"}`) + } + } + return + } + + if (control_mode === "auto" && current_temp !== null && target_temp !== null) { + if (window_state === "open" && window_mode === "cool") { + heater_status = 0 + debug_text("Heater: w-open-cool/off") + return + } + if (window_state === "open" && window_mode === "heat") { + heater_status = 1 + debug_text("Heater: w-open-heat/on") + return + } + + if (window_state === "close") { + if (current_temp <= target_temp - HEAT_ON_THRESHOLD) { + heater_status = 1 + debug_text(`Heater: auto/${"on"}`) + } else if (current_temp >= target_temp + HEAT_OFF_THRESHOLD) { + heater_status = 0 + debug_text(`Heater: auto/${"off"}`) + } else { + debug_text(`Heater: auto/${"hyst"}`) + } + } + return + } + } + + + + debug_text(`W-mode: ${window_mode}`) if (topic === "window_mode_control" && (payload === "cool" || payload === "heat" || payload === "off")) { window_mode = payload