This is what I ultimately came up with, in case anyone ever comes across this in the future... A quick way to frequently update individual table fields from realtime.txt. I went with two functions, one for each update cycle interval; the thought being to minimize GET requests to realtime.txt. I have it updating every 2 seconds for wind and rain rate (I'm actually not even sure how often CRT updates this value in realtime.txt), and 30 seconds for everything else. Just have to give the data tags unique IDs in the HTML and then reference them here in the getElementById methods. Then the output is a matter of parsing CRT realtime.txt. Not sure if any of this is poor form, but it seems to be working well.
Thanks again for the push in the right direction. // CRT field values: http://cumuluswiki.wxforum.net/a/Realtime.txt#List_of_fields_in_the_file function update_cycle1() { windcellobj = document.getElementById("rt_wind"); rainratecellobj = document.getElementById("rt_rainrate"); xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { rt = this.responseText.split(" "); if (rt[2]) { // Start Wind if (rt[6] != ("0.0")){ rtstr = rt[6].split(".")[0]+" "+rt[13]+" °"+rt[11]; } else { rtstr = rt[6].split(".")[0]+" "+rt[13]; } if ((parseInt(rt[6], 10) < 10)) { windcellobj.innerHTML = rtstr; } else if ((parseInt(rt[6], 10) >= 20)) { windcellobj.innerHTML = rtstr.fontcolor("red"); } else { windcellobj.innerHTML = rtstr.fontcolor("green"); } // End Wind rtstr = rt[8]+" "+rt[16]+"/hr"; rainratecellobj.innerHTML = rtstr; } } }; xhttp.open("GET", "realtime.txt", true); xhttp.send(); } function update_cycle2() { outtempcellobj = document.getElementById("rt_outtemp"); dewpointcellobj = document.getElementById("rt_dewpoint"); humiditycellobj = document.getElementById("rt_humidity"); barocellobj = document.getElementById("rt_baro"); windruncellobj = document.getElementById("rt_windrun"); heatindexcellobj = document.getElementById("rt_heatindex"); windchillcellobj = document.getElementById("rt_windchill"); raintodaycellobj = document.getElementById("rt_raintoday"); intempcellobj = document.getElementById("rt_intemp"); xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { rt = this.responseText.split(" "); if (rt[2]) { rtstr = rt[2]+" °"+rt[14]; outtempcellobj.innerHTML = rtstr; rtstr = rt[4]+" °"+rt[14]; dewpointcellobj.innerHTML = rtstr; rtstr = rt[3]+"%"; humiditycellobj.innerHTML = rtstr; rtstr = rt[10]+" "+rt[15]; barocellobj.innerHTML = rtstr; rtstr = rt[17]+" mile"; windruncellobj.innerHTML = rtstr; rtstr = rt[41]+" °"+rt[14]; heatindexcellobj.innerHTML = rtstr; rtstr = rt[24]+" °"+rt[14]; windchillcellobj.innerHTML = rtstr; rtstr = rt[9]+" "+rt[16]; raintodaycellobj.innerHTML = rtstr; rtstr = rt[22]+" °"+rt[14]; intempcellobj.innerHTML = rtstr; } } }; xhttp.open("GET", "realtime.txt", true); xhttp.send(); } // Run everything once, immediately. update_cycle1(); update_cycle2(); // Start update intervals. window.setInterval(function(){update_cycle1();}, 2000); window.setInterval(function(){update_cycle2();}, 30000); -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/6538aca9-0d4a-40d4-9349-9107a0881f29%40googlegroups.com.
