Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 1-wire clock crypto fram log lpc1768 net web wiz mbed
Revision 8:8ac076ce51af, committed 2022-11-12
- Comitter:
- andrewboyson
- Date:
- Sat Nov 12 10:03:38 2022 +0000
- Parent:
- 7:e55c6a61e15b
- Commit message:
- Updated LPC1768 library
Changed in this revision
--- a/heating/hall-led.c Mon Jun 06 11:10:04 2022 +0000
+++ b/heating/hall-led.c Sat Nov 12 10:03:38 2022 +0000
@@ -12,8 +12,8 @@
#define HALL_LED_SET FIO0SET(10)
#define HALL_LED_CLR FIO0CLR(10)
-#define WINTER_FLASH_MS 100
-#define SUMMER_FLASH_MS 500
+#define POSITIVE_FLASH_MS 100
+#define NEGATIVE_FLASH_MS 500
void HallLedInit()
{
@@ -24,12 +24,12 @@
static uint32_t hallLedFlashMsTimer = 0;
if (HallPbOverrideMode)
{
- if (RadiatorPump) HALL_LED_SET; else HALL_LED_CLR;
+ if (RadiatorsOn) HALL_LED_SET; else HALL_LED_CLR;
hallLedFlashMsTimer = MsTimerCount;
}
else
{
- int flashRate = RadiatorGetWinter() ? WINTER_FLASH_MS : SUMMER_FLASH_MS;
+ int flashRate = RadiatorGetHotWaterProtectOn() ? POSITIVE_FLASH_MS : NEGATIVE_FLASH_MS;
if (MsTimerRepetitive(&hallLedFlashMsTimer, flashRate))
{
static bool flash = false;
--- a/heating/hall-pb.c Mon Jun 06 11:10:04 2022 +0000
+++ b/heating/hall-pb.c Sat Nov 12 10:03:38 2022 +0000
@@ -10,7 +10,7 @@
#define HALL_PB_PIN FIO0PIN(05) // P0.05 == p29;
#define DEBOUNCE_MS 20
-#define LONG_PRESS_MS 3000
+#define LONG_PRESS_MS 2000
#define INACTIVE_REVERT_MS 30000
static int ms = 0;
@@ -67,7 +67,7 @@
if (!buttonIsPressed && buttonWasPressed && !buttonWasLongPressed)
{
if (HallPbOverrideMode) RadiatorChgOverride();
- else RadiatorChgWinter();
+ else RadiatorChgHotWaterProtectOn();
}
buttonWasPressed = buttonIsPressed;
buttonWasLongPressed = buttonIsLongPressed;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/heating/old-radiator.c Sat Nov 12 10:03:38 2022 +0000
@@ -0,0 +1,164 @@
+/*#include <stdint.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include "gpio.h"
+#include "program.h"
+#include "ds18b20.h"
+#include "settings.h"
+#include "boiler.h"
+#include "radiator.h"
+#include "clktime.h"
+#include "clk.h"
+#include "led.h"
+
+#define RADIATOR_PUMP_DIR FIO2DIR(03) // P2.03 == p23;
+#define RADIATOR_PUMP_PIN FIO2PIN(03)
+#define RADIATOR_PUMP_SET FIO2SET(03)
+#define RADIATOR_PUMP_CLR FIO2CLR(03)
+
+static bool htgOverride = false;
+static char htgWinter;
+static char* hallRom;
+static uint8_t overrideCancelHour;
+static uint8_t overrideCancelMinute;
+static int16_t nightTemperature;
+static int16_t frostTemperature;
+static char hotWaterProtectOn;
+static int8_t hotWaterProtectTemp;
+
+bool RadiatorGetWinter () { return (bool)htgWinter; }
+bool RadiatorGetOverride () { return htgOverride; }
+bool RadiatorGetHotWaterProtectOn () { return (bool)hotWaterProtectOn; }
+uint16_t RadiatorGetHallDS18B20Value () { return DS18B20ValueFromRom(hallRom); }
+int RadiatorGetOverrideCancelHour () { return (int)overrideCancelHour; }
+int RadiatorGetOverrideCancelMinute() { return (int)overrideCancelMinute; }
+int RadiatorGetNightTemperature () { return (int)nightTemperature; }
+int RadiatorGetFrostTemperature () { return (int)frostTemperature; }
+int RadiatorGetHotWaterProtectTemp () { return (int)hotWaterProtectTemp; }
+
+static void setWinter ( bool v) { htgWinter = (char)v; SetRadiatorWinter (&htgWinter ); }
+static void setHallRom ( char* v) { memcpy(hallRom, v, 8); SetHallRom ( hallRom ); }
+void RadiatorSetOverrideCancelHour ( int v) { if (v > 23 || v < 0) v = 0; overrideCancelHour = (uint8_t)v; SetOverrideCancelHour (&overrideCancelHour ); }
+void RadiatorSetOverrideCancelMinute( int v) { if (v > 59 || v < 0) v = 0; overrideCancelMinute = (uint8_t)v; SetOverrideCancelMinute(&overrideCancelMinute); }
+void RadiatorSetNightTemperature ( int v) { if (v > 99 || v < 0) v = 0; nightTemperature = (int16_t)v; SetNightTemperature (&nightTemperature ); }
+void RadiatorSetFrostTemperature ( int v) { if (v > 99 || v < 0) v = 0; frostTemperature = (int16_t)v; SetFrostTemperature (&frostTemperature ); }
+
+static bool outputBeforeOverride = false;
+static void makeOutputBeforeOverride()
+{
+ //See if the temperature is too low
+ int hallTemp16ths = DS18B20ValueFromRom(hallRom);
+ int nightTemp16ths = nightTemperature << 4;
+ int frostTemp16ths = frostTemperature << 4;
+
+ static bool tooCold = false; //This is static to ride through invalid temperature reads
+
+ static bool nightTooCold = false;
+ static bool frostTooCold = false;
+
+ if (DS18B20IsValidValue(hallTemp16ths))
+ {
+ if (hallTemp16ths < frostTemp16ths) frostTooCold = true;
+ if (hallTemp16ths > frostTemp16ths) frostTooCold = false;
+ if (hallTemp16ths < nightTemp16ths) nightTooCold = true; //Set at 289 (18.06) rather than 288 (18.00)
+ if (hallTemp16ths > nightTemp16ths) nightTooCold = false;//Reset at 287 (17.94). This prevent it following the flashing.
+ }
+
+ outputBeforeOverride = (htgWinter && ProgramTimerOutput) || (htgWinter && nightTooCold) || frostTooCold;
+}
+static void autoCancelOverride()
+{
+
+ //Remove override at 11pm
+ if (ClkTimeIsSet())
+ {
+ struct tm tm;
+ ClkNowTmLocal(&tm);
+ static bool cancelWasDue = false;
+ bool cancelIsDue = tm.tm_hour == overrideCancelHour && tm.tm_min == overrideCancelMinute;
+ if (cancelIsDue && !cancelWasDue && htgOverride) htgOverride = false;
+ cancelWasDue = cancelIsDue;
+ }
+
+ //Remove override if no longer required
+ static bool previousOutput = false;
+ if (previousOutput != outputBeforeOverride && htgOverride) htgOverride = false;
+ previousOutput = outputBeforeOverride;
+}
+bool RadiatorPump = false;
+static void makeOutputWithOverride()
+{
+ RadiatorPump = htgOverride ? !outputBeforeOverride : outputBeforeOverride ;
+ if (hotWaterProtectOn && BoilerGetTankDS18B20Value() < ((int16_t)hotWaterProtectTemp << 4)) RadiatorPump = false; //Prevent the heating from robbing all the hot water for showers
+}
+
+void RadiatorSetWinter(bool value) //Summer is false, Winter is true
+{
+ if (htgWinter == (char)value) return; //Ignore no change
+ setWinter(value); //Change to the new value
+
+ bool prevOutputBeforeOverride = outputBeforeOverride;
+ makeOutputBeforeOverride();
+
+ if (htgOverride) //Only deal with an override that is already set; if it wasn't set don't change it
+ {
+ if (htgWinter) //Summer -> Winter
+ {
+ if (outputBeforeOverride != prevOutputBeforeOverride) htgOverride = false; //Adjust the override to leave the heat as it was - off or on.
+ }
+ else //Winter -> Summer
+ {
+ htgOverride = false; //turn off the heat.
+ }
+ }
+
+ makeOutputWithOverride();
+}
+void RadiatorSetOverride(bool value)
+{
+ htgOverride = value;
+ makeOutputBeforeOverride();
+ makeOutputWithOverride();
+}
+
+void RadiatorChgWinter (){ RadiatorSetWinter (!RadiatorGetWinter ()); }
+void RadiatorChgOverride(){ RadiatorSetOverride(!RadiatorGetOverride()); }
+void RadiatorChgHotWaterProtectOn () { hotWaterProtectOn = !hotWaterProtectOn; makeOutputWithOverride(); SetHotWaterProtectOn (&hotWaterProtectOn ); }
+void RadiatorSetHotWaterProtectTemp( int v) { if (v > 99 || v < 0) v = 0; hotWaterProtectTemp = (int8_t)v; makeOutputWithOverride(); SetHotWaterProtectTemp(&hotWaterProtectTemp); }
+int RadiatorInit()
+{
+ hallRom = DS18B20Roms + 8 * DS18B20RomCount;
+ DS18B20RomSetters[DS18B20RomCount] = setHallRom;
+ DS18B20RomNames[DS18B20RomCount] = "Hall";
+ DS18B20RomCount++;
+
+ int address;
+ int8_t def1;
+ int16_t def2;
+ GetRadiatorWinter (&htgWinter );
+ GetHallRom ( hallRom );
+ GetOverrideCancelHour (&overrideCancelHour );
+ GetOverrideCancelMinute(&overrideCancelMinute);
+ GetNightTemperature (&nightTemperature );
+ GetFrostTemperature (&frostTemperature );
+ GetHotWaterProtectOn (&hotWaterProtectOn );
+ GetHotWaterProtectTemp (&hotWaterProtectTemp );
+
+ RADIATOR_PUMP_DIR = 1; //Set the direction to 1 == output
+
+ return 0;
+}
+void RadiatorMain()
+{
+ //Make the radiator output
+ makeOutputBeforeOverride();
+ autoCancelOverride(); //Do this after making the output as it uses that information
+ makeOutputWithOverride();
+
+ //Pump output
+ if (RadiatorPump) RADIATOR_PUMP_SET;
+ else RADIATOR_PUMP_CLR;
+
+}
+*/
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/heating/old-radiator.h Sat Nov 12 10:03:38 2022 +0000 @@ -0,0 +1,22 @@ +/*#include <stdbool.h> +#include <stdint.h> + +extern bool RadiatorGetWinter (void); extern void RadiatorSetWinter (bool value); extern void RadiatorChgWinter (void); +extern bool RadiatorGetOverride (void); extern void RadiatorSetOverride (bool value); extern void RadiatorChgOverride (void); +extern bool RadiatorGetHotWaterProtectOn(void); extern void RadiatorChgHotWaterProtectOn(void); + +extern uint16_t RadiatorGetHallDS18B20Value(void); + +extern int RadiatorGetOverrideCancelHour (void); extern void RadiatorSetOverrideCancelHour (int value); +extern int RadiatorGetOverrideCancelMinute(void); extern void RadiatorSetOverrideCancelMinute(int value); +extern int RadiatorGetNightTemperature (void); extern void RadiatorSetNightTemperature (int value); +extern int RadiatorGetFrostTemperature (void); extern void RadiatorSetFrostTemperature (int value); +extern int RadiatorGetHotWaterProtectTemp (void); extern void RadiatorSetHotWaterProtectTemp (int value); + + + +extern bool RadiatorPump; + +extern int RadiatorInit(void); +extern void RadiatorMain(void); +*/ \ No newline at end of file
--- a/heating/radiator.c Mon Jun 06 11:10:04 2022 +0000
+++ b/heating/radiator.c Sat Nov 12 10:03:38 2022 +0000
@@ -44,18 +44,19 @@
void RadiatorSetNightTemperature ( int v) { if (v > 99 || v < 0) v = 0; nightTemperature = (int16_t)v; SetNightTemperature (&nightTemperature ); }
void RadiatorSetFrostTemperature ( int v) { if (v > 99 || v < 0) v = 0; frostTemperature = (int16_t)v; SetFrostTemperature (&frostTemperature ); }
-static bool outputBeforeOverride = false;
-static void makeOutputBeforeOverride()
+static bool getProgramRequest()
+{
+ return htgWinter && ProgramTimerOutput;
+}
+static bool getTooCold()
{
//See if the temperature is too low
int hallTemp16ths = DS18B20ValueFromRom(hallRom);
int nightTemp16ths = nightTemperature << 4;
int frostTemp16ths = frostTemperature << 4;
-
- static bool tooCold = false; //This is static to ride through invalid temperature reads
- static bool nightTooCold = false;
- static bool frostTooCold = false;
+ static bool nightTooCold = false; //This is static to ride through invalid temperature reads
+ static bool frostTooCold = false; //This is static to ride through invalid temperature reads
if (DS18B20IsValidValue(hallTemp16ths))
{
@@ -65,7 +66,11 @@
if (hallTemp16ths > nightTemp16ths) nightTooCold = false;//Reset at 287 (17.94). This prevent it following the flashing.
}
- outputBeforeOverride = (htgWinter && ProgramTimerOutput) || (htgWinter && nightTooCold) || frostTooCold;
+ return (htgWinter && nightTooCold) || frostTooCold;
+}
+static bool getTankTooColdForShowers()
+{
+ return hotWaterProtectOn && BoilerGetTankDS18B20Value() < ((int16_t)hotWaterProtectTemp << 4); //Prevent the heating from robbing all the hot water for showers
}
static void autoCancelOverride()
{
@@ -82,50 +87,52 @@
}
//Remove override if no longer required
- static bool previousOutput = false;
- if (previousOutput != outputBeforeOverride && htgOverride) htgOverride = false;
- previousOutput = outputBeforeOverride;
+ bool thisProgramRequest = getProgramRequest();
+ static bool previousProgramRequest = false;
+ if (previousProgramRequest != thisProgramRequest && htgOverride) htgOverride = false;
+ previousProgramRequest = thisProgramRequest;
}
+bool RadiatorsOn = false;
bool RadiatorPump = false;
-static void makeOutputWithOverride()
+static void makeOutputs()
{
- RadiatorPump = htgOverride ? !outputBeforeOverride : outputBeforeOverride ;
- if (hotWaterProtectOn && BoilerGetTankDS18B20Value() < ((int16_t)hotWaterProtectTemp << 4)) RadiatorPump = false; //Prevent the heating from robbing all the hot water for showers
+ bool programRequest = getProgramRequest();
+ RadiatorsOn = htgOverride ? !programRequest : programRequest ;
+ RadiatorPump = RadiatorsOn && !getTankTooColdForShowers();
}
void RadiatorSetWinter(bool value) //Summer is false, Winter is true
{
if (htgWinter == (char)value) return; //Ignore no change
- setWinter(value); //Change to the new value
- bool prevOutputBeforeOverride = outputBeforeOverride;
- makeOutputBeforeOverride();
+ bool programRequestBeforeSettingWinter = getProgramRequest();
+ setWinter(value); //Change to the new value
+ bool programRequestAfterSettingWinter = getProgramRequest();
+
if (htgOverride) //Only deal with an override that is already set; if it wasn't set don't change it
{
if (htgWinter) //Summer -> Winter
{
- if (outputBeforeOverride != prevOutputBeforeOverride) htgOverride = false; //Adjust the override to leave the heat as it was - off or on.
+ if (programRequestAfterSettingWinter != programRequestBeforeSettingWinter) htgOverride = false; //Adjust the override to leave the heat as it was - off or on.
}
else //Winter -> Summer
{
htgOverride = false; //turn off the heat.
}
}
-
- makeOutputWithOverride();
+ makeOutputs();
}
void RadiatorSetOverride(bool value)
{
htgOverride = value;
- makeOutputBeforeOverride();
- makeOutputWithOverride();
+ makeOutputs();
}
void RadiatorChgWinter (){ RadiatorSetWinter (!RadiatorGetWinter ()); }
void RadiatorChgOverride(){ RadiatorSetOverride(!RadiatorGetOverride()); }
-void RadiatorChgHotWaterProtectOn () { hotWaterProtectOn = !hotWaterProtectOn; makeOutputWithOverride(); SetHotWaterProtectOn (&hotWaterProtectOn ); }
-void RadiatorSetHotWaterProtectTemp( int v) { if (v > 99 || v < 0) v = 0; hotWaterProtectTemp = (int8_t)v; makeOutputWithOverride(); SetHotWaterProtectTemp(&hotWaterProtectTemp); }
+void RadiatorChgHotWaterProtectOn () { hotWaterProtectOn = !hotWaterProtectOn; SetHotWaterProtectOn (&hotWaterProtectOn ); }
+void RadiatorSetHotWaterProtectTemp( int v) { if (v > 99 || v < 0) v = 0; hotWaterProtectTemp = (int8_t)v; SetHotWaterProtectTemp(&hotWaterProtectTemp); }
int RadiatorInit()
{
hallRom = DS18B20Roms + 8 * DS18B20RomCount;
@@ -151,12 +158,9 @@
}
void RadiatorMain()
{
- //Make the radiator output
- makeOutputBeforeOverride();
- autoCancelOverride(); //Do this after making the output as it uses that information
- makeOutputWithOverride();
+ autoCancelOverride();
+ makeOutputs();
- //Pump output
if (RadiatorPump) RADIATOR_PUMP_SET;
else RADIATOR_PUMP_CLR;
--- a/heating/radiator.h Mon Jun 06 11:10:04 2022 +0000 +++ b/heating/radiator.h Sat Nov 12 10:03:38 2022 +0000 @@ -13,8 +13,7 @@ extern int RadiatorGetFrostTemperature (void); extern void RadiatorSetFrostTemperature (int value); extern int RadiatorGetHotWaterProtectTemp (void); extern void RadiatorSetHotWaterProtectTemp (int value); - - +extern bool RadiatorsOn; extern bool RadiatorPump; extern int RadiatorInit(void);
--- a/lpc1768.lib Mon Jun 06 11:10:04 2022 +0000 +++ b/lpc1768.lib Sat Nov 12 10:03:38 2022 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/users/andrewboyson/code/lpc1768/#3ae450c74c5e +https://os.mbed.com/users/andrewboyson/code/lpc1768/#2f8af23950de
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Nov 12 10:03:38 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
--- a/web-this/home/web-home-html.c Mon Jun 06 11:10:04 2022 +0000
+++ b/web-this/home/web-home-html.c Sat Nov 12 10:03:38 2022 +0000
@@ -6,7 +6,7 @@
HttpOk("text/html; charset=UTF-8", "no-cache", NULL, NULL);
WebAddHeader("Home", NULL, "radiator.js");
- HttpAddText("<a href='/program' class='hamburger'>\r\n");
+ HttpAddText("<a href='/radiator' class='hamburger'>\r\n");
HttpAddText("<div class='bar' ></div>\r\n");
HttpAddText("<div class='space'></div>\r\n");
HttpAddText("<div class='bar' ></div>\r\n");
@@ -18,11 +18,13 @@
HttpAddText("<div id='ajax-date-local'></div>\r\n");
HttpAddText("<br/>\r\n");
- WebAddAjaxLabelledSuffix("Hall temperature", "ajax-hall-html", "°C");
+ WebAddAjaxLabelledSuffix("Hall temperature" , "ajax-hall-html", "°C");
+ HttpAddText("<br/>\r\n");
+ WebAddAjaxInputToggle ("Radiators" , "ajax-radiators-on-toggle", "htg-chg-override");
HttpAddText("<br/>\r\n");
- WebAddAjaxInputToggle("Winter mode", "ajax-mode-toggle" , "htg-chg-mode" );
+ WebAddAjaxInputToggle ("Hot water priority", "ajax-hw-prot-toggle" , "htg-chg-hw-prot" );
HttpAddText("<br/>\r\n");
- WebAddAjaxInputToggle("Radiators" , "ajax-radiator-toggle", "htg-chg-override");
+ WebAddAjaxInputToggle ("Winter mode" , "ajax-mode-toggle" , "htg-chg-mode" );
HttpAddText("<br/>\r\n");
WebAddEnd();
--- a/web-this/radiator/web-radiator-ajax.c Mon Jun 06 11:10:04 2022 +0000
+++ b/web-this/radiator/web-radiator-ajax.c Sat Nov 12 10:03:38 2022 +0000
@@ -21,6 +21,7 @@
if (RadiatorGetOverride() ) byte |= 0x04;
if (RadiatorPump ) byte |= 0x08;
if (RadiatorGetHotWaterProtectOn()) byte |= 0x10;
+ if (RadiatorsOn ) byte |= 0x20;
HttpAddByteAsHex(byte); HttpAddChar('\n');
HttpAddByteAsHex (RadiatorGetOverrideCancelHour() ); HttpAddChar('\n');
--- a/web-this/radiator/web-radiator-html.c Mon Jun 06 11:10:04 2022 +0000
+++ b/web-this/radiator/web-radiator-html.c Sat Nov 12 10:03:38 2022 +0000
@@ -10,7 +10,7 @@
WebAddH1("Radiator");
WebAddH2("Output");
- WebAddAjaxLed ("Radiator pump", "ajax-radiator-toggle");
+ WebAddAjaxLed ("Radiator pump", "ajax-radiator-pump-toggle");
WebAddH2("Inputs");
WebAddAjaxLabelledSuffix("Hall temperature", "ajax-hall-html", "°C");
--- a/web-this/radiator/web-radiator-script.inc Mon Jun 06 11:10:04 2022 +0000
+++ b/web-this/radiator/web-radiator-script.inc Sat Nov 12 10:03:38 2022 +0000
@@ -8,6 +8,7 @@
"let radiatorOverride = false;\n"
"let radiatorPump = false;\n"
"let hotWaterProtectOn = false;\n"
+"let radiatorsOn = false;\n"
"let overrideCancelHour = '';\n"
"let overrideCancelMinute = '';\n"
"let nightSetPoint = '';\n"
@@ -24,6 +25,7 @@
" radiatorOverride = Ajax.hexToBit (lines[2], 2);\n"
" radiatorPump = Ajax.hexToBit (lines[2], 3);\n"
" hotWaterProtectOn = Ajax.hexToBit (lines[2], 4);\n"
+" radiatorsOn = Ajax.hexToBit (lines[2], 5);\n"
" overrideCancelHour = Ajax.hexToSignedInt8 (lines[3]);\n"
" overrideCancelMinute = Ajax.hexToSignedInt8 (lines[4]);\n"
" nightSetPoint = Ajax.hexToSignedInt16(lines[5]);\n"
@@ -38,8 +40,9 @@
" elem = Ajax.getElementOrNull('ajax-program-toggle' ); if (elem) elem.setAttribute('dir', programTimerOutput ? 'rtl' : 'ltr');\n"
" elem = Ajax.getElementOrNull('ajax-mode-toggle' ); if (elem) elem.setAttribute('dir', radiatorMode ? 'rtl' : 'ltr');\n"
" elem = Ajax.getElementOrNull('ajax-override-toggle' ); if (elem) elem.setAttribute('dir', radiatorOverride ? 'rtl' : 'ltr');\n"
-" elem = Ajax.getElementOrNull('ajax-radiator-toggle' ); if (elem) elem.setAttribute('dir', radiatorPump ? 'rtl' : 'ltr');\n"
+" elem = Ajax.getElementOrNull('ajax-radiator-pump-toggle' ); if (elem) elem.setAttribute('dir', radiatorPump ? 'rtl' : 'ltr');\n"
" elem = Ajax.getElementOrNull('ajax-hw-prot-toggle' ); if (elem) elem.setAttribute('dir', hotWaterProtectOn ? 'rtl' : 'ltr');\n"
+" elem = Ajax.getElementOrNull('ajax-radiators-on-toggle' ); if (elem) elem.setAttribute('dir', radiatorsOn ? 'rtl' : 'ltr');\n"
" elem = Ajax.getElementOrNull('ajax-override-cancel-minute'); if (elem)\n"
" {\n"
" elem.value = String(overrideCancelHour*100 + overrideCancelMinute).padStart(4, '0');\n"
--- a/web-this/radiator/web-radiator-script.js Mon Jun 06 11:10:04 2022 +0000
+++ b/web-this/radiator/web-radiator-script.js Sat Nov 12 10:03:38 2022 +0000
@@ -8,6 +8,7 @@
let radiatorOverride = false;
let radiatorPump = false;
let hotWaterProtectOn = false;
+let radiatorsOn = false;
let overrideCancelHour = '';
let overrideCancelMinute = '';
let nightSetPoint = '';
@@ -24,6 +25,7 @@
radiatorOverride = Ajax.hexToBit (lines[2], 2);
radiatorPump = Ajax.hexToBit (lines[2], 3);
hotWaterProtectOn = Ajax.hexToBit (lines[2], 4);
+ radiatorsOn = Ajax.hexToBit (lines[2], 5);
overrideCancelHour = Ajax.hexToSignedInt8 (lines[3]);
overrideCancelMinute = Ajax.hexToSignedInt8 (lines[4]);
nightSetPoint = Ajax.hexToSignedInt16(lines[5]);
@@ -38,8 +40,9 @@
elem = Ajax.getElementOrNull('ajax-program-toggle' ); if (elem) elem.setAttribute('dir', programTimerOutput ? 'rtl' : 'ltr');
elem = Ajax.getElementOrNull('ajax-mode-toggle' ); if (elem) elem.setAttribute('dir', radiatorMode ? 'rtl' : 'ltr');
elem = Ajax.getElementOrNull('ajax-override-toggle' ); if (elem) elem.setAttribute('dir', radiatorOverride ? 'rtl' : 'ltr');
- elem = Ajax.getElementOrNull('ajax-radiator-toggle' ); if (elem) elem.setAttribute('dir', radiatorPump ? 'rtl' : 'ltr');
+ elem = Ajax.getElementOrNull('ajax-radiator-pump-toggle' ); if (elem) elem.setAttribute('dir', radiatorPump ? 'rtl' : 'ltr');
elem = Ajax.getElementOrNull('ajax-hw-prot-toggle' ); if (elem) elem.setAttribute('dir', hotWaterProtectOn ? 'rtl' : 'ltr');
+ elem = Ajax.getElementOrNull('ajax-radiators-on-toggle' ); if (elem) elem.setAttribute('dir', radiatorsOn ? 'rtl' : 'ltr');
elem = Ajax.getElementOrNull('ajax-override-cancel-minute'); if (elem)
{
elem.value = String(overrideCancelHour*100 + overrideCancelMinute).padStart(4, '0');