Monitor for central heating system (e.g. 2zones+hw) Supports up to 15 temp probes (DS18B20/DS18S20) 3 valve monitors Gas pulse meter recording Use stand-alone or with nodeEnergyServer See http://robdobson.com/2015/09/central-heating-monitor

Dependencies:   EthernetInterfacePlusHostname NTPClient Onewire RdWebServer SDFileSystem-RTOS mbed-rtos mbed-src

Committer:
Bobty
Date:
Fri Oct 16 09:07:04 2015 +0000
Revision:
23:fd5a5a9f30bc
Added index.html file to project for completeness

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bobty 23:fd5a5a9f30bc 1 <!DOCTYPE html>
Bobty 23:fd5a5a9f30bc 2 <html>
Bobty 23:fd5a5a9f30bc 3
Bobty 23:fd5a5a9f30bc 4 <head>
Bobty 23:fd5a5a9f30bc 5 <title>Gas Use Monitor</title>
Bobty 23:fd5a5a9f30bc 6 <meta name="viewport" content="width=device-width, initial-scale=1">
Bobty 23:fd5a5a9f30bc 7 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
Bobty 23:fd5a5a9f30bc 8 <script type="text/javascript">
Bobty 23:fd5a5a9f30bc 9
Bobty 23:fd5a5a9f30bc 10 var pathToServer = "./";
Bobty 23:fd5a5a9f30bc 11
Bobty 23:fd5a5a9f30bc 12 function callAjax(url, callback, contentType, usePost) {
Bobty 23:fd5a5a9f30bc 13 var xmlhttp;
Bobty 23:fd5a5a9f30bc 14 // code for IE7+, Firefox, Chrome, Opera, Safari
Bobty 23:fd5a5a9f30bc 15 xmlhttp = new XMLHttpRequest();
Bobty 23:fd5a5a9f30bc 16 xmlhttp.onreadystatechange = function() {
Bobty 23:fd5a5a9f30bc 17 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
Bobty 23:fd5a5a9f30bc 18 callback(xmlhttp.responseText);
Bobty 23:fd5a5a9f30bc 19 }
Bobty 23:fd5a5a9f30bc 20 }
Bobty 23:fd5a5a9f30bc 21
Bobty 23:fd5a5a9f30bc 22 if (typeof usePost !== "undefined") {
Bobty 23:fd5a5a9f30bc 23 xmlhttp.open("POST", url, true);
Bobty 23:fd5a5a9f30bc 24 } else {
Bobty 23:fd5a5a9f30bc 25 xmlhttp.open("GET", url, true);
Bobty 23:fd5a5a9f30bc 26 }
Bobty 23:fd5a5a9f30bc 27 if (typeof contentType !== "undefined") {
Bobty 23:fd5a5a9f30bc 28 if (contentType === "json") {
Bobty 23:fd5a5a9f30bc 29 xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
Bobty 23:fd5a5a9f30bc 30 }
Bobty 23:fd5a5a9f30bc 31 }
Bobty 23:fd5a5a9f30bc 32 xmlhttp.send();
Bobty 23:fd5a5a9f30bc 33 }
Bobty 23:fd5a5a9f30bc 34
Bobty 23:fd5a5a9f30bc 35 function ajaxCallback() {}
Bobty 23:fd5a5a9f30bc 36
Bobty 23:fd5a5a9f30bc 37 function dataRefresh() {
Bobty 23:fd5a5a9f30bc 38 updateCurData();
Bobty 23:fd5a5a9f30bc 39 setTimeout(function() {
Bobty 23:fd5a5a9f30bc 40 dataRefresh();
Bobty 23:fd5a5a9f30bc 41 }, 10000);
Bobty 23:fd5a5a9f30bc 42 }
Bobty 23:fd5a5a9f30bc 43
Bobty 23:fd5a5a9f30bc 44 function updateCurData() {
Bobty 23:fd5a5a9f30bc 45 callAjax(pathToServer+"getcurdata", curDataCallback, "json");
Bobty 23:fd5a5a9f30bc 46 }
Bobty 23:fd5a5a9f30bc 47
Bobty 23:fd5a5a9f30bc 48 function curDataCallback(resp) {
Bobty 23:fd5a5a9f30bc 49 console.log("Response " + resp);
Bobty 23:fd5a5a9f30bc 50 var respObj = JSON.parse(resp);
Bobty 23:fd5a5a9f30bc 51 // Handle elements
Bobty 23:fd5a5a9f30bc 52 if ("e" in respObj) {
Bobty 23:fd5a5a9f30bc 53 // Remove temperature and pump elements
Bobty 23:fd5a5a9f30bc 54 var elem = document.getElementById("tempValues");
Bobty 23:fd5a5a9f30bc 55 while (elem.firstChild) {
Bobty 23:fd5a5a9f30bc 56 elem.removeChild(elem.firstChild);
Bobty 23:fd5a5a9f30bc 57 }
Bobty 23:fd5a5a9f30bc 58 var elem = document.getElementById("pumpValues");
Bobty 23:fd5a5a9f30bc 59 while (elem.firstChild) {
Bobty 23:fd5a5a9f30bc 60 elem.removeChild(elem.firstChild);
Bobty 23:fd5a5a9f30bc 61 }
Bobty 23:fd5a5a9f30bc 62
Bobty 23:fd5a5a9f30bc 63 // Extract data from ajax json block and show
Bobty 23:fd5a5a9f30bc 64 var i;
Bobty 23:fd5a5a9f30bc 65 for (i = 0; i < respObj.e.length; i++) {
Bobty 23:fd5a5a9f30bc 66 dataRec = respObj.e[i];
Bobty 23:fd5a5a9f30bc 67 if ("n" in dataRec) {
Bobty 23:fd5a5a9f30bc 68 if (dataRec.n === "gasCount") {
Bobty 23:fd5a5a9f30bc 69 var elem = document.getElementById("gasCountValue");
Bobty 23:fd5a5a9f30bc 70 elem.innerHTML = "" + dataRec.v;
Bobty 23:fd5a5a9f30bc 71 } else if (dataRec.n.indexOf("temp_") > -1) {
Bobty 23:fd5a5a9f30bc 72 var tempStr = dataRec.n.slice(dataRec.n.lastIndexOf("_") + 1);
Bobty 23:fd5a5a9f30bc 73 var elem = document.getElementById("tempValues");
Bobty 23:fd5a5a9f30bc 74 var para = document.createElement("p");
Bobty 23:fd5a5a9f30bc 75 para.className = "label";
Bobty 23:fd5a5a9f30bc 76 var node = document.createTextNode(tempStr);
Bobty 23:fd5a5a9f30bc 77 para.appendChild(node);
Bobty 23:fd5a5a9f30bc 78 elem.appendChild(para);
Bobty 23:fd5a5a9f30bc 79 para = document.createElement("p");
Bobty 23:fd5a5a9f30bc 80 para.className = "value";
Bobty 23:fd5a5a9f30bc 81 node = document.createTextNode("" + dataRec.v);
Bobty 23:fd5a5a9f30bc 82 para.appendChild(node);
Bobty 23:fd5a5a9f30bc 83 elem.appendChild(para);
Bobty 23:fd5a5a9f30bc 84 } else if (dataRec.n.indexOf("pump_") > -1) {
Bobty 23:fd5a5a9f30bc 85 var pumpStr = dataRec.n.slice(dataRec.n.lastIndexOf("_") + 1);
Bobty 23:fd5a5a9f30bc 86 var elem = document.getElementById("pumpValues");
Bobty 23:fd5a5a9f30bc 87 var para = document.createElement("p");
Bobty 23:fd5a5a9f30bc 88 para.className = "label";
Bobty 23:fd5a5a9f30bc 89 var node = document.createTextNode(pumpStr);
Bobty 23:fd5a5a9f30bc 90 para.appendChild(node);
Bobty 23:fd5a5a9f30bc 91 elem.appendChild(para);
Bobty 23:fd5a5a9f30bc 92 para = document.createElement("p");
Bobty 23:fd5a5a9f30bc 93 para.className = "value";
Bobty 23:fd5a5a9f30bc 94 node = document.createTextNode(dataRec.bv ? "On" : "Off");
Bobty 23:fd5a5a9f30bc 95 para.appendChild(node);
Bobty 23:fd5a5a9f30bc 96 elem.appendChild(para);
Bobty 23:fd5a5a9f30bc 97 }
Bobty 23:fd5a5a9f30bc 98 }
Bobty 23:fd5a5a9f30bc 99 }
Bobty 23:fd5a5a9f30bc 100 }
Bobty 23:fd5a5a9f30bc 101 if ("bt" in respObj) {
Bobty 23:fd5a5a9f30bc 102 var elem = document.getElementById("lastUpdateTime");
Bobty 23:fd5a5a9f30bc 103 ud = new Date(respObj.bt * 1000);
Bobty 23:fd5a5a9f30bc 104 elem.innerHTML = "" + ud.getFullYear() + "/" + padZero(ud.getMonth() + 1, 2) + "/" + padZero(ud.getDate(), 2) + " " + padZero(ud.getHours(), 2) + ":" + padZero(ud.getMinutes(), 2) + ":" + padZero(ud.getSeconds(), 2);
Bobty 23:fd5a5a9f30bc 105 }
Bobty 23:fd5a5a9f30bc 106
Bobty 23:fd5a5a9f30bc 107 }
Bobty 23:fd5a5a9f30bc 108
Bobty 23:fd5a5a9f30bc 109 function padZero(val, zeroes) {
Bobty 23:fd5a5a9f30bc 110 return ("00000000" + val).slice(-zeroes);
Bobty 23:fd5a5a9f30bc 111 }
Bobty 23:fd5a5a9f30bc 112
Bobty 23:fd5a5a9f30bc 113 function dispGasNewVal() {
Bobty 23:fd5a5a9f30bc 114 document.getElementById("gasadjust").style.display = "none";
Bobty 23:fd5a5a9f30bc 115 document.getElementById("gasnewval").style.display = "block";
Bobty 23:fd5a5a9f30bc 116 document.getElementById("setgasnewval").style.display = "block";
Bobty 23:fd5a5a9f30bc 117 }
Bobty 23:fd5a5a9f30bc 118
Bobty 23:fd5a5a9f30bc 119 function setGasNewVal() {
Bobty 23:fd5a5a9f30bc 120 document.getElementById("gasadjust").style.display = "block";
Bobty 23:fd5a5a9f30bc 121 document.getElementById("gasnewval").style.display = "none";
Bobty 23:fd5a5a9f30bc 122 document.getElementById("setgasnewval").style.display = "none";
Bobty 23:fd5a5a9f30bc 123 var elem = document.getElementById("gasnewval");
Bobty 23:fd5a5a9f30bc 124 var newVal = elem.value;
Bobty 23:fd5a5a9f30bc 125 callAjax(pathToServer + "setgascount?newVal=" + newVal, setValCallback, "json", "POST")
Bobty 23:fd5a5a9f30bc 126 }
Bobty 23:fd5a5a9f30bc 127
Bobty 23:fd5a5a9f30bc 128 function setValCallback(resp) {
Bobty 23:fd5a5a9f30bc 129 console.log("setGasValue returned " + resp)
Bobty 23:fd5a5a9f30bc 130 updateCurData();
Bobty 23:fd5a5a9f30bc 131 }
Bobty 23:fd5a5a9f30bc 132
Bobty 23:fd5a5a9f30bc 133 function showLog() {
Bobty 23:fd5a5a9f30bc 134 document.getElementById("logtext").style.display = "block";
Bobty 23:fd5a5a9f30bc 135 callAjax(pathToServer+"log.txt", getLogTextCallback);
Bobty 23:fd5a5a9f30bc 136 }
Bobty 23:fd5a5a9f30bc 137
Bobty 23:fd5a5a9f30bc 138 function showUpload() {
Bobty 23:fd5a5a9f30bc 139 document.getElementById("fileuploadform").style.display = "block";
Bobty 23:fd5a5a9f30bc 140 }
Bobty 23:fd5a5a9f30bc 141
Bobty 23:fd5a5a9f30bc 142 function getLogTextCallback(resp) {
Bobty 23:fd5a5a9f30bc 143 var elem = document.getElementById("logtext");
Bobty 23:fd5a5a9f30bc 144 elem.innerHTML = resp;
Bobty 23:fd5a5a9f30bc 145 }
Bobty 23:fd5a5a9f30bc 146
Bobty 23:fd5a5a9f30bc 147 $(document).ready(function() {
Bobty 23:fd5a5a9f30bc 148 $('#UploadNow').click(function() {
Bobty 23:fd5a5a9f30bc 149 var formData = new FormData($('form')[0]);
Bobty 23:fd5a5a9f30bc 150 $.ajax({
Bobty 23:fd5a5a9f30bc 151 url: pathToServer + 'upload', //Server script to process data
Bobty 23:fd5a5a9f30bc 152 type: 'POST',
Bobty 23:fd5a5a9f30bc 153 xhr: function() { // Custom XMLHttpRequest
Bobty 23:fd5a5a9f30bc 154 var myXhr = $.ajaxSettings.xhr();
Bobty 23:fd5a5a9f30bc 155 if (myXhr.upload) { // Check if upload property exists
Bobty 23:fd5a5a9f30bc 156 myXhr.upload.addEventListener('progress', progressHandlingFunction, false); // For handling the progress of the upload
Bobty 23:fd5a5a9f30bc 157 }
Bobty 23:fd5a5a9f30bc 158 return myXhr;
Bobty 23:fd5a5a9f30bc 159 },
Bobty 23:fd5a5a9f30bc 160 //Ajax events
Bobty 23:fd5a5a9f30bc 161 // beforeSend: beforeSendHandler,
Bobty 23:fd5a5a9f30bc 162 success: completeHandler,
Bobty 23:fd5a5a9f30bc 163 error: errorHandler,
Bobty 23:fd5a5a9f30bc 164 // Form data
Bobty 23:fd5a5a9f30bc 165 data: formData,
Bobty 23:fd5a5a9f30bc 166 //Options to tell jQuery not to process data or worry about content-type.
Bobty 23:fd5a5a9f30bc 167 cache: false,
Bobty 23:fd5a5a9f30bc 168 contentType: false,
Bobty 23:fd5a5a9f30bc 169 processData: false
Bobty 23:fd5a5a9f30bc 170 });
Bobty 23:fd5a5a9f30bc 171 });
Bobty 23:fd5a5a9f30bc 172
Bobty 23:fd5a5a9f30bc 173 function progressHandlingFunction(e) {
Bobty 23:fd5a5a9f30bc 174 if (e.lengthComputable) {
Bobty 23:fd5a5a9f30bc 175 $('progress').attr({
Bobty 23:fd5a5a9f30bc 176 value: e.loaded,
Bobty 23:fd5a5a9f30bc 177 max: e.total
Bobty 23:fd5a5a9f30bc 178 });
Bobty 23:fd5a5a9f30bc 179 }
Bobty 23:fd5a5a9f30bc 180 }
Bobty 23:fd5a5a9f30bc 181
Bobty 23:fd5a5a9f30bc 182 function completeHandler(e) {
Bobty 23:fd5a5a9f30bc 183 alert("Completed file upload");
Bobty 23:fd5a5a9f30bc 184 }
Bobty 23:fd5a5a9f30bc 185
Bobty 23:fd5a5a9f30bc 186 function errorHandler(jqXHR, textStatus, errorThrown) {
Bobty 23:fd5a5a9f30bc 187 alert("Error uploading file " + textStatus + " " + errorThrown);
Bobty 23:fd5a5a9f30bc 188 }
Bobty 23:fd5a5a9f30bc 189 });
Bobty 23:fd5a5a9f30bc 190 </script>
Bobty 23:fd5a5a9f30bc 191 <style>
Bobty 23:fd5a5a9f30bc 192 body {
Bobty 23:fd5a5a9f30bc 193 font-family: Helvetica;
Bobty 23:fd5a5a9f30bc 194 line-height: 1rem;
Bobty 23:fd5a5a9f30bc 195 font-size: 12pt;
Bobty 23:fd5a5a9f30bc 196 }
Bobty 23:fd5a5a9f30bc 197
Bobty 23:fd5a5a9f30bc 198 .layout {
Bobty 23:fd5a5a9f30bc 199 display: table;
Bobty 23:fd5a5a9f30bc 200 width: 360px;
Bobty 23:fd5a5a9f30bc 201 margin: 0 auto 0 auto;
Bobty 23:fd5a5a9f30bc 202 }
Bobty 23:fd5a5a9f30bc 203
Bobty 23:fd5a5a9f30bc 204 .pageheading {
Bobty 23:fd5a5a9f30bc 205 background-color: #00344c;
Bobty 23:fd5a5a9f30bc 206 display: block;
Bobty 23:fd5a5a9f30bc 207 min-height: 60px;
Bobty 23:fd5a5a9f30bc 208 text-align: center;
Bobty 23:fd5a5a9f30bc 209 }
Bobty 23:fd5a5a9f30bc 210
Bobty 23:fd5a5a9f30bc 211 .headingtxt {
Bobty 23:fd5a5a9f30bc 212 height: 100%;
Bobty 23:fd5a5a9f30bc 213 padding: 10px;
Bobty 23:fd5a5a9f30bc 214 padding-top: 20px;
Bobty 23:fd5a5a9f30bc 215 color: White;
Bobty 23:fd5a5a9f30bc 216 vertical-align: middle;
Bobty 23:fd5a5a9f30bc 217 text-align: center;
Bobty 23:fd5a5a9f30bc 218 }
Bobty 23:fd5a5a9f30bc 219
Bobty 23:fd5a5a9f30bc 220 .label,
Bobty 23:fd5a5a9f30bc 221 .value,
Bobty 23:fd5a5a9f30bc 222 #gasnewval {
Bobty 23:fd5a5a9f30bc 223 width: 100%;
Bobty 23:fd5a5a9f30bc 224 text-align: center;
Bobty 23:fd5a5a9f30bc 225 }
Bobty 23:fd5a5a9f30bc 226
Bobty 23:fd5a5a9f30bc 227 #gasadjust,
Bobty 23:fd5a5a9f30bc 228 #setgasnewval {
Bobty 23:fd5a5a9f30bc 229 text-align: center;
Bobty 23:fd5a5a9f30bc 230 padding: 10px;
Bobty 23:fd5a5a9f30bc 231 border: 10px;
Bobty 23:fd5a5a9f30bc 232 margin: 5%;
Bobty 23:fd5a5a9f30bc 233 width: 90%;
Bobty 23:fd5a5a9f30bc 234 background-color: grey;
Bobty 23:fd5a5a9f30bc 235 color: White;
Bobty 23:fd5a5a9f30bc 236 }
Bobty 23:fd5a5a9f30bc 237
Bobty 23:fd5a5a9f30bc 238 .label {
Bobty 23:fd5a5a9f30bc 239 color: grey;
Bobty 23:fd5a5a9f30bc 240 margin: 0.6em 0 0.6em 0;
Bobty 23:fd5a5a9f30bc 241 }
Bobty 23:fd5a5a9f30bc 242
Bobty 23:fd5a5a9f30bc 243 .value {
Bobty 23:fd5a5a9f30bc 244 font-size: 110%;
Bobty 23:fd5a5a9f30bc 245 font-weight: bold;
Bobty 23:fd5a5a9f30bc 246 color: green;
Bobty 23:fd5a5a9f30bc 247 margin: 0.6em 0 0.6em 0;
Bobty 23:fd5a5a9f30bc 248 }
Bobty 23:fd5a5a9f30bc 249
Bobty 23:fd5a5a9f30bc 250 .datacell {
Bobty 23:fd5a5a9f30bc 251 display: block;
Bobty 23:fd5a5a9f30bc 252 width: 116px;
Bobty 23:fd5a5a9f30bc 253 min-height: 180px;
Bobty 23:fd5a5a9f30bc 254 margin: 0;
Bobty 23:fd5a5a9f30bc 255 border: solid lightgrey 2px;
Bobty 23:fd5a5a9f30bc 256 float: left;
Bobty 23:fd5a5a9f30bc 257 }
Bobty 23:fd5a5a9f30bc 258
Bobty 23:fd5a5a9f30bc 259 #gasnewval {
Bobty 23:fd5a5a9f30bc 260 display: none;
Bobty 23:fd5a5a9f30bc 261 font-size: 120%;
Bobty 23:fd5a5a9f30bc 262 }
Bobty 23:fd5a5a9f30bc 263
Bobty 23:fd5a5a9f30bc 264 #setgasnewval {
Bobty 23:fd5a5a9f30bc 265 display: none;
Bobty 23:fd5a5a9f30bc 266 }
Bobty 23:fd5a5a9f30bc 267
Bobty 23:fd5a5a9f30bc 268 #logtext {
Bobty 23:fd5a5a9f30bc 269 display: none;
Bobty 23:fd5a5a9f30bc 270 margin: 0;
Bobty 23:fd5a5a9f30bc 271 border: solid lightgrey 2px;
Bobty 23:fd5a5a9f30bc 272 padding: 5px;
Bobty 23:fd5a5a9f30bc 273 width: 346px;
Bobty 23:fd5a5a9f30bc 274 height: 100%;
Bobty 23:fd5a5a9f30bc 275 min-height: 200px;
Bobty 23:fd5a5a9f30bc 276 }
Bobty 23:fd5a5a9f30bc 277 #fileuploadform {
Bobty 23:fd5a5a9f30bc 278 display: none;
Bobty 23:fd5a5a9f30bc 279 border: solid lightgrey 2px;
Bobty 23:fd5a5a9f30bc 280 padding: 5px;
Bobty 23:fd5a5a9f30bc 281 width: 346px;
Bobty 23:fd5a5a9f30bc 282 }
Bobty 23:fd5a5a9f30bc 283 #setupbtns {
Bobty 23:fd5a5a9f30bc 284 display: block;
Bobty 23:fd5a5a9f30bc 285 position: relative;
Bobty 23:fd5a5a9f30bc 286 top:-40px;
Bobty 23:fd5a5a9f30bc 287 left:270px;
Bobty 23:fd5a5a9f30bc 288 height: 0px;
Bobty 23:fd5a5a9f30bc 289 text-align: left;
Bobty 23:fd5a5a9f30bc 290 }
Bobty 23:fd5a5a9f30bc 291 .setupbtn {
Bobty 23:fd5a5a9f30bc 292 display: block;
Bobty 23:fd5a5a9f30bc 293 position: relative;
Bobty 23:fd5a5a9f30bc 294 padding-top: 3px;
Bobty 23:fd5a5a9f30bc 295 }
Bobty 23:fd5a5a9f30bc 296 .setupbtn button {
Bobty 23:fd5a5a9f30bc 297 width: 80px;
Bobty 23:fd5a5a9f30bc 298 }
Bobty 23:fd5a5a9f30bc 299 </style>
Bobty 23:fd5a5a9f30bc 300 </head>
Bobty 23:fd5a5a9f30bc 301
Bobty 23:fd5a5a9f30bc 302 <body onload="dataRefresh();">
Bobty 23:fd5a5a9f30bc 303 <div class="layout">
Bobty 23:fd5a5a9f30bc 304 <div class="pageheading">
Bobty 23:fd5a5a9f30bc 305 <div class="headingtxt">
Bobty 23:fd5a5a9f30bc 306 Gas Use Monitor
Bobty 23:fd5a5a9f30bc 307 </div>
Bobty 23:fd5a5a9f30bc 308 <div id="setupbtns">
Bobty 23:fd5a5a9f30bc 309 <div id="showlog" class="setupbtn"><button href="#" onclick="showLog();">Log</button></div>
Bobty 23:fd5a5a9f30bc 310 <div id="showupload" class="setupbtn"><button href="#" onclick="showUpload();">Upload</button></div>
Bobty 23:fd5a5a9f30bc 311 </div>
Bobty 23:fd5a5a9f30bc 312 </div>
Bobty 23:fd5a5a9f30bc 313 </div>
Bobty 23:fd5a5a9f30bc 314 <div class="layout">
Bobty 23:fd5a5a9f30bc 315 <div class="datacell">
Bobty 23:fd5a5a9f30bc 316 <p class="label">Update time</p>
Bobty 23:fd5a5a9f30bc 317 <p class="value" id="lastUpdateTime"></p>
Bobty 23:fd5a5a9f30bc 318 <p class="label">Gas Count</p>
Bobty 23:fd5a5a9f30bc 319 <p class="value" id="gasCountValue"></p>
Bobty 23:fd5a5a9f30bc 320 <button id="gasadjust" href="#" onclick="dispGasNewVal();">Change</button>
Bobty 23:fd5a5a9f30bc 321 <input id="gasnewval" type="text" name="newGasCountValue" />
Bobty 23:fd5a5a9f30bc 322 <button id="setgasnewval" type="button" href="#" onclick="setGasNewVal();">Set New Value</button>
Bobty 23:fd5a5a9f30bc 323 </div>
Bobty 23:fd5a5a9f30bc 324 <div class="datacell" id="tempValues">
Bobty 23:fd5a5a9f30bc 325 </div>
Bobty 23:fd5a5a9f30bc 326 <div class="datacell" id="pumpValues">
Bobty 23:fd5a5a9f30bc 327 </div>
Bobty 23:fd5a5a9f30bc 328 </div>
Bobty 23:fd5a5a9f30bc 329 <div class="layout">
Bobty 23:fd5a5a9f30bc 330 <textarea id="logtext">
Bobty 23:fd5a5a9f30bc 331 </textarea>
Bobty 23:fd5a5a9f30bc 332 </div>
Bobty 23:fd5a5a9f30bc 333 <div class="layout" id="fileuploadform">
Bobty 23:fd5a5a9f30bc 334 <form enctype="multipart/form-data">
Bobty 23:fd5a5a9f30bc 335 <input name="file" type="file" />
Bobty 23:fd5a5a9f30bc 336 <input type="button" value="Upload" id="UploadNow" />
Bobty 23:fd5a5a9f30bc 337 </form>
Bobty 23:fd5a5a9f30bc 338 <progress></progress>
Bobty 23:fd5a5a9f30bc 339 </div>
Bobty 23:fd5a5a9f30bc 340 </body>
Bobty 23:fd5a5a9f30bc 341
Bobty 23:fd5a5a9f30bc 342 </html>