Analisa data
alamat server slave di ralat di http://appscenter.aio.co.id/weatherlogger/

alamat master logger di http://weatherlogger.ap.ngrok.io/

Oke saya lanjutkan. remind lagi ini adalah seri berantai dari posting berikut ya

  1. https://tarecha.wordpress.com/2015/10/26/project-raspberry-pi/
  2. https://tarecha.wordpress.com/2017/06/05/project-weather-logger-part-1/
  3. https://tarecha.wordpress.com/2017/06/26/project-weather-logger-part-2-tambahan-sensor-tekanan-udara/
  4. https://tarecha.wordpress.com/2017/07/01/project-weather-logger-part-3-komunikasi-udp/
  5. https://tarecha.wordpress.com/2017/07/15/project-weather-logger-part-4-simpan-di-server-mysql/
  6. https://tarecha.wordpress.com/2017/07/24/project-weather-logger-part-5-view-data-dan-export/
  7. https://tarecha.wordpress.com/2017/07/25/project-weather-logger-part-6-plot-graphic/
  8. https://tarecha.wordpress.com/2017/07/29/project-weather-logger-part-7-ngrok-http-tunneling/
  9. https://tarecha.wordpress.com/2017/08/27/project-weather-logger-part-8-ganti-sensor-bme280/
  10. https://tarecha.wordpress.com/2017/09/03/project-weather-logger-part-9-sync-data/
  11. https://tarecha.wordpress.com/2018/01/13/project-weather-logger-part-10-notifikasi-email-dan-autostart-dan-backup/
  12. https://tarecha.wordpress.com/2018/02/02/project-weather-logger-part-11-bot-twitter/
  13. https://tarecha.wordpress.com/2018/04/07/project-weather-logger-part-12-analisis-data/

 

Assalamu’alaikum Wr. Wb.

oke kita lanjutkan. jadi kali ini kalau datanya banyak kan grafiknya rapet baget tuh . sehingga saya bikin lagi grafikwakturatarata.php dimana file tersebut merata2 kan data suhu, kelembapan, dan tekanan udara di rata2 kan sehari. kemudian di grafikan berdasarkan range waktu. nanti di summarty lagi min , avg, dan max dalam waktu tersebut. file yang di edit adalah controller dan view. ini buat nambahin link saja. tapi tidak saya posting ya. kalau mau source code nya saja saya upload. btw saya belum bisa pakai git, dlu terbiasa pakai SVN. jadi ya…. gtw gimana carane he.

 

oke ini alamatlink nya http://appscenter.aio.co.id/weatherlogger/ย  nanti pilih yang grafik filter waktu rata2 ya http://appscenter.aio.co.id/weatherlogger/grafikwakturatarata.php . N1 adalah rumah saya . N2 adalah ruang server. yang server harnya suhu dan tekanan.

 

grafik rata2

grafik rata2

 

dengan time range yang sama, coba bandingkan gambar berikut

grafik per baris data

grafik per baris data

grafik rata2 per hari

grafik rata2 per hari

grafik rata2 per hari

 

berikut kodingnya. yang penting adalah di bagian perubahan sql nya saja dan penentuan garis kuning untuk penanda pemisah bulan. namun hal yang di catat adalah

saya menggunakan first day of this month. jadi kalau tanggal 5 bulan april 2018. maka jadi 1 april 2018 untuk start date, lalu ditambah period 30 hari. la disini masalahnya. saya menggunakan date interfal dengan period setaip 30 hari. dimana bulan itu gk mesti 30 hari. ada yang 30 31 28 29 . jadi ya kadang geser 1 hari dari tanggal 1 tiap bulan yang sebagai marking kuning tersebut.

dan untuk selectnya adalah select dalam select untuk yang summary datanya.

<?php
include "header.php";
include "config.php";
$startdate = "";
$enddate =  "";

