????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.3 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/appsrv.astacus.se/shellyctr/ |
Upload File : |
<?php
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
$Username = "carl.hoffstedt@astacus.se";
$mysqli = new mysqli("www.astacus.se", "carlhoffstedt", "Astacus2020!", "ShellyCTR");
$sql = "SELECT * FROM tblNordpool order by endTime desc LIMIT 1";
$result = $mysqli->query($sql);
while($obj = $result->fetch_object()){
$latest_date = substr($obj->endTime,0,10);
}
$percent_off = $_GET['off_procent'];
$percent_on = $_GET['on_procent'];
$area = $_GET['area'];
$day = $_GET['day'];
$sql = "SELECT * FROM tblPriceControl, tblUsers WHERE tblPriceControl.Username = tblUsers.Username and tblUsers.Username = '".$Username."'";
$result = $mysqli->query($sql);
while($obj = $result->fetch_object()){
$percent_off = $obj->Percent_off;
$percent_on = $obj->Percent_on;
$area = $obj->Area;
$lat = $obj->lat;
$lon = $obj->lon;
$Controltype = $obj->Controltype;
}
if($percent_on == "1"){
$add_on = 1;
}
if($percent_off == "1"){
$add_off = 1;
}
if($day == ""){
$day = 0;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Namnlöst dokument</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="js/package/dist/utils.js"></script>
<style>
table, th, td {
font-family: 'Gill Sans', 'Gill Sans MT', 'Myriad Pro', 'DejaVu Sans Condensed', 'Helvetica', 'Arial', 'sans-serif';
font-size: 8px;
border-collapse: collapse;
}
</style>
<script>
function send(){
var area = document.getElementById("area").value;
var off_procent = document.getElementById("off_procent").value;
var on_procent = document.getElementById("on_procent").value;
location.href = "?area="+area+"&off_procent="+off_procent+"&on_procent="+on_procent+"&day=<?php echo($day)?>";
}
function show_tomorrow(){
let new_data = confirm("Det finns ny data för i morgon, vill du visa den istället?");
var area = '<?php echo($area);?>';
var off_procent = '<?php echo($percent_off);?>';
var on_procent = '<?php echo($percent_on);?>';
if (new_data == true) {
location.href = "?area="+area+"&off_procent="+off_procent+"&on_procent="+on_procent+"&day=1";
}else{
location.href = "?area="+area+"&off_procent="+off_procent+"&on_procent="+on_procent+"&day=0";
}
}
</script>
</head>
<body>
<center>
<select name="area" id="area">
<option value="">-- Välj elområde --</option>
<option value="SE1" <?php if($_GET['area'] == "SE1"){echo(" selected");}?>>SE1</option>
<option value="SE2" <?php if($_GET['area'] == "SE2"){echo(" selected");}?>>SE2</option>
<option value="SE3" <?php if($_GET['area'] == "SE3"){echo(" selected");}?>>SE3</option>
<option value="SE4" <?php if($_GET['area'] == "SE4"){echo(" selected");}?>>SE4</option>
</select>
<select name="off_procent" id="off_procent">
<option value="0">-- OFF % --</option>
<option value="0"<?php if($_GET['off_procent'] == "0"){echo(" selected");}?>>0</option>
<option value="0.1"<?php if($_GET['off_procent'] == "0.1"){echo(" selected");}?>>10</option>
<option value="0.2"<?php if($_GET['off_procent'] == "0.2"){echo(" selected");}?>>20</option>
<option value="0.3"<?php if($_GET['off_procent'] == "0.3"){echo(" selected");}?>>30</option>
<option value="0.4"<?php if($_GET['off_procent'] == "0.4"){echo(" selected");}?>>40</option>
<option value="0.5"<?php if($_GET['off_procent'] == "0.5"){echo(" selected");}?>>50</option>
<option value="0.6"<?php if($_GET['off_procent'] == "0.6"){echo(" selected");}?>>60</option>
<option value="0.7"<?php if($_GET['off_procent'] == "0.7"){echo(" selected");}?>>70</option>
<option value="0.8"<?php if($_GET['off_procent'] == "0.8"){echo(" selected");}?>>80</option>
<option value="0.9"<?php if($_GET['off_procent'] == "0.9"){echo(" selected");}?>>90</option>
<option value="1.0"<?php if($_GET['off_procent'] == "1"){echo(" selected");}?>>100</option>
</select>
<select name="on_procent" id="on_procent">
<option value="0">-- ON % --</option>
<option value="0"<?php if($_GET['on_procent'] == "0"){echo(" selected");}?>>0</option>
<option value="0.1"<?php if($_GET['on_procent'] == "0.1"){echo(" selected");}?>>10</option>
<option value="0.2"<?php if($_GET['on_procent'] == "0.2"){echo(" selected");}?>>20</option>
<option value="0.3"<?php if($_GET['on_procent'] == "0.3"){echo(" selected");}?>>30</option>
<option value="0.4"<?php if($_GET['on_procent'] == "0.4"){echo(" selected");}?>>40</option>
<option value="0.5"<?php if($_GET['on_procent'] == "0.5"){echo(" selected");}?>>50</option>
<option value="0.6"<?php if($_GET['on_procent'] == "0.6"){echo(" selected");}?>>60</option>
<option value="0.7"<?php if($_GET['on_procent'] == "0.7"){echo(" selected");}?>>70</option>
<option value="0.8"<?php if($_GET['on_procent'] == "0.8"){echo(" selected");}?>>80</option>
<option value="0.9"<?php if($_GET['on_procent'] == "0.9"){echo(" selected");}?>>90</option>
<option value="1.0"<?php if($_GET['on_procent'] == "1"){echo(" selected");}?>>100</option>
</select>
<input type="submit" onClick="send();">
</center>
<p>
<canvas id="myChart" width="100%" ></canvas>
<br>
<canvas id="myChart2" width="100%" ></canvas>
<?php
$from = date("Y-m-d",strtotime("$day days"))." 00:00:00";
$to = date("Y-m-d",strtotime("$day days"))." 24:00:00";
$sql = "SELECT DISTINCT(endTime) FROM tblNordpool WHERE endTime >= '".$from."' and endTime <= '".$to."' order by endTime";
$result = $mysqli->query($sql);
$json_labels_t = "[";
$labels_arr = array();
$tariff_arr = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->endTime;
$json_labels_t = $json_labels_t . "'". $timestamp ."',";
$labels_arr[] = $timestamp;
$month = date("n",strtotime($timestamp)); //1-12
$hour = date("G",strtotime($timestamp)); // 0-24
if($month >= 11 || $month <= 3){
if($hour >= 6 && $hour < 22){
$tariff = 0.536;
}else{
$tariff = 0.20;
}
}else{
$tariff = 0.20;
}
$tariff_arr[] = $tariff;
}
$json_labels_t = $json_labels_t . "'". str_replace("23:00:00","24:00:00",$timestamp) ."',";
$json_labels_t = $json_labels_t . "]";
$moms = 1.25;
$sql = "SELECT * FROM tblNordpool WHERE endTime >= '".$from."' and endTime <= '".$to."' and area = 'SE1' order by endTime";
$result = $mysqli->query($sql);
$arr1 = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->endTime;
$value = ($obj->value/1000 + $tariff)*$moms;
$arr1[] = array($timestamp,$value);
}
$arr1[] = array($timestamp,$value);
$sql = "SELECT * FROM tblNordpool WHERE endTime >= '".$from."' and endTime <= '".$to."' and area = 'SE2' order by endTime";
$result = $mysqli->query($sql);
$arr2 = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->endTime;
$value = ($obj->value/1000 + $tariff)*$moms;
$arr2[] = array($timestamp,$value);
}
$arr2[] = array($timestamp,$value);
$sql = "SELECT * FROM tblNordpool WHERE endTime >= '".$from."' and endTime <= '".$to."' and area = 'SE3' order by endTime";
$result = $mysqli->query($sql);
$arr3 = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->endTime;
$value = ($obj->value/1000 + $tariff)*$moms;
$arr3[] = array($timestamp,$value);
}
$arr3[] = array($timestamp,$value);
$sql = "SELECT * FROM tblNordpool WHERE endTime >= '".$from."' and endTime <= '".$to."' and area = 'SE4' order by endTime";
$result = $mysqli->query($sql);
$arr4 = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->endTime;
$value = ($obj->value/1000 + $tariff)*$moms;
$arr4[] = array($timestamp,$value);
}
$arr4[] = array($timestamp,$value);
$json_data_t1 = "data : [";
$json_data_t2 = "data : [";
$json_data_t3 = "data : [";
$json_data_t4 = "data : [";
foreach ($labels_arr as &$value) {
$f1 = false;
foreach ($arr1 as &$v1) {
if($v1[0] == $value){
$json_data_t1 = $json_data_t1 . $v1[1].",";
$f1 = true;
}
}
if($f1 == false){
$json_data_t1 = $json_data_t1 .",";
}
$f1 = false;
foreach ($arr2 as &$v1) {
if($v1[0] == $value){
$json_data_t2 = $json_data_t2 . $v1[1].",";
$f1 = true;
}
}
if($f1 == false){
$json_data_t2 = $json_data_t2 .",";
}
$f1 = false;
foreach ($arr3 as &$v1) {
if($v1[0] == $value){
$json_data_t3 = $json_data_t3 . $v1[1].",";
$f1 = true;
}
}
if($f1 == false){
$json_data_t3 = $json_data_t3 .",";
}
$f1 = false;
foreach ($arr4 as &$v1) {
if($v1[0] == $value){
$json_data_t4 = $json_data_t4 . $v1[1].",";
$f1 = true;
}
}
if($f1 == false){
$json_data_t4 = $json_data_t4 .",";
}
}
$json_data_t1 = $json_data_t1 . "]";
$json_data_t2 = $json_data_t2 . "]";
$json_data_t3 = $json_data_t3 . "]";
$json_data_t4 = $json_data_t4 . "]";
////////////
if($area == ""){
$area = 3;
}
if($percent_off == ""){
$percent_off = 0.2;
}
if($percent_on == ""){
$percent_on = 0.2;
}
if($percent_on == "1"){
$add_on = 1;
}
if($percent_off == "1"){
$add_off = 1;
}
$nbr_hrs_off = round((24*$percent_off))+$add_off;
$nbr_hrs_on = round((24*$percent_on))+$add_on;
$arr_use = $arr3;
if($area == 1){
$arr_use = $arr1;
$json_data_t1 = $json_data_t1;
}else if($area == 2){
$arr_use = $arr2;
$json_data_t1 = $json_data_t2;
}else if($area == 3){
$arr_use = $arr3;
$json_data_t1 = $json_data_t3;
}else if($area == 4){
$arr_use = $arr4;
$json_data_t1 = $json_data_t4;
}
$sum = 0;
foreach ($arr_use as &$v1) {
$sum +=$v1[1];
}
$average = $sum/count($arr_use);
$arr_off = array();
$arr_on = array();
foreach ($arr_use as &$v1) {
$arr_off[] = $v1[1];
$arr_on[] = $v1[1];
}
rsort($arr_off);
$largest = array_slice($arr_off, 0, $nbr_hrs_off);
sort($arr_on);
$smallest = array_slice($arr_on, 0, $nbr_hrs_on);
$onoff_arr5 = array();
$json_data_t5 = "data : [";
$f1 = false;
foreach ($arr_use as &$v1) {
if(in_array($v1[1],$largest)){
$json_data_t5 = $json_data_t5 . "'OFF',";
$f1 = true;
$onoff_arr5[] = 0;
}else{
$json_data_t5 = $json_data_t5 . "'ON',";
$onoff_arr5[] = 1;
}
}
if($f1 == false){
$json_data_t5 = $json_data_t5 .",";
}
$json_data_t5 = $json_data_t5 . "]";
$onoff_arr6 = array();
$json_data_t6 = "data : [";
$f1 = false;
foreach ($arr_use as &$v1) {
if(in_array($v1[1],$smallest)){
$json_data_t6 = $json_data_t6 . "'ON',";
$f1 = true;
$onoff_arr6[] = 1;
}else{
$json_data_t6 = $json_data_t6 . "'OFF',";
$onoff_arr6[] = 0;
}
}
if($f1 == false){
$json_data_t6 = $json_data_t6 .",";
}
$json_data_t6 = $json_data_t6 . "]";
$json_data_t7 = "data : [";
$f1 = false;
foreach ($arr_use as &$v1) {
$json_data_t7 = $json_data_t7 . $average.",";
}
if($f1 == false){
$json_data_t7 = $json_data_t7 .",";
}
$json_data_t7 = $json_data_t7 . "]";
$onoff_arr8 = array();
$json_data_t8 = "data : [";
$f1 = false;
foreach ($arr_use as &$v1) {
if($v1[1] < $average){
$json_data_t8 = $json_data_t8 . "'ON',";
$f1 = true;
$onoff_arr8[] = 1;
}else{
$json_data_t8 = $json_data_t8 . "'OFF',";
$onoff_arr8[] = 0;
}
}
if($f1 == false){
$json_data_t8 = $json_data_t8 .",";
}
$json_data_t8 = $json_data_t8 . "]";
?>
<?php
if(date("Y-m-d") != $latest_date && $_GET['day'] == ""){
echo("<script> show_tomorrow(); </script>");
}
?>
<?php
$sql = "SELECT * FROM tblSMHI WHERE endTime >= '".$from."' and endTime <= '".$to."' and Username = '".$Username."' order by endTime";
$result = $mysqli->query($sql);
$json_labels_t2 = "[";
$json_data_ws = "data : [";
$json_data_t = "data : [";
$json_data_t_effective = "data : [";
$json_data_tcc_mean = "data : [";
$json_data_tcc_mean_array = array();
$json_data_t_effective_array = array();
while($obj = $result->fetch_object()){
$timestamp = $obj->startTime;
$json_labels_t2 = $json_labels_t2 . "'". $timestamp ."',";
$json_data_t = $json_data_t . $obj->t.",";
$json_data_ws = $json_data_ws . $obj->ws.",";
$json_data_t_effective = $json_data_t_effective . $obj->t_effective.",";
$json_data_t_effective_array[] = $obj->t_effective;
if($obj->tcc_mean >= 5){
$sol = "'OFF'";
$json_data_tcc_mean_array[] = 0;
}else{
$sol = "'ON'";
$json_data_tcc_mean_array[] = 1;
}
$json_data_tcc_mean = $json_data_tcc_mean . $sol.",";
}
$json_data_t = $json_data_t . "]";
$json_data_ws = $json_data_ws . "]";
$json_data_t_effective = $json_data_t_effective . "]";
$json_data_tcc_mean = $json_data_tcc_mean ."]";
$json_labels_t2 = $json_labels_t2 . "'". str_replace("23:00:00","24:00:00",$timestamp) ."',";
$json_labels_t2 = $json_labels_t2 . "]";
$onoff_arr = array();
if($Controltype == 1){
$onoff_arr = $onoff_arr5;
}else if($Controltype == 2){
$onoff_arr = $onoff_arr6;
}else if($Controltype == 3){
$onoff_arr = $onoff_arr8;
}
$json_data_t_effective_ohmigo = "data : [";
$x = 0;
foreach ($json_data_t_effective_array as &$t_effective) {
$addtemp = 0;
if($json_data_tcc_mean_array[$x] == 1){
if($x > 8 && $x <= 15){
$addtemp += 2;
}
}
if($onoff_arr6[$x] == 1){
$addtemp -= 2;
// echo("<br>Sänk temperaturen ute de billigaste timmarna på dygnet<br>");
}
if($onoff_arr[$x] == 1){
$json_data_t_effective_ohmigo = $json_data_t_effective_ohmigo . ($json_data_t_effective_array[$x]+$addtemp).",";
}else{
$json_data_t_effective_ohmigo = $json_data_t_effective_ohmigo . ($json_data_t_effective_array[$x]+20+$addtemp).",";
}
$x++;
}
$json_data_t_effective_ohmigo = $json_data_t_effective_ohmigo . "]";
?>
<script>
const labels = <?php echo($json_labels_t);?>;
const data = {
labels: labels,
datasets: [
{
label: 'Medelpris',
<?php echo($json_data_t7);?>,
borderColor: '#FF00FF',
backgroundColor: '#FF00FF',
stepped: true,
fill: false,
yAxisID: 'y'
},
{
label: '<?php echo($area);?>',
<?php echo($json_data_t1);?>,
borderColor: '#FF0000',
backgroundColor: '#FF0000',
stepped: true,
fill: true,
yAxisID: 'y'
},
{
label: 'Temperaturkurva OMHIGO',
<?php echo($json_data_t_effective_ohmigo);?>,
borderColor: '#FF0000',
backgroundColor: '#FF0000',
stepped: false,
fill: false,
yAxisID: 'y4'
},
{
label: '(1) ON/OFF-reglering baserat på OFF de dyraste <?php echo($percent_off*100);?>% av timmarna i elområde <?php echo($area);?>',
<?php echo($json_data_t5);?>,
borderColor: '#005808',
backgroundColor: '#005808',
stepped: true,
fill: false,
yAxisID: 'y1'
}
,
{
label: '(2) ON/OFF-reglering baserat på ON de billigaste <?php echo($percent_on*100);?>% av timmarna i elområde <?php echo($area);?>',
<?php echo($json_data_t6);?>,
borderColor: '#009b0f',
backgroundColor: '#009b0f',
stepped: true,
fill: false,
yAxisID: 'y2'
},
{
label: '(3) ON/OFF-reglering baserat på lägre än medelpris i elområde <?php echo($area);?>',
<?php echo($json_data_t8);?>,
borderColor: '#00e616',
backgroundColor: '#00e616',
stepped: true,
fill: false,
yAxisID: 'y3'
}
]
};
const config = {
maintainAspectRatio: true,
type: 'line',
data: data,
options: {
responsive: true,
plugins: {
title: {
display: true,
text: 'ELPRISOMRÅDEN <?php
$latest_date_lable = $latest_date ;
if($day == 0){
$latest_date_lable = date("Y-m-d") ;
}
echo($latest_date_lable );?>',
},
},
scales: {
y: {
type: 'linear',
position: 'left',
stack: 'demo',
stackWeight: 5,
}
,
y4: {
type: 'linear',
position: 'left',
stack: 'demo',
stackWeight: 5,
}
,
y1: {
type: 'category',
labels: ['ON', 'OFF'],
offset: true,
position: 'left',
stack: 'demo',
stackWeight: 1,
},
y2: {
type: 'category',
labels: ['ON', 'OFF'],
offset: true,
position: 'left',
stack: 'demo',
stackWeight: 1,
},
y3: {
type: 'category',
labels: ['ON', 'OFF'],
offset: true,
position: 'left',
stack: 'demo',
stackWeight: 1,
}
}
}
};
const myChart = new Chart(
document.getElementById('myChart'),
config
);
</script>
<script>
const labels2 = <?php echo($json_labels_t2);?>;
const data2 = {
labels: labels,
datasets: [
{
label: 'Temperatur',
<?php echo($json_data_t);?>,
borderColor: '#0060ff',
backgroundColor: '#0060ff',
stepped: false,
fill: false,
yAxisID: 'y'
},
{
label: 'Vind',
<?php echo($json_data_ws);?>,
borderColor: '#ff0000',
backgroundColor: '#ff0000',
stepped: false,
fill: false,
yAxisID: 'y'
},
{
label: 'Effektiv vind',
<?php echo($json_data_t_effective);?>,
borderColor: '#0000a9',
backgroundColor: '#0000a9',
stepped: false,
fill: false,
yAxisID: 'y'
},
{
label: 'Sol',
<?php echo($json_data_tcc_mean);?>,
borderColor: '#f6ff00',
backgroundColor: '#f6ff00',
stepped: true,
fill: true,
yAxisID: 'y2'
},
]
};
const config2 = {
maintainAspectRatio: true,
type: 'line',
data: data2,
options: {
responsive: true,
plugins: {
title: {
display: true,
text: 'VÄDERPROGNOS <?php
$latest_date_lable = $latest_date ;
if($day == 0){
$latest_date_lable = date("Y-m-d") ;
}
echo($latest_date_lable );?>',
},
},
scales: {
y2: {
type: 'category',
labels: ['ON', 'OFF'],
offset: true,
position: 'left',
stack: 'demo',
stackWeight: 1,
},
y: {
type: 'linear',
position: 'left',
stack: 'demo',
stackWeight: 10,
}
}
}
};
const myChart2 = new Chart(
document.getElementById('myChart2'),
config2
);
</script>
</body>
</html>