function startClock() { xsecond -= 1; if (xsecond <= 1) reload(); timerID = setTimeout("startClock()", 1000); } function reload() { xsecond = jsecond; $.getJSON('data/2f49b57dd70591c2c4.php?station='+jstation, function(data) { if (data.timestamp > lstimestamp) { lstimestamp = data.timestamp; data_pkt = data; var now = Math.floor(new Date() / 1000); if (now > Math.floor(data.timestamp) + 120) { $('#status').css('color', '#8f1010') $('#status').html('Dati non aggiornati'); } else { $('#status').css('color', '#29a525') $('#status').html('Dati aggiornati'); } if ((now + 86400) < Math.floor(data.timestamp)) { $('#status').css('color', '#cfd837') $('#status').html('Data Warning'); } var a = new Date(data.timestamp * 1000); var months = ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']; var year = a.getFullYear(); var month = months[a.getMonth()]; var date = a.getDate(); var hour = a.getHours(); if (hour < 10) hour = "0" + hour; var min = a.getMinutes(); if (min < 10) min = "0" + min; var sec = a.getSeconds(); if (sec < 10) sec = "0" + sec; currtimes = 'Alle ' + hour + ':' + min + ':' + sec + ' del ' + date + ' ' + month + ' ' + year; $('#time').html(currtimes); dirwind= Math.floor((parseInt(data.bearing)+11.24)/22.5); switch(dirwind) { case 0: labels="N"; break; case 1: labels="NNE"; break; case 2: labels="NE"; break; case 3: labels="ENE"; break; case 4: labels="E"; break; case 5: labels="ESE"; break; case 6: labels="SE"; break; case 7: labels="SSE"; break; case 8: labels="S"; break; case 9: labels="SSW"; break; case 10: labels="SW"; break; case 11: labels="WSW"; break; case 12: labels="W"; break; case 13: labels="WNW"; break; case 14: labels="NW"; break; case 15: labels="NNW"; break; case 16: labels="N"; break; } switch(Math.floor((parseInt(data.bearingTM)+11.24)/22.5)) { case 0: hilabels="N"; break; case 1: hilabels="NNE"; break; case 2: hilabels="NE"; break; case 3: hilabels="ENE"; break; case 4: hilabels="E"; break; case 5: hilabels="ESE"; break; case 6: hilabels="SE"; break; case 7: hilabels="SSE"; break; case 8: hilabels="S"; break; case 9: hilabels="SSW"; break; case 10: hilabels="SW"; break; case 11: hilabels="WSW"; break; case 12: hilabels="W"; break; case 13: hilabels="WNW"; break; case 14: hilabels="NW"; break; case 15: hilabels="NNW"; break; case 16: hilabels="N"; break; } $("#pkt0").html(currtimes); if(data.temp != lstemp){$("#pkt1").fadeOut(10,function(){$(this).html(data.temp).fadeIn(1000)});lstemp = data.temp;} $("#pkt2").html(data.tempTH+' @'+data.TtempTH); $("#pkt3").html(data.tempTL+' @'+data.TtempTL); if (data.temptrend>=0) data.temptrend = '+'+data.temptrend;$("#pkt4").html(data.temptrend); if(data.hum != lshum){$("#pkt5").fadeOut(10,function(){$(this).html(data.hum).fadeIn(1000)});lshum = data.hum;} $("#pkt6").html(data.humTH+'% @'+data.ThumTH); $("#pkt7").html(data.humTL+'% @'+data.ThumTL); if(dirwind != lsdirwind){$("#pkt8").fadeOut(10,function(){$(this).attr('src','icon/'+dirwind+'.png?E4pf4f5TJw').fadeIn(1000)});lsdirwind = dirwind;} if(data.wspeed != lswind){$("#pkt9").fadeOut(10,function(){$(this).html(data.wspeed).fadeIn(1000)});lswind = data.wspeed;} $("#pkt10").html(data.bearing); $("#pkt11").html(labels); $("#pkt12").html(data.wgustTM+' km/h '+hilabels+' @'+data.TwgustTM); if(data.press != lspress){$("#pkt13").fadeOut(10,function(){$(this).html(data.press).fadeIn(1000)});lspress = data.press;} if (data.presstrendval >= -0.2 && data.presstrendval <= 0.2) $("#pkt13b").attr('src','css/images/press_staz.png'); if (data.presstrendval > 0.2) $("#pkt13b").attr('src','css/images/press_up.png'); if (data.presstrendval < -0.2) $("#pkt13b").attr('src','css/images/press_down.png'); $("#pkt14").html(data.pressTH+' @'+data.TpressTH); $("#pkt15").html(data.pressTL+' @'+data.TpressTL); if(data.rfall != lsrfall){$("#pkt16").fadeOut(10,function(){$(this).html(data.rfall).fadeIn(1000)});lsrfall = data.rfall;} $("#pkt17").html('RR '+data.rrate+' mm/h'); $("#pkt18").html(data.rrateTM+' @'+data.TrrateTM); if(data.SolarRad>2000){$("#pkt19").html('no sensor');}else{$("#pkt19").html(data.SolarRad+' W/m²');} if(data.UV<0) data.UV="no sensor";$("#pkt20").html(data.UV); $("#pkt21").html(data.dew); $("#pkt22").html(data.wchill); $("#pkt23").html(data.intemp); $("#pkt24").html(data.inhum); $("#pkt25").html(data.apptemp); $("#pkt26").html(data.heatindex); $("#pkt27").html(data.humidex); } }) } function charthome() { var yTitles = { color : "#000000", fontWeight : "bold", fontSize : "10px" }; var yLabels = { color : "#4682B4", fontWeight : "bold", fontSize : "9px" }; var yLabelsBaro = { color : "#228B22", fontWeight : "bold", fontSize : "9px" }; var yLabelsTemp = { color : "#000000", fontWeight : "bold", fontSize : "9px" }; var yLabelsWind = { color : "#228B22", fontWeight : "bold", fontSize : "9px" }; var parameter = ""; var one_Options = []; one_Counter = 0; one_names = ['Temperatura', 'Vento']; var two_Options = []; two_Counter = 0; two_names = ['Pressione', 'Umidità']; var data1 = []; var ticktemp, tickwind; var maxtemp, mintemp, minwind, maxwind; var ttemp = -100, mtemp = 100, twind = 0; $.each(one_names, function(i, name) { if (name == "Temperatura") { parameter = "outTemp" } if (name == "Vento") { parameter = "windSpeed" } $.getJSON('data/76ab68f835f5da529.php?station=' + jstation + '¶mtr=' + parameter + '&callback=?', function(data) { one_Options[i] = { name : name, data : data, yAxis : i, negativeColor : "#4572EE" }; if (i == 0) { for ( y = 0; y < data.length; y++) { if (data[y][1] > ttemp) ttemp = data[y][1]; if (data[y][1] < mtemp) mtemp = data[y][1]; } ttemp = (Math.ceil(ttemp)); mtemp = (Math.floor(mtemp)); ticktemp = Math.ceil((ttemp - mtemp) / 4); maxtemp = Math.ceil((ttemp + ticktemp) / ticktemp) * ticktemp; mintemp = maxtemp - (9 * ticktemp); } if (i == 1) { for ( y = 0; y < data.length; y++) { if (twind < data[y][1]) twind = data[y][1]; } twind = (Math.ceil(twind)); mwind = (Math.floor(0)); tickwind = Math.ceil((twind - mwind) / 10); maxwind = Math.ceil((twind + tickwind) / tickwind) * tickwind; minwind = 0; } one_Counter += 1; if (one_Counter === one_names.length) { one_Chart(); } }); }); function one_Chart() { var one_Chart = new Highcharts.Chart({ chart : { spacingTop : 10, spacingBottom : 10, height : 240, renderTo : 'one_', defaultSeriesType : "spline", backgroundColor : "rgba(255, 255, 255, 0.4)", plotBackgroundColor : { linearGradient : [0, 0, 0, 150], stops : [[0, "#ddd"], [1, "rgba(255, 255, 255, 0.4)"]] }, plotBorderColor : "#88BCCE", plotBorderWidth : 0.5, style : { fontFamily : '"Roboto",sans-serif', fontSize : '11px' } }, colors : ['#EE4643', '#228B22'], credits : { enabled : false }, title : { text : null }, legend : { borderWidth : 0, align : 'center', verticalAlign : 'top', rtl : true }, yAxis : [{ lineWidth : 2, tickPixelInterval : 40, minTickInterval : 6, tickInterval : ticktemp, max : maxtemp, min : mintemp, offset : 0, title : { text : "°C", rotation : 0, align : "high", offset : 0, x : -10, y : -20, style : yTitles }, labels : { align : "right", x : -7, y : -5, formatter : function() { if (this.value < mtemp - ticktemp || this.value > ttemp + ticktemp) { return ""; } else { if (this.value < 0) { return '' + this.value + ''; } else { return '' + this.value + ''; } } }, style : yLabels } }, { gridLineWidth : 1, tickPixelInterval : 40, minTickInterval : 6, tickInterval : tickwind, max : maxwind, min : minwind, offset : 0, title : { text : "km/h", rotation : 0, align : "high", offset : 0, x : 30, y : -20, style : yTitles }, labels : { align : "left", x : 5, y : -5, formatter : function() { if (this.value < 0 || this.value > twind) { return ""; } else { return this.value; } }, style : yLabelsWind } }], xAxis : { type : 'datetime' }, tooltip : { backgroundColor : "#A2D959", borderColor : "#fff", borderRadius : 3, borderWidth : 0, shared : true, crosshairs : { width : 0.5, color : "#666" }, style : { lineHeight : "16px", fontSize : "10px", color : "#000" }, formatter : function() { var s = Highcharts.dateFormat('%A %d %b %H:%M', this.x); $.each(this.points, function(i, point) { var unit = { "Vento": " km/h", "Temperatura": "°C" }[point.series.name]; if (point.series.name != " ") { s += "
" + point.series.name + ": " + point.y + unit + ""; } }); return s; } }, plotOptions : { series : { marker : { radius : 0, states : { hover : { enabled : true } } } }, spline : { lineWidth : 1.5, shadow : false, cursor : "pointer", states : { hover : { enabled : false } } } }, series : one_Options }); l = 0; $.each(two_names, function(l, name) { if (name == "Pressione") parameter = "barometer"; if (name == "Umidità") parameter = "outHumidity"; $.getJSON('data/76ab68f835f5da529.php?station=' + jstation + '¶mtr=' + parameter + '&callback=?', function(data) { two_Options[l] = { name : name, data : data, yAxis : l }; // As we're loading the data asynchronously, we don't know what order it will arrive. So // we keep a counter and create the chart when all the data is loaded. two_Counter += 1; if (two_Counter === two_names.length) { two_Chart(); } }); }); } function two_Chart() { var two_Chart = new Highcharts.Chart({ chart : { spacingTop : 10, spacingBottom : 10, height : 240, renderTo : 'two_', defaultSeriesType : "spline", backgroundColor : "rgba(255, 255, 255, 0.4)", plotBackgroundColor : { linearGradient : [0, 0, 0, 150], stops : [[0, "#ddd"], [1, "rgba(255, 255, 255, 0.4)"]] }, plotBorderColor : "#88BCCE", plotBorderWidth : 0.5, style : { fontFamily : '"Roboto",sans-serif', fontSize : '11px' } }, colors : ['#228B22', '#4682B4'], credits : { enabled : false }, title : { text : '' }, legend : { borderWidth : 0, align : 'center', verticalAlign : 'top', rtl : true }, yAxis : [{ lineWidth : 2, tickPixelInterval : 40, offset : 0, tickInterval : 1, title : { text : "hPa", rotation : 0, align : "high", offset : 0, x : -10, y : -20, style : yTitles }, labels : { align : "right", x : -7, y : -5, style : yLabelsBaro } }, { gridLineWidth : 1, tickPixelInterval : 40, tickInterval : 20, min : 0, max : 100, offset : 0, title : { text : "%", rotation : 0, align : "high", offset : 0, x : 15, y : -20, style : yTitles }, labels : { align : "left", x : 5, y : -5, style : yLabels } }], xAxis : { type : 'datetime' }, tooltip : { backgroundColor : "#A2D959", borderColor : "#fff", borderRadius : 3, borderWidth : 0, shared : true, crosshairs : { width : 0.5, color : "#666" }, style : { lineHeight : "16px", fontSize : "10px", color : "#000" }, formatter : function() { var s = Highcharts.dateFormat('%A %d %b %H:%M', this.x); $.each(this.points, function(i, point) { var unit = { "Umidità": " %", "Pressione": " hPa" }[point.series.name]; if (point.series.name != " ") { s += "
" + point.series.name + ": " + point.y + unit + ""; } }); return s; } }, plotOptions : { series : { marker : { radius : 0, states : { hover : { enabled : true } } } }, spline : { lineWidth : 1.5, shadow : false, cursor : "pointer", states : { hover : { enabled : false } } } }, series : two_Options }); } } function previhome(query) { $.getJSON("https://api.open-meteo.com/v1/gfs?latitude=52.52&longitude=13.41&hourly=temperature_2m,precipitation_probability,rain,cloudcover", function(data) { chartTempData = new Highcharts.Chart({ chart : { spacingTop : 10, spacingBottom : 10, height : 320, renderTo : "containerTemp", defaultSeriesType : "spline", backgroundColor : "rgba(255, 255, 255, 0.4)", plotBackgroundColor : { linearGradient : [0, 0, 0, 150], stops : [[0, "#ddd"], [1, "rgba(255, 255, 255, 0.4)"]] }, plotBorderColor : "#88BCCE", plotBorderWidth : 0.5, style : { fontFamily : '"Roboto",sans-serif', fontSize : '11px' } }, title : { text : "" }, xAxis : { type : 'datetime' }, lang : { thousandsSep : "" }, credits : { enabled : false }, plotOptions : { series : { marker : { radius : 0, states : { hover : { enabled : true } } } }, spline : { lineWidth : 1.5, shadow : false, cursor : "pointer", states : { hover : { enabled : false } } }, column : { pointWidth : 15 }, areaspline : { lineWidth : 1.5, shadow : false, states : { hover : { enabled : false } } } }, legend : { borderWidth : 0, align : 'center', verticalAlign : 'top', rtl : true }, exporting : { enabled : false }, tooltip : { backgroundColor : "#A2D959", borderColor : "#fff", borderRadius : 3, borderWidth : 0, shared : true, crosshairs : { width : 0.5, color : "#666" }, style : { lineHeight : "16px", fontSize : "10px", color : "#000" }, formatter : function() { var s = Highcharts.dateFormat('%A %d %b %H:%M', this.x); $.each(this.points, function(i, point) { var unit = { "Precipitazioni": " mm", "Vento": " kmh", "Temperatura": "°C", "Pressione": " hPa" }[point.series.name]; if (point.series.name != " ") { s += "
" + point.series.name + ": " + point.y + unit + ""; } }); // eo each return s; } }, yAxis : [{ tickPixelInterval : 40, minTickInterval : 6, tickInterval : ticktemp, max : maxtemp, min : mintemp, lineWidth : 2, gridLineWidth : 1, offset : 0, title : { text : "°C", rotation : 0, align : "high", offset : 0, x : -5, y : 0, style : yTitles }, labels : { x : -5, y : -3, formatter : function() { if (this.value < mtemp - ticktemp || this.value > ttemp + ticktemp) { return ""; } else { if (this.value < 0) { return '' + this.value + ''; } else { return '' + this.value + ''; } } }, style : yLabels } }, { tickPixelInterval : 40, minTickInterval : 6, tickInterval : tickrain, max : maxrain, min : minrain, offset : 0, title : { text : "mm", rotation : 0, align : "low", offset : 0, x : 5, y : 15, style : yTitles }, labels : { align : "left", x : 5, y : -3, formatter : function() { if (this.value < 0 || this.value > train) { return ""; } else { return this.value; } }, style : yLabels } }, { tickPixelInterval : 40, minTickInterval : 6, tickInterval : tickwind, max : maxwind, min : minwind, opposite : true, offset : 0, title : { text : "kmh", rotation : 0, align : "low", offset : 0, x : -5, y : 15, style : yTitles }, labels : { align : "right", x : -5, y : -3, formatter : function() { if (this.value < 0 || this.value > twind) { return ""; } else { return this.value; } }, style : yLabelsWind } }, { tickPixelInterval : 40, minTickInterval : 6, tickInterval : tickbaro, max : maxbaro, min : minbaro, lineWidth : 2, opposite : true, offset : 0, title : { text : "hPa", rotation : 0, align : "high", offset : 0, x : 5, y : 0, style : yTitles }, labels : { align : "left", x : 5, y : -3, formatter : function() { if (this.value < mbaro - tickbaro || this.value > tbaro + tickbaro) { return ""; } else { return this.value; } }, style : yLabelsBaro } }], series : [{ name : "Temperatura", data : temps, color : "#EE4643", threshold : 0, negativeColor : "#4572EE" }, { name : "Precipitazioni", data : precs, color : "#4572A7", type : "column", yAxis : 1, }, { name : "Pressione", data : baros, color : "#9ACD32", yAxis : 3 }, { name : "Vento", data : wsps, color : "#1485DC", yAxis : 2, type : "scatter", marker : { radius : 2, symbol : "circle" } }, { name : " ", data : icos, color : "#006400", type : "scatter", events : { legendItemClick : false } }] }); }); }