if(isset($_POST['startdate'])&&isset($_POST['enddate'])&&isset($_POST['idnode']))
{
	$startdate = $_POST['startdate'];
	$enddate = $_POST['enddate'];
	$idnode = $_POST['idnode'];
	if(($startdate!="")&&($enddate!=""))
	{
		$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2)  as press from masterdata where  idnode='$idnode' and waktu between date('$startdate') and date('$enddate')  group by date(`waktu`) order by waktu asc";
	
	//	$query = "select unix_timestamp(waktu)*1000  as x,temp,hum,press from masterdata where idnode='$idnode' and waktu between '$startdate' and '$enddate' order by waktu asc";
		$querysummary = "select min(temp) as mintemp, round(avg(temp),2) as avgtemp, max(temp) as maxtemp,
 			   min(hum) as minhum, round(avg(hum),2) as avghum, max(hum) as maxhum,
			   min(press) as minpress, round(avg(press),2) as avgpress, max(press) as maxpress
		    from masterdata where idnode='$idnode' and waktu between '$startdate' and '$enddate' order by waktu asc";
			
		$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT  avg(temp) as temp,avg(hum) as hum ,avg(press)as press from masterdata 
	where  idnode='$idnode'  and waktu between date('$startdate') and date('$enddate')  group by date(`waktu`) order by waktu asc) as ratarata";
		//echo "a";
		
	}
	else
	{
		$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc";
	
		//$query = "select unix_timestamp(waktu)*1000  as x,temp,hum,press from masterdata where idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 3 DAY) order by waktu asc";
		$querysummary = "select min(temp) as mintemp, round(avg(temp),2) as avgtemp, max(temp) as maxtemp,
 			   min(hum) as minhum, round(avg(hum),2) as avghum, max(hum) as maxhum,
			   min(press) as minpress, round(avg(press),2) as avgpress, max(press) as maxpress
		    	from masterdata where idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 3 DAY) order by waktu asc";
		
		$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT  avg(temp) as temp,avg(hum) as hum ,avg(press)as press from masterdata 
	where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc) as ratarata";
	//	echo "b";
	}
}
else
{
	if(isset($_GET['node']))
	{
		$idnode = $_GET['node'];
		
	}
	
	$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc";
	
	//$query = "select unix_timestamp(waktu)*1000  as x,temp,hum,press from masterdata where idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 3 DAY) order by waktu asc";
	
				
	$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT  avg(temp) as temp,avg(hum) as hum ,avg(press)as press from masterdata 
	where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc) as ratarata";
	//echo "c";
}




$data = mysqli_query($conn, $query);
$dataPointstemp = array();
$dataPointshum = array();

$dataPointspress = array();

while ($row = mysqli_fetch_array($data, MYSQL_ASSOC)) 
{
	array_push($dataPointstemp,array('x'=>$row['x'],'y'=>$row['temp']));
	array_push($dataPointshum, array('x'=>$row['x'],'y'=>$row['hum']));
	array_push($dataPointspress, array('x'=>$row['x'],'y'=>$row['press']));
}

$lastTemp = end($dataPointstemp)['y'];
$lastHum = end($dataPointshum)['y'];
$lastPress = end($dataPointspress)['y'];
//ambil tanggal start date dan end date
$firstupdateU = reset($dataPointstemp)['x']/1000;
$lastupdateU =end($dataPointstemp)['x']/1000;
$firstupdate = date("d F Y H:i:s",$firstupdateU);
$lastupdate = date("d F Y H:i:s",$lastupdateU);

//bikin strip garis pembagi per pukul 00:00
$firstupdatetengahmalam = date("d F Y  H:i:s",$firstupdateU);
$begin = (new DateTime( $firstupdatetengahmalam ))->setTime(0,0);

$end = new DateTime( $lastupdate );

$begin = $begin->modify( 'first day of this month' );
//$begin = $begin->modify( '+1 day' );
$abc = "aku padamu ff" ;


$interval = new DateInterval('P30D');
$daterange = new DatePeriod($begin, $interval ,$end);

$datasummary = mysqli_query($conn, $querysummary);
$summary = mysqli_fetch_assoc($datasummary);


$querylokasi = "select lokasi from nodeproperties where idnode='$idnode'";
	$datalokasi = mysqli_query($conn, $querylokasi);
	$lokasi = mysqli_fetch_assoc($datalokasi);
?>

<body style="padding-top: 3px;">
<form action="grafikwakturatarata.php" method="post">
<div align="center">
    <br>
	Node ID : 
	<select name="idnode">
		<?php 
		$query = "select distinct idnode from masterdata";
		$data = mysqli_query($conn, $query);
		while ($row = mysqli_fetch_array($data, MYSQL_ASSOC)) 
		{	
			$idnodepost= (string)$row['idnode'];
			if($idnode==$idnodepost) 
				$selected="selected";
			else
				$selected="";
			echo '<option value="'.$row['idnode'].'" '.$selected.'>'.$row['idnode'].'</option>';
		}
		
		
		?>
	</select>
	
	<br>
	<br>
	Range time  : 
	<input type="text" name="startdate" id="startdate" value="<?php echo $startdate;?>"> - 
	<input type="text" name="enddate" id="enddate" value="<?php echo $enddate;?>">
	<input type="submit" name="submit" value="Filter">
	<button type="button" onclick="ClearFields();">Clear Filter</button>
	
	<br>
</div>

</form>
<br>
<div id="chartContainer"></div>

<div style="position: absolute;top:550px;left:50px;">

<?php include "summary.php"; echo $abc; echo "haha";?>
</div>
</body>

	<script type="text/javascript">
		$(function(){
			$('#startdate').appendDtpicker(
			{
					"autodateOnStart": false
			});
		});
		$(function(){
			$('#enddate').appendDtpicker(
			{
				"autodateOnStart": false
			});
		});
		
		function ClearFields() 
		{

			document.getElementById("startdate").value = "";
			document.getElementById("enddate").value = "";
		}
		
	</script>

<script type="text/javascript">


