X-Git-Url: https://git.rvb.name/weathermon.git/blobdiff_plain/7edb3771717d15f7c36d8459fa12b3d6f76d7d9a..e32107a7fe79ce34f3bdf860410a6d5455efdca7:/openwrt-web/meteo/meteo.js?ds=inline diff --git a/openwrt-web/meteo/meteo.js b/openwrt-web/meteo/meteo.js new file mode 100644 index 0000000..f56bc2d --- /dev/null +++ b/openwrt-web/meteo/meteo.js @@ -0,0 +1,85 @@ +urlbase="/meteo/cgi?" + +currentState="" + +function RefreshPageState() { + + var req = new XMLHttpRequest(); + + req.onreadystatechange = function () { + + if (this.readyState != 4) return; + if (this.status == 200) { + + var returnedData = JSON.parse(this.responseText); + + var template = document.getElementById("template").innerHTML; + var value_color = document.getElementById("value").style.color; + + var html = ""; + + for (var sensor_id in returnedData) { + var timestamp = returnedData[sensor_id]["timestamp"]; + for (var sensor in returnedData[sensor_id]) { + if (sensor != "timestamp") { + for (var param in returnedData[sensor_id][sensor]) { + sensor_path = sensor_id+"."+sensor+"."+param; + value = returnedData[sensor_id][sensor][param]; + name = properties["names"][sensor_path]; + if (! name) { name = sensor_path; } + units = properties["units"][sensor_path]; + scale = properties["scale"][sensor_path]; + color = properties["colors"][sensor_path]; + if (scale) { + value = (scale[0] * value).toFixed(scale[1]); + } + if (! color) { + color = value_color; + } + var section = template.replace(/\$SENSOR_ID/g,sensor_id); + section = section.replace(/\$SENSOR/g,sensor); + section = section.replace(/\$PARAM/g,param); + section = section.replace(/\$NAME/g,name); + section = section.replace(/\$UNITS/g,units); + section = section.replace(/\$VALUE/g,value); + section = section.replace(/\$COLOR/g,color); + section = section.replace(/\$TIMESTAMP/g,timestamp); + html = html + section; + } + } + } + } + + document.getElementById("meteo").innerHTML = html; + + setTimeout(RefreshPageState,5000) + } else { + setTimeout(RefreshPageState,15000) + } + }; + + req.open("GET", urlbase+"state", true); + req.send(); + +} + +function GetProperties() { + var req = new XMLHttpRequest(); + + req.onreadystatechange = function () { + if (this.readyState != 4) return; + if (this.status != 200) { + setTimeout(GetProperties,30000); + return; + } + properties = JSON.parse(this.responseText); + RefreshPageState(); + }; + + req.open("GET", urlbase+"props", true); + req.send(); + +} + + +setTimeout(GetProperties,100)