You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Play/WebSocket3Aqva/data/inform5.html

227 lines
7.9 KiB

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Информация</title>
<link href="style.css" rel="stylesheet" type="text/css">
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
</head>
<body id="body">
<div id="containerinf">
<div class="topnav" ;id="header" >
<h3>ESP-Домашний сервер</h3>
</div>
<div class="top2">
<nav1><a href="index.html" title="главное меню">Главное меню</a></nav1>
<nav1><a href="inform1.html" title="информация">улица восток</a></nav1>
<nav1><a href="inform.html" title="информация">улица запад</a></nav1>
<nav1><a href="inform4.html" title="информация">коридор</a></nav1>
<nav1><a href="inform2.html" title="информация">комната1</a></nav1>
<nav1><a href="inform3.html" title="информация">комната2</a></nav1>
<nav1><a href="inform6.html" title="информация">кухня</a></nav1>
<nav1><a href="inform5.html" title="информация">балкон</a></nav1>
</div>
<div style="text-align: center;">
<div id="contentinfo">
<h1>Балкон</h1>
<div class="cards">
<div class="card temperature">
<h4><i class="fas fa-thermometer-half"></i> TEMPERATURE</h4><p><span class="reading"><span id="tbal"></span> &deg;C</span></p><p class="packet">Battery <span id="batbal"></span></p>
</div>
<div class="card humidity">
<h4><i class="fas fa-tint"></i> HUMIDITY</h4><p><span class="reading"><span id="hbal"></span> &percnt;</span></p><p class="packet">Time <span id="timebal"></span></p>
</div>
</div>
<p></p>
<p></p>
<p></p>
<div class="top2">
<nav id="navigation3"><a href="informtabl5.html" title="главное меню">таблица данных за сутки</a></nav>
</div>
<p></p>
<p></p>
<p></p>
<div class="contentgraf">
<canvas id="line-chart" width="800" height="350"></canvas>
</div>
</div>
</div>
<p class="packet"> <span id="tdata"></span></p>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<script type="text/javascript">
let ind;
let w=[];
var tabl=0;
var webSocket;
connectWebSocket();
function connectWebSocket() {
webSocket = new WebSocket('ws://' + window.location.hostname + '/ws');
webSocket.onopen = function(event) {//реакция на подключение вебсекета
console.log('WebSocket connected');
};
webSocket.onmessage = function(event) {//реакция на данные
var tabd=event.data;
if(isJsonString(tabd)==1)
{var data = JSON.parse(event.data);//
if (data.id === '77') {
};
if (data.id === '2') {
console.log("readings", event.data);
document.getElementById("tbal").innerHTML = data.tbal;
document.getElementById("hbal").innerHTML = data.hbal;
document.getElementById("batbal").innerHTML = data.batbal;
document.getElementById("timebal").innerHTML = data.timebal;
};
}
else
{
if(tabl==0)
{
console.log("readings", event.data);
re = event.data.split("\n");
// console.log(re);
var data=[];
tabl=1;
for(var i = 0; i < re.length-1; i++) {
data[i] = JSON.parse(re[i]);
console.log("data", data);
}
data.forEach(function(object) {
console.log(object.Time);
console.log(object.temperatura);
console.log(object.humidity);
var indtemp;// инд для опред кол ва цифр в температуре
var zn; //знак темп - или его нет те +
var indold= ind;//запоминаем предыдущий индекс чтоб не повторять данные
console.log(object.Time.indexOf(":"));
if(object.Time.indexOf(":")==1)//считаем кол-во цифр до : (одна или две ) 1:20 и 19:20 часы это индекс массива данных
{ind = Number(object.Time.substr(0, 1));//если одна то 1
}
else
{console.log(object.Time.substr(0, 2)); // если две то 19
ind= Number(object.Time.substr(0, 2));
}
//console.log(ind);
if(ind!=indold)
{
if(ind>indold+1)
{ var del=ind-indold;
for (var i = indold; i < ind; i++) {
console.log(i);
w[i]=w[indold];
// console.log("Notw[ind]=");
// console.log(w[ind]);
}
}
//console.log(object.temperatura.indexOf("."));
indtemp=Number(object.temperatura.indexOf("."));//кол-во цифр до запятой
if(object.temperatura.substr(0, 1)!="-")
{
if(indtemp==2)//если до запятой 2 знака
{w[ind]=Number(object.temperatura.substr(0, 2))*10+Number(object.temperatura.substr(3, 1));
w[ind]=w[ind]/10;
console.log("w[ind]=");
console.log(w[ind]);
}
if(indtemp==1)//если до запятой 1 знак
{w[ind]=Number(object.temperatura.substr(0, 1))*10+Number(object.temperatura.substr(2, 1));
w[ind]=w[ind]/10;
// console.log("w[ind]=");
//console.log(w[ind]);
}
}
else//если температура отр
{if(indtemp==3)//если до запятой 3 знака -10.3
{w[ind]=Number(object.temperatura.substr(1, 2))*10+Number(object.temperatura.substr(4, 1));
w[ind]=(-1*w[ind])/10;
// console.log("w[ind]=");
// console.log(w[ind]);
}
if(indtemp==2)//если до запятой 1 знак -2.3
{w[ind]=Number(object.temperatura.substr(1, 1))*10+Number(object.temperatura.substr(3, 1));
w[ind]=(-1*w[ind])/10;
// console.log("w[ind]=");
// console.log(w[ind]);
}
}
}
});
new Chart(document.getElementById("line-chart"), {
type: 'line',
data: {
labels: ["00:00","01:00","02:00","03:00","04:00","05:00","06:00","07:00","08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00","18:00","19:00","20:00","21:00","22:00","23:00"],
datasets: [{
data: [w[0],w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9],w[10],w[11],w[12],w[13],w[14],w[15],w[16],w[17],w[18],w[19],w[20],w[21],w[22],w[23],],
label: "Балкон ",
borderColor: "rgb(62,149,205)",
backgroundColor: "rgba(65,138,191,0.48)",
fill: true
//fill: false
}]},
options: {
title: {
display: true,
text: 'График суточной температуры'
}
}
});
}
}
};
webSocket.onclose = function(event) {//реакция на отключение вебсекета
console.log('WebSocket disconnected');
var messageElement = document.getElementById('message');
messageElement.innerHTML ='WebSocket disconnected. Reconnecting...';
setTimeout(connectWebSocket, 2000);
setTimeout(function() { messageElement.innerHTML = ''; }, 5000);
};
webSocket.onerror = function(event) {
console.error('WebSocket error:', event);
};
}
function isJsonString(str) {//проверка строки на json
try {
JSON.parse(str);
} catch (e) {
return false;
}
console.log("isJsonString", true);
return true;
}
</script>
</body>
</html>