$(function () {
    var chart = new CanvasJS.Chart("chartContainer", {
        theme: "theme",
        zoomEnabled: true,
		exportEnabled: true,
        animationEnabled: true,
		axisY: 
		{
			title: "Suhu C dan Kelembapan %",
            titleFontFamily: "arial",
            titleFontSize: 12,
            includeZero: false,
			suffix: " C / %"
        },
		axisY2: 
		{
            title: "Pressure hPa",
            titleFontFamily: "arial",
            titleFontSize: 12,
            includeZero: false,
            suffix: " hPa"            
        },
        title: 
		{
            text: "Graphic Average each Day of <?php echo $idnode; echo " Location "; echo $lokasi['lokasi'];?>"
        },
	subtitles:[
		{
			text: "by Mochamad Agung Tarecha"
		
			
		},
		{
			
			text: "<?php echo "Average each day - Time range from ".$firstupdate ." to ". $lastupdate;?>"
			
		}
		],
		
		axisX:
		{   stripLines: [
		<?php
			foreach($daterange as $date)
			{
			
						
				echo "{";
				echo "value: ".(string)$date->format("U").'000,';			
				echo "showOnTop: false";           
				echo "},";
			}
		?>
            
            ],
			valueFormatString: "DD MMM YYYY HH:mm"
		},
		toolTip: 
		{
            shared: true
        },
        data: [
        {
			
            type: "line",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",
			showInLegend: true,		
			name: "Suhu C",							
            dataPoints: <?php echo json_encode($dataPointstemp, JSON_NUMERIC_CHECK); ?>
        },
		{
			
            type: "line",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",
			showInLegend: true,
			name: "Humidity %",			
            dataPoints: <?php echo json_encode($dataPointshum, JSON_NUMERIC_CHECK); ?>
        },
		
	{
            type: "line",
            axisYType: "secondary",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",	
            name: "Pressure hPa",
			showInLegend: true,
            dataPoints: <?php echo json_encode($dataPointspress, JSON_NUMERIC_CHECK); ?>
        }
		
        ],
		legend: {
                cursor: "pointer",
				horizontalAlign: "center",
				verticalAlign: "bottom",
                itemclick: function (e) {
                    if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
                        e.dataSeries.visible = false;
                    }
                    else {
                        e.dataSeries.visible = true;
                    }
                    chart.render();
                }
            }
    });
    chart.render();
});
</script>
</html>


oke sudah ya.

tambahan… dengan cara yang sama bisa diperoleh average per bulan . tinggal ganti sql nya saja menyesuaikan

average per bulan

average per bulan


<?php
include "header.php";
include "config.php";
$startdate = "";
$enddate =  "";

if(isset($_POST['startdate'])&&isset($_POST['enddate'])&&isset($_POST['idnode']))
{
	$startdate = $_POST['startdate'];
	$enddate = $_POST['enddate'];
	$idnode = $_POST['idnode'];
	if(($startdate!="")&&($enddate!=""))
	{
	//	$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2)  as press from masterdata where  idnode='$idnode' and waktu between date('$startdate') and date('$enddate')  group by date(`waktu`) order by waktu asc";
		$query = "SELECT   unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu between str_to_date(CONCAT(year('$startdate'), '-', month('$startdate'),'-01' ),'%Y-%m-%d') and last_day('$enddate')   group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc";
			
		$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT   unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu between str_to_date(CONCAT(year('$startdate'), '-', month('$startdate'),'-01' ),'%Y-%m-%d') and last_day('$enddate')   group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc) as ratarata";
		//echo "a";
		//echo $query;
		
	}
	else
	{
		//$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc";
		
		$query = "SELECT  unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 365 DAY)  group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc";
		
		
		$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT  unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 365 DAY)  group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc) as ratarata";
	//	echo "b";
	}
}
else
{
	if(isset($_GET['node']))
	{
		$idnode = $_GET['node'];
		
	}
	
	//$query = "SELECT  unix_timestamp(date(waktu))*1000  as x,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 30 DAY)  group by date(`waktu`) order by waktu asc";
	$query = "SELECT   unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 365 DAY)  group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc";
	
	
	//$query = "select unix_timestamp(waktu)*1000  as x,temp,hum,press from masterdata where idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 3 DAY) order by waktu asc";
	
				
	$querysummary = "select round(min(temp),2) as mintemp, round(avg(temp),2) as avgtemp, round(max(temp),2) as maxtemp, round(min(hum),2) as minhum, round(avg(hum),2) as avghum, round(max(hum),2) as maxhum, round(min(press),2) as minpress ,
	round(avg(press),2) as avgpress, round(max(press),2) as maxpress from (SELECT   unix_timestamp(str_to_date(CONCAT(year(waktu), '-', month(waktu),'-01' ),'%Y-%m-%d'))*1000  as x, CONCAT(monthname(waktu), ' ', year(waktu) ) as bulan,round(avg(temp),2) as temp, round(avg(hum),2) as hum , round(avg(press),2) as press from masterdata where  idnode='$idnode' and waktu >= ((select DATE(max(waktu)) from masterdata where idnode='$idnode') - INTERVAL 365 DAY)  group by  YEAR(`waktu`), MONTH(`waktu`) order by waktu asc) as ratarata";
//	echo "c";
}




