Re: Neerslag monitor script
Posted: Sat Dec 01, 2012 5:33 pm
Als het resultaat een plaatjes is kan dat gewoon
Domotica - Home Automation Forum
https://domoticaforum.eu/
Leuk idee alleen hoe ga je dan een event triggeren op bijvoorbeeld 15 of 45 minuten ?DJF3 wrote:Neerslagmonitor script: Like
Suggestie: Misschien 1 device met daarin 24 kleine 'bars' die aangeven of en hoeveel het gaat regenen?
Bijv: 24 html images naast elkaar, blauw-droog, rood=regen
Misschien gebruik makend van 10 differently sized rode bars, afhankelijk van de hoeveelheid neerslag
Dit geeft je een 'grafiekje' zonder system impact, installaties, programming, etc.
Code: Select all
[0,0.09,0.07,0.12,0.08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03]
Code: Select all
<?php
/*
lat: latitude
lon: longitue
*/
$lat = htmlspecialchars($_GET["lat"]);
$lon = htmlspecialchars($_GET["lon"]);
if (($lat == "") || ($lon == "")) {
exit;
}
$sub_req_rul = "http://gps.buienradar.nl/getrr.php?lat=" . $lat. "&lon=" . $lon;
$ch = curl_init();
curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, $sub_req_rul);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$result = array();
$rain = float;
$outputLines = explode("\r\n", $output, -1);
foreach($outputLines as $outputLine) {
$record = explode("|", $outputLine);
$rain = round(pow(10,((intval($record[0]) - 109)/32)),2);
array_push($result, $rain);
}
/* output in required format */
header('Content-type: application/json');
echo json_encode($result, JSON_NUMERIC_CHECK);
?>
Code: Select all
<html>
<head>
<title>Voorbeeld buienalarm grafiek</title>
<meta name='viewport' content='initial-scale=1, user-scalable=no, maximum-scale=1'>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
</head>
<body>
<div id="regenverwachting" style="width: 800px; height: 300px; margin: 0 auto"></div>
<script type="text/javascript">
$(function () {
var chart;
Highcharts.setOptions({
global : {
useUTC: false
}
});
$(document).ready(function() {
var options = {
chart: {
renderTo: 'regenverwachting',
zoomType: null,
alignTicks: false,
events: {
load: function() {
setInterval(function() {
reload();
}, 60 * 1000);
}
}
},
credits:{enabled:false},
exporting:{enabled:false},
title:{text:null},
tooltip: {
formatter: function() {
return Highcharts.dateFormat('%H:%M', this.x) +'<br/>' +
'<b>'+ this.y + '</b> mm/h<br/>';
}
},
legend:{enabled:false},
plotOptions:{
series:{
shadow:false,
marker:{
enabled:false
},
},
},
xAxis: {
type: 'datetime',
title:null,
lineWidth:0,
tickWidth:1,
},
yAxis:{
title:{text:'intensiteit (mm)'},
lineWidth:0,
tickWidth:0,
gridLineWidth:1,
min: 0,
showFirstLabel: false
},
series: [{
type: 'areaspline',
name: 'Intensiteit',
pointInterval: 300 * 1000,
pointStart: (new Date()).getTime(),
data: []
}
]
}
chart = new Highcharts.Chart(options);
reload(true);
});
function reload(isFirstLoad) {
$.getJSON('GetRainPrediction.php?lat=52.0000&lon=5.0000', function(resultJSON) {
chart.series[0].setData(resultJSON, true);
chart.redraw();
});
}
});
</script>
</body>
</html>
Code: Select all
Public Sub getrain(ByVal parms As Object)
Dim a As String = hs.GetURL("gps.buienradar.nl", "/getrr.php?lat=52.190062&lon=5.431838", False, 80, True)
Dim b As Integer = 5
Dim arg() As String = {vbCrLf, vbLf}
Dim raintimepairs As String() = a.Split(arg, StringSplitOptions.None)
Dim datum As Date = Now.ToShortTimeString
End Sub