스마트공장
#3 chartjs 실시간 모니터링 (온도, 습도 실시간 모니터링)
진행님
2023. 12. 20. 07:35
반응형
<div style="width: 100%;border:1px solid #ccc">
<div class="title">1파트</div>
<canvas id="myChart" width="400" height="200"></canvas>
</div>
<script>
// 초기 데이터
let temperatureData = [0, 0, 0, 0, 0];
let humidityData = [0, 0, 0, 0, 0];
let chktime = ['', '', '', '', ''];
// 차트 생성
let ctx = document.getElementById('myChart').getContext('2d');
let myChart = new Chart(ctx, {
type: 'line',
data: {
labels: chktime,
datasets: [{
label: '온도 ℃',
data: temperatureData,
borderColor: 'rgba(255, 99, 132, 1)',
borderWidth: 1,
fill: false
}, {
label: '습도 %',
data: humidityData,
borderColor: 'rgba(75, 192, 192, 1)',
borderWidth: 1,
fill: false
}]
}
});
// 실시간 데이터 업데이트 함수
function updateData(newTemperature, newHumidity, newchktime) {
// 새로운 데이터 추가
temperatureData.push(newTemperature);
humidityData.push(newHumidity);
chktime.push(newchktime);
// 데이터 제한 (예: 최근 10개의 데이터만 표시)
if (temperatureData.length > 10) {
temperatureData.shift();
humidityData.shift();
chktime.shift();
}
// 차트 업데이트
myChart.update();
}
// 예시로 매 3초마다 데이터 업데이트
let newTemperature;
let newHumidity;
setInterval(() => {
$.ajax({
type : 'POST',
url : '최근온도데이터',
success : function(result10){
newTemperature = result10;
}
});
//console.log(newTemperature);
$.ajax({
type : 'POST',
url : '최근습도데이터',
success : function(result11){
newHumidity = result11;
}
});
//console.log(newHumidity);
let today = new Date();
let newchktime = today.toLocaleTimeString();
//console.log(newchktime);
updateData(newTemperature, newHumidity, newchktime);
}, 3000);
</script>

반응형