$data = mysqli_query($conn, $query);
$dataPointstemp = array();
$dataPointshum = array();

$dataPointspress = array();
$tabeldata = array();

while ($row = mysqli_fetch_array($data, MYSQL_ASSOC)) 
{
	array_push($dataPointstemp,array('x'=>$row['x'],'y'=>$row['temp']));
	array_push($dataPointshum, array('x'=>$row['x'],'y'=>$row['hum']));
	array_push($dataPointspress, array('x'=>$row['x'],'y'=>$row['press']));
	array_push($tabeldata, array('bulan'=>$row['bulan'],'temp'=>$row['temp'],'hum'=>$row['hum'],'press'=>$row['press']));
}

$lastTemp = end($dataPointstemp)['y'];
$lastHum = end($dataPointshum)['y'];
$lastPress = end($dataPointspress)['y'];
//ambil tanggal start date dan end date
$firstupdateU = reset($dataPointstemp)['x']/1000;
$lastupdateU =end($dataPointstemp)['x']/1000;
$firstupdate = date("F Y",$firstupdateU);
$lastupdate = date("F Y",$lastupdateU);

//bikin strip garis pembagi per pukul 00:00
$firstupdatetengahmalam = date("d F Y  H:i:s",$firstupdateU);
$begin = (new DateTime( $firstupdatetengahmalam ))->setTime(0,0);

$end = new DateTime( $lastupdate );

$begin = $begin->modify( 'first day of this month' );
//$begin = $begin->modify( '+1 day' );



$interval = new DateInterval('P30D');
$daterange = new DatePeriod($begin, $interval ,$end);

$datasummary = mysqli_query($conn, $querysummary);
$summary = mysqli_fetch_assoc($datasummary);


$querylokasi = "select lokasi from nodeproperties where idnode='$idnode'";
	$datalokasi = mysqli_query($conn, $querylokasi);
	$lokasi = mysqli_fetch_assoc($datalokasi);
?>

<body style="padding-top: 3px;">
<form action="grafikwakturataratabulan.php" method="post">
<div align="center">
    <br>
	Node ID : 
	<select name="idnode">
		<?php 
		$query = "select distinct idnode from masterdata";
		$data = mysqli_query($conn, $query);
		while ($row = mysqli_fetch_array($data, MYSQL_ASSOC)) 
		{	
			$idnodepost= (string)$row['idnode'];
			if($idnode==$idnodepost) 
				$selected="selected";
			else
				$selected="";
			echo '<option value="'.$row['idnode'].'" '.$selected.'>'.$row['idnode'].'</option>';
		}
		
		
		?>
	</select>
	
	<br>
	<br>
	Range time  : 
	<input type="text" name="startdate" id="startdate" value="<?php echo $startdate;?>"> - 
	<input type="text" name="enddate" id="enddate" value="<?php echo $enddate;?>">
	<input type="submit" name="submit" value="Filter">
	<button type="button" onclick="ClearFields();">Clear Filter</button>
	
	<br>
</div>

</form>
<br>
<div id="chartContainer"></div>

<div style="position: absolute;top:550px;left:50px;">
<table style="width:100%" border="1px" cellpadding="5px">
  <tr>
    <th>&nbsp; Month Year</th>
    <th>&nbsp; Temperature</th>
    <th>&nbsp; Humidity</th>
    <th>&nbsp; Pressure</th>
  </tr>

<?php 



foreach($tabeldata as $data)
{
	echo "<tr>";
		echo "<td align='right'>&nbsp;"; 
		echo $data['bulan'];
		echo "&nbsp;</td>";	
		echo "<td align='right'>"; 
		echo $data['temp'];
		echo "&nbsp;</td>"; 
		echo "<td align='right'>"; 
		echo $data['hum'];
		echo "&nbsp;</td>";  	
		echo "<td align='right'>"; 
		echo $data['press'];
		echo "&nbsp;</td>"; 	
	
	
	echo "</tr>";
}



?>
</table>
<br>
<?php include "summary.php"; ?>
</div>
</body>

	<script type="text/javascript">
		$(function(){
			$('#startdate').appendDtpicker(
			{
					"autodateOnStart": false
			});
		});
		$(function(){
			$('#enddate').appendDtpicker(
			{
				"autodateOnStart": false
			});
		});
		
		function ClearFields() 
		{

			document.getElementById("startdate").value = "";
			document.getElementById("enddate").value = "";
		}
		
	</script>

<script type="text/javascript">


