Central Heating controller using the real time clock, PHY module for internet, 1-wire interface for temperature sensors, a system log and a configuration file

Dependencies:   net 1-wire lpc1768 crypto clock web fram log

/media/uploads/andrewboyson/heating.sch

/media/uploads/andrewboyson/heating.brd

/media/uploads/andrewboyson/eagle.epf

web-this/boiler/web-boiler-script.js

Committer:
andrewboyson
Date:
2021-02-10
Revision:
104:46ce1aaf8be7
Parent:
92:2d1ca4dcbca7
Child:
105:1899f7ed17ec

File content as of revision 104:46ce1aaf8be7:

//Boiler script
'use strict';

let dateTime           = '';
let   tankTemperature  = '';
let blrOutTemperature  = '';
let blrRtnTemperature  = '';
let boilerCall         = false;
let boilerPump         = false;
let tankSetPoint       = '';
let tankHysteresis     = '';
let blrRunOnDeg        = '';
let blrRunOnTime       = '';
let blrPumpSpeed       = '';
let blrPumpPwm         = '';
let pumpSpeedCalling   = '';
let pumpSpeedRunOn     = '';
let blrOutputTarget    = '';
let riseAt0            = '';
let riseAt50           = '';
let riseAt100          = '';

function parse()
{
    let lines = Ajax.response.split('\n');
      tankTemperature = Ajax.hexToSignedInt16(lines[ 0]);
    blrOutTemperature = Ajax.hexToSignedInt16(lines[ 1]);
    blrRtnTemperature = Ajax.hexToSignedInt16(lines[ 2]);
    boilerCall        = Ajax.hexToBit        (lines[ 3], 0);
    boilerPump        = Ajax.hexToBit        (lines[ 3], 1);
    tankSetPoint      = Ajax.hexToSignedInt16(lines[ 4]);
    tankHysteresis    = Ajax.hexToSignedInt16(lines[ 5]);
    blrRunOnDeg       = Ajax.hexToSignedInt16(lines[ 6]);
    blrRunOnTime      = Ajax.hexToSignedInt16(lines[ 7]);
    blrPumpSpeed      = Ajax.hexToSignedInt16(lines[ 8]);
    blrPumpPwm        = Ajax.hexToSignedInt16(lines[ 9]);
    pumpSpeedCalling  = Ajax.hexToSignedInt16(lines[10]);
    pumpSpeedRunOn    = Ajax.hexToSignedInt16(lines[11]);
    blrOutputTarget   = Ajax.hexToSignedInt16(lines[12]);
    riseAt0           = Ajax.hexToSignedInt16(lines[13]);
    riseAt50          = Ajax.hexToSignedInt16(lines[14]);
    riseAt100         = Ajax.hexToSignedInt16(lines[15]);
}
function display()
{
    let elem;
    elem = Ajax.getElementOrNull('ajax-tank-html'      ); if (elem) elem.textContent = OneWire.DS18B20ToString(tankTemperature);
    elem = Ajax.getElementOrNull('ajax-blr-out-html'   ); if (elem) elem.textContent = OneWire.DS18B20ToString(blrOutTemperature);
    elem = Ajax.getElementOrNull('ajax-blr-rtn-html'   ); if (elem) elem.textContent = OneWire.DS18B20ToString(blrRtnTemperature);
    elem = Ajax.getElementOrNull('ajax-blr-rise-html'  ); if (elem) elem.textContent = OneWire.DS18B20ToString(blrOutTemperature - blrRtnTemperature);
    
    elem = Ajax.getElementOrNull('ajax-blr-pump-speed-html'); if (elem) elem.textContent = blrPumpSpeed;
    elem = Ajax.getElementOrNull('ajax-blr-pump-pwm-html'  ); if (elem) elem.textContent = blrPumpPwm;
    
    elem = Ajax.getElementOrNull('ajax-blr-call-toggle'   ); if (elem) elem.setAttribute('dir', boilerCall ? 'rtl' : 'ltr');
    elem = Ajax.getElementOrNull('ajax-blr-pump-toggle'   ); if (elem) elem.setAttribute('dir', boilerPump ? 'rtl' : 'ltr');
    elem = Ajax.getElementOrNull('ajax-tank-set-point'    ); if (elem) elem.value = tankSetPoint;
    elem = Ajax.getElementOrNull('ajax-tank-hysteresis'   ); if (elem) elem.value = tankHysteresis;
    elem = Ajax.getElementOrNull('ajax-blr-run-on-deg'    ); if (elem) elem.value = OneWire.DS18B20ToString(blrRunOnDeg);
    elem = Ajax.getElementOrNull('ajax-blr-run-on-time'   ); if (elem) elem.value = blrRunOnTime;
    
    elem = Ajax.getElementOrNull('ajax-pump-speed-calling'); if (elem) elem.value = pumpSpeedCalling;
    elem = Ajax.getElementOrNull('ajax-pump-speed-run-on' ); if (elem) elem.value = pumpSpeedRunOn;
    elem = Ajax.getElementOrNull('ajax-blr-output-target' ); if (elem) elem.value = blrOutputTarget;
    
    elem = Ajax.getElementOrNull('ajax-pump-rise-at-0'    ); if (elem) elem.value = OneWire.DS18B20ToString(riseAt0);
    elem = Ajax.getElementOrNull('ajax-pump-rise-at-50'   ); if (elem) elem.value = OneWire.DS18B20ToString(riseAt50);
    elem = Ajax.getElementOrNull('ajax-pump-rise-at-100'  ); if (elem) elem.value = OneWire.DS18B20ToString(riseAt100);
}

Ajax.server     = '/boiler-ajax';
Ajax.onResponse = function() { parse(); display(); };
Ajax.init();