Monitor motorhome leisure battery and provide simple control of habitation
Dependencies: net lpc1768 crypto clock web fram log
web-this/battery/web-battery-script.js
- Committer:
- andrewboyson
- Date:
- 2022-06-06
- Revision:
- 9:d957af50fdc2
- Parent:
- web-this/boiler/web-boiler-script.js@ 0:b843d647695c
File content as of revision 9:d957af50fdc2:
//Battery script 'use strict'; let batteryCountedCapacity = ''; let batteryCountedError = ''; let batteryCurrentMa = ''; let batteryCapacitySetpoint = ''; let batteryOutputState = ''; let batteryChargeEnabled = false; let batteryDischargeEnabled = false; let batteryTemperatureTenths = ''; let batteryTemperatureSetPoint = ''; let batteryHeaterPercent = ''; let batteryVoltageMv = ''; let batteryMeasuredPercent = ''; let batteryMeasuredError = ''; let batteryMeasuredAutoUpdate = false; function parse() { let lines = Ajax.response.split('\n'); batteryCountedCapacity = Ajax.hexToSignedInt32(lines[ 0]); batteryCountedError = Ajax.hexToSignedInt8 (lines[ 1]); batteryCurrentMa = Ajax.hexToSignedInt32(lines[ 2]); batteryCapacitySetpoint = Ajax.hexToSignedInt8 (lines[ 3]); batteryOutputState = lines[ 4]; batteryChargeEnabled = Ajax.hexToBit (lines[ 5], 0); batteryDischargeEnabled = Ajax.hexToBit (lines[ 5], 1); batteryTemperatureTenths = Ajax.hexToSignedInt16(lines[ 6]); batteryTemperatureSetPoint = Ajax.hexToSignedInt16(lines[ 7]); batteryHeaterPercent = Ajax.hexToSignedInt8 (lines[ 8]); batteryVoltageMv = Ajax.hexToSignedInt16(lines[ 9]); batteryMeasuredPercent = Ajax.hexToSignedInt8 (lines[10]); batteryMeasuredError = Ajax.hexToSignedInt8 (lines[11]); batteryMeasuredAutoUpdate = Ajax.hexToSignedInt8 (lines[12]); } function display() { let elem; elem = Ajax.getElementOrNull('txt-battery-counted-capacity-amp-seconds' ); if (elem) elem.textContent = batteryCountedCapacity; elem = Ajax.getElementOrNull('val-battery-counted-error' ); if (elem) elem.value = batteryCountedError; elem = Ajax.getElementOrNull('txt-battery-counted-capacity-amp-hours' ); if (elem) elem.textContent = Math.round(batteryCountedCapacity/3600); elem = Ajax.getElementOrNull('txt-battery-counted-capacity-percent' ); if (elem) elem.textContent = Math.round(batteryCountedCapacity/36/280); elem = Ajax.getElementOrNull('val-battery-counted-capacity-percent' ); if (elem) elem.value = Math.round(batteryCountedCapacity/36/280); elem = Ajax.getElementOrNull('txt-battery-current-ma' ); if (elem) elem.textContent = batteryCurrentMa; elem = Ajax.getElementOrNull('val-battery-capacity-setpoint-percent' ); if (elem) elem.value = batteryCapacitySetpoint; elem = Ajax.getElementOrNull('txt-battery-output-state' ); if (elem) elem.textContent = batteryOutputState; elem = Ajax.getElementOrNull('att-battery-charge-enabled' ); if (elem) elem.setAttribute('dir', batteryChargeEnabled ? 'rtl' : 'ltr'); elem = Ajax.getElementOrNull('att-battery-discharge-enabled' ); if (elem) elem.setAttribute('dir', batteryDischargeEnabled ? 'rtl' : 'ltr'); elem = Ajax.getElementOrNull('txt-battery-temperature-tenths' ); if (elem) elem.textContent = (batteryTemperatureTenths/10).toFixed(1); elem = Ajax.getElementOrNull('val-battery-temperature-setpoint' ); if (elem) elem.value = (batteryTemperatureSetPoint/10).toFixed(1); elem = Ajax.getElementOrNull('txt-battery-heater-output-percent' ); if (elem) elem.textContent = batteryHeaterPercent; elem = Ajax.getElementOrNull('txt-battery-voltage-mv' ); if (elem) elem.textContent = batteryVoltageMv; elem = Ajax.getElementOrNull('txt-battery-measured-percent' ); if (elem) elem.textContent = batteryMeasuredPercent; elem = Ajax.getElementOrNull('txt-battery-measured-error' ); if (elem) elem.textContent = batteryMeasuredError; elem = Ajax.getElementOrNull('att-battery-auto-update' ); if (elem) elem.setAttribute('dir', batteryMeasuredAutoUpdate ? 'rtl' : 'ltr'); } Ajax.server = '/battery-ajax'; Ajax.onResponse = function() { parse(); display(); }; Ajax.init();