$(function () {
    var chart = new CanvasJS.Chart("chartContainer", {
        theme: "theme",
        zoomEnabled: true,
		exportEnabled: true,
        animationEnabled: true,
		axisY: 
		{
			title: "Suhu C dan Kelembapan %",
            titleFontFamily: "arial",
            titleFontSize: 12,
            includeZero: false,
			suffix: " C / %"
        },
		axisY2: 
		{
            title: "Pressure hPa",
            titleFontFamily: "arial",
            titleFontSize: 12,
            includeZero: false,
            suffix: " hPa"            
        },
        title: 
		{
            text: "Graphic Average each Month of <?php echo $idnode; echo " Location "; echo $lokasi['lokasi'];?>"
        },
	subtitles:[
		{
			text: "by Mochamad Agung Tarecha"
		
			
		},
		{
			
			text: "<?php echo "Time range from ".$firstupdate ." to ". $lastupdate;?>"
			
		}
		],
		
		axisX:
		{   stripLines: [
		<?php
			foreach($daterange as $date)
			{
			
						
				echo "{";
				echo "value: ".(string)$date->format("U").'000,';			
				echo "showOnTop: false";           
				echo "},";
			}
		?>
            
            ],
			valueFormatString: "DD MMM YYYY HH:mm"
		},
		toolTip: 
		{
            shared: true
        },
        data: [
        {
			
            type: "line",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",
			showInLegend: true,		
			name: "Suhu C",							
            dataPoints: <?php echo json_encode($dataPointstemp, JSON_NUMERIC_CHECK); ?>
        },
		{
			
            type: "line",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",
			showInLegend: true,
			name: "Humidity %",			
            dataPoints: <?php echo json_encode($dataPointshum, JSON_NUMERIC_CHECK); ?>
        },
		
	{
            type: "line",
            axisYType: "secondary",
			xValueType: "dateTime",
			xValueFormatString:"DD MMM YYYY HH:mm:ss",	
            name: "Pressure hPa",
			showInLegend: true,
            dataPoints: <?php echo json_encode($dataPointspress, JSON_NUMERIC_CHECK); ?>
        }
		
        ],
		legend: {
                cursor: "pointer",
				horizontalAlign: "center",
				verticalAlign: "bottom",
                itemclick: function (e) {
                    if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
                        e.dataSeries.visible = false;
                    }
                    else {
                        e.dataSeries.visible = true;
                    }
                    chart.render();
                }
            }
    });
    chart.render();
});
</script>
</html>


wassalanmu’alaikum Wr. Wb.

Iklan

Mission of the day part 2

Posted: 12 Juli 2018 in kenangan

daftar haji

daftar haji

 

 

Assalamu’alaikum Wr. Wb.

saya mulai cerita dari mana ya ? oh ya dari sini saja https://tarecha.wordpress.com/2017/03/27/misson-of-the-day/ , setelah misi itu sukses akhirnya saya nabung buat haji. sebenernya waktu dulu ikut daftar biar semua bisa bareng bisa, ya cari pinjaman dikit dan gadaikan beberapa perihasan milik ortu bisa sih. cman saya gk mau, ibu saya sangat ingin bareng tapi saya punya pemikiran lain. kalau semua berangkat bersamaan siapa yang jadi staf Ground Handling nya ? , pesawat berangkat harus ada yang mengurusi di darat kan ? sebenernyaย  agak bingung juga, maunya saya bareng istri daftar bareng cman belum nemu aja nih, jadi saya daftar dluan. sempat ragu karena 2 hal, pertama pengen beli mobil seken, yah ditambahin pinjam saudara dan gadai beberapa perhiasan ortu nanti ditebus lagi bisa sih. cman ya kok ngoyo banget, nanti saja klo memang sudah kebutuhan mendesak bersama keluarga nanti beli. yang ke 2 saya kan inginnya bareng istri daftar bareng cman kata Ustadz Achmad Diny Hidayatullah ini guru saya bahasa arab di uin dlu nanti istri bisa di barengkan suami misal daftarnya terkahir. nanti bisa di barengkan sama mahramnya. jadi tenang deh… oke langsung rencana cuti untuk daftar haji

 

Hari ini saya izin cuti, langsung cus ambil uang 7,5 jt dlu, sebelume sudah pegang 2.9 jt. ke bri syariah ke jalan kawi eh katanya pak becak sudah pindah ke jalan soekarno hatta dekat pesawat. gk lihat google map langsung cus kesana, ketika disana gk nemu tanya orang2 gk tahu. akhirnya lihat di google map, eh ternyata kelewatan. sebelah selatannya taman krida budaya, langsung deh cus kesana. langsung daftar. setoran peratama 10,2ย  jt. harus ada saldo mengendap minimal 100 rb. lalu keluar cari atm bca, langsung transfer 15 jt. total di rekening 25,2 jt. langsung dapat surat bukti setoran langsugn ke kantor kemenag.

dari kantor kemenag disuruh beli map di koperasi depan, eh ternyata nyari gk nemu, balik lagi katanya koprerasinya sebrang jalan. oke nyebrang, hati2 ya banyak truk disini. beli map dan pulpen. seingat saya gk bawa pulpen, lalu balik nulis2 , nunggu sebentar , foto selesai deh. eh ternyata bawa pulpen. hmmmm.. ya udah lah. pulangnya balik ke koprasi untuk fotokopi. ternyata dekat dengan bca dan bri.

di bri saya tanya mau bikin kartu kredit, kata pak satpamnya di cabang gk bisa. harus di kantor wilayahnya. okeh…. ke bca. cetak rekening . ternyata rekening bca tabunganku saya statusnya dormant sehingga dipotong 2000 tiap bulan. hmmm uang di rekening bca gold tinggal 200 ribuan yang uang milik saya sendiri. yang sisanya bukan milik saya, tidak saya otak atik sama sekali.

oke lalu ke bri mardaninata, kesana ternyata bagian kartu kredit istirahat, ya udah lah memang gk diizinkan Allah pakai kartu kredit kali,,, tapi kan butuh kadang2 buat beli dari luar negeri butuh kartu kredit. oke sip… ibu juga melarang bikin kartu kredit.

setelah itu pulang. mampir apotik beli neomune di kimia farma, eh katanya gk jual ya udah balik lagi ke bri syariah untuk ngasikan copyan daftar haji tadi.

ya udah mission accomplished, untuk hari ini setidaknya begitu, tinggal nabungkan haji buat istri agar bisa bareng ya … ๐Ÿ™‚ sama siapa masih belum tahu… he he

udah gitu aja.

pada akhirnya kita harus memilih, mana yang harus diprioritaskan, mana yang bisa di buang, mana yang bisa ditunda. mobil nanti ditunda, kartu kredit dibuang. toh gk pakai kartu kredit selama ini saya juga gk beli apa2 dari luar negeri pakai akun kartu kredit. cman saat daftar TOEFL iBT saja dlu pakai kartu kredit itu pun pinjam andika.

Wassalamu’alaikum Wr. Wb.

 

 

 


Assalamu’alaikum Wr. Wb.

Alhamdulillah kemarin berhasil regenerasi remaja masjid. kita punya pengurus baru setelah sekian lama generasi saya udah gk aktif lagi karena berbagai kesibukan.

matinya sebuah organisasi bukan karena faktor eksternal, tapi karena tidak mampu beregenerasi.


umbelen

umbelen

 

ini foto lebaran

upgrade memory untuk menampung vm dari host yang mati

upgrade memory untuk menampung vm dari host yang mati

 

Assalamu’alaikum Wr. Wb.

bingung nih cerita mulai dari mana. hmmm gini.. H-1 lebaran kami lembur, karena jadwalnya pas dengan maintenance listrik engineering harus matikan listrik server, ya udah sekalian kami nyambung listrik dari RUPS ( Rotary UPS) ke server. dan memang case terjadi lagi, server itu gk boleh shutdown sering2 sebenarnya, SLA nya 99.9% itu hanya boleh mati sekitar 4 jam dalam setahun itupun kalau terpaksa, tapi ya apa boleh buat karena penyambungan listrik ini diperlukan agar listrik data center kita lebih stabil dan kedepannya gk boleh down. kita mulai dengan penarikan kabel seminggu sebelumnya sehingga tinggal narik kabel sakja kebawah untuk disambungin. setelah server kita shutdown sesuai prosedur dll maka penarikan kabel berlangsung. melibatkan team engineering

pemasangan listrik

pemasangan listrik

oh ya kita ngerjain ini H-1 lebarang ya.. di malam takbiran he he. penyambungan listriknya harus terang, kita pakai lampu emergency, kan listriknya dimatikan. sekalian maintenance grounding dan periksa konektor listrik yang kurang rapet dengan thermal foto, dengan foto ini kita bisa tahu mana kabel yang panas karena konektor longgar. ingat untuk merapatkannya harus pakai alat2 APD alat pelindung diri, obeng khusus listrik yang insulasinya 1000v, sepatu safety, penerangan yang cukup, dan yang paling utama listrik harus sudah mati. di cek dengan tespen.ย  gambar berikut ada salah satu kabel yang agak panas karena konektornya longgar. bisa dilihat ya.

thermal foto

thermal foto

sekalian power meternya kami ganti yang digital, dengan power meter ini akan presisi pengukurannya dan datanya bisa di rekam di SCADA ( semacam komputer untuk menampung data akuisisi ) milik engineering, sehingga kita bisa mengontrol penggunaan daya, arus, tegangan, lalu bisa trace misal tiba2 ups rusak jam segini, kita lihat jam segitu apakah ada abnormalitas tegangan misal tinggi mendadak dll. untuk trace semacam itu lah.

power meter digital

power meter digital

setelah selesai semua sebelum di onkan di cek dlu phase nya sudah benar apa tidak, karena kalau kabelnya salah bisa rusak. ada 3 phase yang berbeda dan mengeceknya bisa pakai alat fluke.

seperti ini gambarnya. setiap fasa berbeda 120 derajat.

pengecekan fasa

pengecekan fasa

kira2 kalau pakai osiloskop akan seperti ini. kabelnya ada 4. R S T dan N netral. salah kabel meski satu akan berakibat rusaknya perangkat yang membutuhkan 3 fasa dalam hal ini Precision AC dan UPS

UPS membutuhkan waktu singkronisasi fasa sebelum switch ke ups

UPS membutuhkan waktu singkronisasi fasa sebelum switch ke ups

setelah semua di cek oke maka kita hidup kan PAC dahulu, PAC oke langsung nyala. lalu UPS. disini ada yang ingin saya informasikan, ketika ups hidup pertama dia akan langsung bypass ke listrik PLN langsung. karena kita belum di ON kan. ketika dipencet tombol ON selama 5 detik makan akan hidup namun gk langsung hidup dan mematikan bypass, butuh waktu beberapa lama untuk mensingkronkan fasanya agar sama sehingga daya sama sekali gk putus. hmmm… gimana ya ilustrasinya… coba lihat video berikut di menit 1:46

dannnn,,,, server blade H22 kami ada 7 server fisik, 3 server gk mau up hikz hikz… karena memang servernya sudah berumur. seperti sepeda honda 80 gitu, nyala terus gpp, tapi begitu mati startnya agak kesulitan. 3 server tersebut gk mau konek dengan AMM Advanced Management Module

error host

error host

3 host tersebut 1 host server, 2 host VDI untuk client. kami punya 3 host server dan 3 host vdi. agar servernya hidup semua makan 2 yang tersisa kami maksimalkan memorynya dari server blade yang mati

upgrade memory untuk menampung vm dari host yang mati

upgrade memory untuk menampung vm dari host yang mati

dan memindahkan host yang mati ke server yang hidup. pakai vmotion, kerennya vmotion meski hostnya mati diba bisa di migrate. seperti ini caranya. ini hanya simulasi ya. krn kan pas asli saya fokus migrate bukan nulis. klik kanan migrate, change host, pilih host yang hidup finish, oh ya sekalipun vm nya hidup juga bisa ganti host loh, hebatnya vm ware. bahkan vcenter untuk memanagement host dan vm ini juga windows virtual machine bisa di migrate ketika sedang online. dengan tidak sampai diskonek sama sekali. ini dilakukan dengan keadaan saya remote. istilahnya mungkin yang tepat “on the fly” keren kan ? ๐Ÿ™‚

 

lalu bila ada host yang not responding caranya klik kanan remove. karena host yang not responding tombolnya disable semua dan gk bisa di apa2 in.

lalu ke datastore browser. cari file .vmx nya , add lagi sebagai host.ย  saya ilustrasikan ya,

pertama host yang not responding dan gk bisa di migrate di remove

kedua ke host sumary, ke stograge, klik kanan storagenya dan brows

cari folder VM nya cari file .vmx klik kanan add to inventory

nanti di start power on vm nya, nanti di tab summary ada pertanyaan. pilih move. jangan copy. dengan begitu meski gk bisa di migrate tapi vm nya bisa dihidupkan lagi.

 

 

 

hmmm demikian share dari saya, memang sih servernya sudah waktunya ganti… dan tahun depan InsyaAllah kami implementasi hyperconvergence pakai nutanix… apa itu ? lihat tahun depan ya ๐Ÿ™‚
Wassalamu’alaikum Wr. Wb.

 


AC Hemat Energi versi mahasiswa

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

Peltier ac ala mahasiswa…. tinggal modul peltier nya saja

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on


Assalamu’alaikum Wr. Wb

Ketemu teman kuliah

Ketemu teman kuliah

di acara inovation hub Schneider Electric

di acara inovation hub Schneider Electric

pembukaan

pentingkah mengikuti seminar – semniar yang diadakan vendor ? jawaban saya sangat penting. dengan mengikuti seminar tersebut kita bisa mengetahui update teknologi terbaru yang dikembangkan oleh vendor. kalau mengandalkan dari kuliah atau internet saja kurang sip, disini kita bisa bertanya langsung pada ahlinya dan sebagai menambah wawasan apakah teknologi itu bisa diterapkan di lingkukang perusahaan, dan yang lebih bisa lagi kita bisa belajar dan “meniru” teknologi tersebut dengan membuatnya dengan versi low costย  dengan DIY project, seperti yang selama ini saya lakukan. oh ya disini keren banget acaranya, ada mbak-mbak cakep yang membuat hati berdesir… astaghfirullah…. ada foto cuman malu ah…

ada beberapa hal yang bisa saya adopsi IoT nya terutama mengenai scada “Supervisory control and data acquisition” , yang sebenarnya project https://tarecha.wordpress.com/2018/04/07/project-weather-logger-part-12-analisis-data/ merupakan scada juga loh. dan saya mau bikin project Power Monitor di rumah, namun belum nemu sensor yang pas.

Contoh monitor power sensor

Contoh monitor power sensor

Contoh monitor power gateway

Contoh monitor power gateway

saya yakin bisa buat alat ini, cman belum nemu yang pas saja. intinya seperti tang clamp meter. mengukur tegangan dan arus dan bisa diakses via web, cman untuk menyimpan record datanya masih butuh alat lain. dan jika dijumlahkan cukup mahal untuk rumah tangga :-). dan juga rumah tangga gk perlu SCADA seperti ini, saya pengen bikin buat di rumah biar tahu sebulan berapa KWh yang digunakan, beban puncak kapan dan tegangan drop kapan, mirip yang weather logger itu lah.

dan saya ketemu teman kuliah saya, ternyata ikut juga. dan juga saya nyobain sepeda listrik di pameran tersebut, harganya 17 jt. masih cukup mahal sih,

Awas Nabrak ๐Ÿ™‚ Sepeda elektrik di acara Schneider sby

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

 

 

oke gitu saja sih ya ๐Ÿ™‚
Wassalamu’alaikum Wr. Wb.

 

 

 

 

 


Assalamu’alaikum Wr. Wb.

hmmm bingung mulai cerita dari mana. cerita lanjutan dari sini https://tarecha.wordpress.com/2018/04/27/gagal-ke-jakarta-hari-ini-tapi-tidak-besok-insyaallah/

jadi setelah gagal berangkat saya langsung cus pesan tiket besoknya. jam 11 pakai kereta jayabaya. singkat cerita kami berangkat, saya dan ibu. ayah jaga rumah, kami punya peliharaan ayam, kalau ikut semua gk ada yang ngasi makan ayam he he. di perjalanan lumayan lama ini saya sempatkan beli coklat panas. di gerbong kereta, habis bosen duduk terus. lalu saya cari tempat kosong untuk tidur disana, sementara ibu di kursi agar bisa selonjor juga.

Bukan starbucks kok ๐Ÿ™‚

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

 

akhirnya sekitar jam 2 malam kami tiba di jakarta, adek sudah menyusul. untuk menurunkan koper yang berisi jeruk itu saya gk kuat angkat sendiri, hmmm. berat sekali. apalagi stasiun pasar senen turun kebawah dlu dengan tangga, ingin sekali melemparkan kopernya. esok harinya kami ke CFD untuk sarapan. seperti ini suasananya. kami muter2 disana, capek dan panas.

Catch the moment

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

 

oh ya ada tanding tinju juga . lucu sekali

Catch the moment

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

setelah itu pulang, sholat, beres2 lalu jalan2 ke mall grand indonesia, ada masakan udon jepang. saya pengen tahu sih gimana rasanya, lagipula ada logo Halal MUI, dimana saya tahu gk gampang untuk sertifikasi halal ini. jadi yakin lah. lagipula yang di pesan mi udon tahu dan mi udon nuget dikasi kuah kare. rasanya ? hmm.. gk cocok.. masak mi dikasi bumbu kare ? ya emang bukan lidah orang jepang he he.

oh ya sebelumnya saya janjian sama luluk untuk ketemu, sama suaminya juga tentunya ๐Ÿ™‚ jadi inget klo masih jomblo. sebenarnya gk tahu arah, mau ke ciputat depan uin naik gojek lama dan mahal sih 40 rb an belum kalau macet, akhirnya saya berangkat ke halte busway dekat grand indonesia tanya apakah ada yang ke ciputat, ada adek2 berjilbab yang nunggu juga, langsung saya tanya ke ciputat ya ? iya… mahasiswa uin ya ? iya ,.. kok tahu… biasalah… sesama anak uin pasti ngerti. akhirna naik bus way, saya sempet tidur disana. lama banget 1,5 jam an lah lamanya

akhirnya sampai kemudian sholat dulu di masjid uin jkt yang samping rumah sakitnya, gk lupa foto dlu buat kenang2 an. oh ya yang saya post yang sudah saya upload di ig saja ya, ilang soalnya

Orang udik ke Ibu kota… kyk orang ilang ๐Ÿ™‚

A post shared by Agung Tarecha / Cemara Angin (@agungtarecha) on

di jemput wafa suaminya luluk lalu kita ngobrol2 seperti biasa, sudah 2 tahun gk ketemu, lalu foto bareng. pulang deh. di jalan dianterin wafa. kita ngobrol2 soal dek tsamara amany, anak psi. yap… yang gincu nya merah itu. partai solidaritas indonesia ๐Ÿ™‚ dasar lelaki.

 

besoknya pulang, di malam nifsu sya’ban. saya sudah diingetin untuk berdizikir sama ibu, tapi sibuk saja main hape. disuruh jangan main hape terus.

lalu saya tidur. paginya dicari gk ada. saya lacak di alamat berikut. hmmm.. 2x hape ilang.. yah semua karena gk dengerin kata ibu, pertama dilarang gk boleh main sama temen pas malam minggu, ilang di copet, kedua karena disuruh dzikir sibuk main hape.

lokasi hape ilang

lokasi hape ilang

 

ya akhirnya beli lagi deh… warna rose gold atau pink. karena 2 kali beli hitam ilang semua ๐Ÿ™‚

semoga yang ini awet….

Wassalamu’alaikum Wr. Wb.