| <!DOCTYPE html>
|
| <html>
|
| <head>
|
|
|
| <title>Пеллетная горелка</title>
|
| <meta name="keywords" content="" >
|
| <meta name="description" content="" >
|
| <meta name="viewport" content="width=device-width, initial-scale=1.0" >
|
|
|
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
|
|
|
| <link href="style/new.css" rel="stylesheet">
|
| <link href="style/range.css" rel="stylesheet">
|
| <script type="text/javascript" src="js/jquery-3.2.0.min.js"></script>
|
|
|
| <script type="text/javascript" src="js/jquery.flot.min.js"></script>
|
| <script type="text/javascript" src="js/jquery.flot.time.min.js"></script>
|
|
|
| <script type="text/javascript">
|
| var currentDate = new Date();
|
| var unixdate = currentDate.getTime();
|
| var time_zone = (new Date().getTimezoneOffset()/60)*(-1);
|
| var dateoffset = time_zone*60*60*1000;
|
| var intval = unixdate + dateoffset;
|
| var secs = 0;
|
| var timelapseflag = 1;
|
|
|
| var iv = 1;
|
| var v1 = [];
|
| var t1 = [];
|
| var p1 = [];
|
| var m1 = [];
|
| var m2 = [];
|
| var time = 0;
|
| var opop;
|
| var diagram_enable = 0;
|
|
|
|
|
| var screen = $(window).width();
|
| var updsecret = 0;
|
| var powersecret = 0;
|
| var val_flag = 0;
|
| var connection_mode = 0;
|
|
|
| var pmaxH,pmaxL,pminH,pminL;
|
| var tecoset;
|
| var toset;
|
|
|
|
|
| var updateerrors = ["Обновление прошло успешно", "Отсутствует соединение", "Не удалось подключится к серверу", "Ошибка файла прошивки", "Ошибка MD5", "MD5 не совпадает", "Передача прервана", "Ошибка конфигурации сервера"];
|
|
|
| var modes = ["Ожидание", "Рожиг", "Нагрев", "Стоп", "Электрокотел", "Дрова", "Ожид. Темпер.", "Стоп по темпер."]
|
|
|
| function grafik() {
|
|
|
| var plot = $.plot("#diagram", [
|
| { data: v1, label: 'ПЛАМЯ' },
|
| { data: t1, label: 'ТК' },
|
| { data: p1, label: 'ТО' },
|
| { data: m1, label: 'МОЩНОСТЬ' },
|
| { data: m2, label: 'ВОЗДУХ' }
|
| ] , {
|
| series: {
|
| shadowSize: 0 // Drawing is faster without shadows
|
| },
|
| yaxis: {
|
| min: 0,
|
| max: 180
|
| },
|
| xaxis: {
|
| mode: "time",
|
| show: true
|
| }
|
|
|
|
|
| });
|
| // plot.draw();
|
| }
|
|
|
| function timelapse() {
|
| secs = 3600;
|
| secs = secs * 60;
|
| timelapseflag == 2
|
| }
|
|
|
| function timelapse_start() {
|
| secs = 10;
|
| secs = secs * 60;
|
| timelapseflag == 2
|
| }
|
|
|
| function timelapsecontrol() {
|
| $("#v2").html(secs);
|
| $("#v1").html(v1.length);
|
| opop = parseInt(v1.length);
|
| if (opop >= secs) {
|
| v1 = v1.slice(1);
|
| t1 = t1.slice(1);
|
| p1 = p1.slice(1);
|
| m1 = m1.slice(1);
|
| m2 = m2.slice(1);
|
| }
|
| }
|
|
|
| function clearrr() {
|
| t1 = [];
|
| p1 = [];
|
| v1 = [];
|
| m1 = [];
|
| m2 = [];
|
| }
|
|
|
|
|
|
|
| function tune(pos,action) {
|
| var tpwr;
|
| if (pos == 'pmax') {
|
| if (action == 'plus') { tpwr = parseInt($('#showmaxpower').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#showmaxpower').val()) - 1; }
|
| if (action == 'plus' && tpwr >= pmaxH) { tpwr = pmaxH; }
|
| if (action == 'minus' && tpwr <= pmaxL) { tpwr = pmaxL; }
|
| $('#showmaxpower').val(tpwr);
|
| $('[id = targetmaxpower]').html(tpwr);
|
| $("#pminH").html($("#showmaxpower").val()-1);
|
| }
|
| if (pos == 'pmin') {
|
| if (action == 'plus') { tpwr = parseInt($('#showminpower').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#showminpower').val()) - 1; }
|
| if (action == 'plus' && tpwr >= pminH) { tpwr = pminH; }
|
| if (action == 'minus' && tpwr <= pminL) { tpwr = pminL; }
|
| $('#showminpower').val(tpwr);
|
| $('[id = targetminpower]').html(tpwr);
|
| }
|
| if (pos == 'to') {
|
| if (action == 'plus') { tpwr = parseInt($('#tobr').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#tobr').val()) - 1; }
|
| if (action == 'plus' && tpwr >= 80) { tpwr = 80; }
|
| if (action == 'minus' && tpwr <= 30) { tpwr = 30; }
|
| $('#tobr').val(tpwr);
|
| $('.tobr').html(tpwr);
|
| $("#tecomax").html($("#tobr").val());
|
| }
|
| if (pos == 'teco') {
|
| if (action == 'plus') { tpwr = parseInt($('#teco').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#teco').val()) - 1; }
|
| if (action == 'plus' && tpwr >= toset) { tpwr = toset; }
|
| if (action == 'minus' && tpwr <= 10) { tpwr = 10; }
|
| $('#teco').val(tpwr);
|
| $('.teco').html(tpwr);
|
| }
|
| if (pos == 'elkotel') {
|
| if (action == 'plus') { tpwr = parseInt($('#timetoel').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#timetoel').val()) - 1; }
|
| if (action == 'plus' && tpwr >= 23) { tpwr = 23; }
|
| if (action == 'minus' && tpwr <= 0) { tpwr = 0; }
|
| $('#timetoel').val(tpwr);
|
| $('.timetoel').html(tpwr);
|
| }
|
| if (pos == 'pelkotel') {
|
| if (action == 'plus') { tpwr = parseInt($('#timetopel').val()) + 1; }
|
| if (action == 'minus') { tpwr = parseInt($('#timetopel').val()) - 1; }
|
| if (action == 'plus' && tpwr >= 23) { tpwr = 23; }
|
| if (action == 'minus' && tpwr <= 0) { tpwr = 0; }
|
| $('#timetopel').val(tpwr);
|
| $('.timetopel').html(tpwr);
|
| }
|
|
|
| }
|
|
|
| function update_fw() {
|
| if (connection_mode == 0) {
|
| $("#famupderror").show();
|
| $("#updstatuserror").append("В режиме точки доступа интернета быть не может!");
|
| return;
|
| }
|
|
|
| if (confirm("Подтверждаете выполнение действий?")) { $("#famupdstatus").show(); }
|
| else { return; }
|
|
|
| $.get( "/d.cgi", { updfw: "1" } );
|
| }
|
|
|
| function showparam(p) {
|
| param = $("#" + p).val();
|
| $("." + p).text(param);
|
|
|
| $('#teco').attr( {"max" : $("#tobr").val() });
|
| $("#tecomax").html($("#tobr").val());
|
|
|
| $('#showminpower').attr( {"max" : ($("#showmaxpower").val()-1) });
|
| $("#pminH").html($("#showmaxpower").val()-1);
|
|
|
|
|
| }
|
|
|
| function wifivision(pr) {
|
| switch(pr) {
|
| case 'default':
|
| $("#wifidefault").slideDown('fast');
|
| $("#wifidhcp").slideUp('fast');
|
| $("#wifistatic").slideUp('fast');
|
| break;
|
| case 'dhcp':
|
| $("#wifidefault").hide();
|
| $("#wifidhcp").slideDown('fast');
|
| $("#wifistatic").hide();
|
| break;
|
| case 'static':
|
| $("#wifidefault").hide();
|
| $("#wifidhcp").hide();
|
| $("#wifistatic").slideDown('fast');
|
| break;
|
| }
|
| }
|
|
|
| function control(puskstop) {
|
| if (confirm("Подтверждаете выполнение действий?")) {
|
| if (puskstop == 'pusk') { $.get( "/d.cgi", { v: "49", p: "63" } ); }
|
| if (puskstop == 'stop') { $.get( "/d.cgi", { v: "49", p: "64" } ); }
|
| } else { return; }
|
| }
|
|
|
| function refreshdata() {
|
| $.ajax({
|
| url: "status.xml",
|
| cache: "false",
|
| dataType: "xml",
|
| success: function(xml) {
|
| var currentDate = new Date();
|
| var unixdate = currentDate.getTime();
|
| var time_zone = (new Date().getTimezoneOffset()/60)*(-1);
|
| var dateoffset = time_zone*60*60*1000;
|
| var intval = unixdate + dateoffset;
|
|
|
| var alarmM100 = parseInt($(xml).find('val15').text());
|
| if(alarmM100==22) {alert("Работа невозможна! Пожалуйста проведите взвешивание пеллет.")}
|
|
|
| var tempkotladec = parseInt($(xml).find('val6').text());
|
|
|
| var tk = parseInt($(xml).find('val0').text()); // Получаем температуру котла
|
| if(tk==186) {
|
| $('#tkscaletext').html("Err"); // загоняем рядом со шкалой
|
| $("#tkval").html("Ошибка датчика"); // загоняем на страничку
|
| }
|
| else {
|
| $('#tkscaletext').html(tk + "°"); // загоняем рядом со шкалой
|
| $("#tkval").html(tk + "." + tempkotladec); // загоняем на страничку
|
| }
|
| var tktext = (100 - tk) * 2;
|
| var tmpk = 100 - tk;
|
| $('#tklevel').height(tmpk + "%"); // animate({"height":tmpk + "%"}, 500); // загоняем в шкалу **********
|
| $('#tkscaletext').css({"top":tktext - 10}, 500);
|
|
|
| var tempobratdec = parseInt($(xml).find('val7').text());
|
|
|
| var to = parseInt($(xml).find('val1').text()); // Получаем температуру обратки
|
| if(to==186) {
|
| $('#toscaletext').html("Err"); // загоняем рядом со шкалой
|
| $("#toval").html("Ошибка датчика"); // загоняем на страничку
|
| }
|
| else {
|
| $('#toscaletext').html(to + "°"); // загоняем рядом со шкалой
|
| $("#toval").html(to + "." + tempobratdec); // загоняем на страничку
|
| }
|
| var totext = (100 - to) * 2;
|
| var tmpo = 100 - to;
|
| $('#tolevel').height(tmpo + "%"); // animate({"height":tmpo + "%"}, 500); // загоняем в шкалу **************
|
| $('#toscaletext').css({"top":totext - 10}, 500);
|
|
|
| var energydec = parseInt($(xml).find('val10').text());
|
|
|
| var energy = parseInt($(xml).find('val2').text());
|
| $('#energy').html(energy+"."+energydec);
|
|
|
| var rashod = parseInt($(xml).find('val3').text()); // расход
|
| var rashodr = rashod / 10; // расход
|
| $("#rashod").html(rashodr); // загоняем на страничку
|
|
|
| var flame = parseInt($(xml).find('val4').text()); // Получаем значение пламени!!
|
| $('#flamescaletext').html(flame); // загоняем рядом со шкалой
|
|
|
| $('#flame').html(flame); // загоняем на страничку
|
| var flamelevel = flame / 1.8;
|
| flamelevel = 100 - flamelevel;
|
| var fff = flamelevel * 2;
|
| $('#flamelevel').height(flamelevel+"%"); // animate({"height":flamelevel + "%"}, 500); // загоняем в шкалу
|
| $('#flamescaletext').css({"top":fff - 10}, 500);
|
|
|
| var mode = parseInt($(xml).find('val5').text());
|
| $('#mode').html(modes[mode]);
|
|
|
| toset = parseInt($(xml).find('val8').text());
|
| $('#toset').html(toset); // Заданная номинальная температура
|
| $('#toustavkatext').html(toset);
|
|
|
|
|
|
|
| var tmoset = (100 - toset) * 2;
|
| $('#toustavka').css({"top":tmoset}, 500); // загоняем в шкалу
|
| $('#toustavkatext').css({"top":tmoset - 10}, 500); // загоняем в шкалу
|
|
|
| var vozduh = parseInt($(xml).find('val11').text());
|
|
|
| tecoset = parseInt($(xml).find('val9').text());
|
| $('#tecoset').html(tecoset); // Заданная минимальная температура
|
| $('#tecoustavkatext').html(tecoset); // Заданная минимальная температура рядом со шкалой
|
| var tmecoset = (100 - tecoset) * 2;
|
| $('#tecoustavka').css({"top":tmecoset}, 500); // загоняем в шкалу
|
| $('#tecoustavkatext').css({"top":tmecoset - 10}, 500); // загоняем в шкалу
|
|
|
|
|
| var pwmin = parseInt($(xml).find('val13').text());
|
| $('[id = pwmin]').html(pwmin);
|
| $('[id = pwmin1]').html(pwmin);
|
|
|
| var pwmax = parseInt($(xml).find('val14').text());
|
| $('[id = pwmax]').html(pwmax);
|
| $('[id = pwmax1]').html(pwmax);
|
|
|
| var timetoelkotel = parseInt($(xml).find('val45').text());
|
| $('#timetoelkotel').html(timetoelkotel);
|
| if (timetoelkotel == 24) { $('#timetoelkotel').html("Нет");} // время сброшено
|
|
|
| var timetopelkotel = parseInt($(xml).find('val46').text());
|
| $('#timetopelkotel').html(timetopelkotel);
|
| if (timetopelkotel == 24) { $('#timetopelkotel').html("Нет");} // время сброшено
|
|
|
| connection_mode = parseInt($(xml).find('val49').text());
|
| $("#point_"+connection_mode).css( {"box-shadow" : "0px 0px 3px #FF000C"} );
|
|
|
| var gsmsignal = parseInt($(xml).find('val51').text());
|
| $('#gsmsignal').html(gsmsignal);
|
|
|
| var pelletbalance = parseInt($(xml).find('val52').text());
|
| $('#pelletbalance').html(pelletbalance);
|
| if (pelletbalance == 205) { $('#pelletbalance').html("Не используется"); } // отсутствие
|
| else { $('#scaltoplivo').show(); $('#toplivo').show();}
|
|
|
| if (pelletbalance == 200) { $('#pelletbalance').html("Ошибка"); pelletbalance = 0; } // ошибка
|
|
|
| $('#pelletleveltext').html(pelletbalance);
|
| pelletbalance = (100 - pelletbalance) * 2;
|
| $('#pelletlevel').height(pelletbalance); // animate({"height":pelletbalance}, 500); // загоняем в шкалу **************
|
| $('#pelletleveltext').css({"top":pelletbalance - 10}, 500);
|
|
|
| var pelletlevel_min = parseInt($(xml).find('val53').text());
|
| $('#pelletlevel_min').html(pelletlevel_min);
|
| $('#pelletustavkatext').html(pelletlevel_min);
|
| pelletlevel_min = (100 - pelletlevel_min) * 2;
|
| $('#pelletustavka').css({"top":pelletlevel_min}, 500);
|
| $('#pelletustavkatext').css({"top":pelletlevel_min - 10}, 500);
|
|
|
| var startstop = parseInt($(xml).find('val54').text());
|
| if(startstop == 0) {$('#startstop').html("Нет");}
|
| else {$('#startstop').html("Да");}
|
|
|
| var tlotok = parseInt($(xml).find('val55').text());
|
| if(tlotok==186) {
|
| $('#tlotok').html("Ошибка датчика");
|
| }
|
| else {
|
| if(tlotok==150) {$('#tlotok').html("Не используется");}
|
| else {$('#tlotok').html(tlotok);}
|
| }
|
|
|
| var wifisignal = parseInt($(xml).find('val56').text());
|
| $('#wifisignal').html(wifisignal);
|
|
|
| var dns1 = $(xml).find('val57').text();
|
| $('#dns1').html(dns1);
|
|
|
| var myssid = $(xml).find('val58').text();
|
| $('#myssid').html(myssid);
|
|
|
| var mac = $(xml).find('val59').text();
|
| $('#mac').html(mac);
|
|
|
| var updstatus = $(xml).find('val60').text();
|
| $('#updstatus').html(updstatus);
|
|
|
| pmaxH = parseInt($(xml).find('val61').text());
|
| pmaxL = parseInt($(xml).find('val62').text());
|
| pminH = parseInt($(xml).find('val63').text());
|
| pminL = parseInt($(xml).find('val64').text());
|
|
|
| if (val_flag == 0) {
|
| $('#pmaxH').html(pmaxH); $('#showmaxpower').attr( {"max" : pmaxH });
|
| $('#pmaxL').html(pmaxL); $('#showmaxpower').attr( {"min" : pmaxL });
|
|
|
| $('#pminH').html(pminH); $('#showminpower').attr( {"max" : pminH });
|
| $('#pminL').html(pminL); $('#showminpower').attr( {"min" : pminL });
|
|
|
| $("#tecomax").html(toset); // в настройках котла текст о максимальной экономичной т toset
|
| //$('#toustavkatext').html(toset); // Заданная номинальная температура рядом со шкалой
|
| $("#teco").attr({ "max" : toset}) // задаем предел для минимальной уставки!!!!
|
|
|
| $('[id = targetmaxpower]').html(pwmax);
|
| $('[name = targetmaxpower]').html(pwmax);
|
| $('[id = targetminpower]').html(pwmin);
|
| $('[name = targetminpower]').html(pwmin);
|
| $('#showminpower').val(pwmin);
|
| $('#showmaxpower').val(pwmax);
|
| $('#tobr').val(toset);
|
| $('.tobr').html(toset);
|
| $('#teco').val(tecoset);
|
| $('.teco').html(tecoset);
|
| $('#timetoel').val(timetoelkotel);
|
| $('#timetopel').val(timetopelkotel);
|
| $('.timetoel').html(timetoelkotel);
|
| if (timetoelkotel == 24) { $('.timetoel').html("Нет");} // время сброшено
|
| $('.timetopel').html(timetopelkotel);
|
| if (timetopelkotel == 24) { $('.timetopel').html("Нет");} // время сброшено
|
| val_flag = 1;
|
| }
|
|
|
| var errorsearch = updstatus.indexOf("Error=");
|
| if (errorsearch == 0) {
|
| var lght = updstatus.length;
|
| lght = lght - 1;
|
| var er = updstatus.charAt(lght);
|
| // alert(er);
|
| }
|
|
|
| $('#updstatus').html(updateerrors[er]);
|
|
|
| if (diagram_enable == 1) {
|
| var pushed = v1.push([intval, flame]);
|
| var pushed2 = t1.push([intval, tk]);
|
| var pushed3 = p1.push([intval, to]);
|
| var pushed4 = m1.push([intval, energy]);
|
| var pushed5 = m2.push([intval, vozduh]);
|
| grafik();
|
| }
|
|
|
| }
|
|
|
| });
|
| }
|
|
|
| function set_wifi(modewifi) { // получаем данные формы и формируем запрос
|
| var regim = modewifi;
|
|
|
| switch(modewifi) {
|
| case 'default':
|
| var datasend = '/d.cgi?regim=tochka';
|
| break;
|
| case 'dhcp':
|
| var datasend = '/d.cgi?regim=routerdynamic&id='+$("#ssid2").val()+'&passw='+$("#passwd2").val();
|
| break;
|
| case 'static':
|
| var fullip = $("#ip1").val()+'.'+$("#ip2").val()+'.'+$("#ip3").val()+'.'+$("#ip4").val();
|
| var fullmask = $("#mask1").val()+'.'+$("#mask2").val()+'.'+$("#mask3").val()+'.'+$("#mask4").val();
|
| var fullgw = $("#gateway1").val()+'.'+$("#gateway2").val()+'.'+$("#gateway3").val()+'.'+$("#gateway4").val();
|
|
|
| if ($("#gateway1").val() == '' || $("#gateway2").val() == '' || $("#gateway3").val() == '' || $("#gateway4").val() == '' )
|
| { var req = ''; }
|
| else {
|
| var req = '&gateway='+fullgw;
|
| }
|
|
|
| var datasend = '/d.cgi?regim=routerstatic&id='+$("#ssid3").val()+'&passw='+$("#passwd3").val()+'&ip='+fullip+'&mask='+fullmask+req;
|
| break;
|
| }
|
|
|
| if (confirm("Подтверждаете выполнение действий?")) {
|
| alert("Применение параметров. Выполнение может занять до 2 минут.") } else { return; }
|
|
|
| // alert(datasend);
|
| $.get(datasend);
|
| }
|
|
|
| function settings(typeact,sets) {
|
| var cact = 0;
|
| var newtemp = 0;
|
| var ctemp = 0;
|
| if (sets == 'temp') {
|
| if (typeact == 'max') {
|
| cact = '56';
|
| ctemp = parseInt($("#tobr").val());
|
| }
|
|
|
| if (typeact == 'min') {
|
| cact = '57';
|
| ctemp = parseInt($("#teco").val());
|
| }
|
|
|
| newtemp = ctemp + 48;
|
| if (newtemp > 127) { newtemp = 128; }
|
| if (newtemp < 50) { newtemp = 49; }
|
|
|
| $.get( "/d.cgi", { p: cact, v: newtemp } );
|
|
|
| // alert(cact+" "+newtemp);
|
| }
|
|
|
| if (sets == 'elkotel')
|
| {
|
| if (typeact == 'toelkotel') {
|
| var time_elkotel = parseInt($('#timetoel').val());
|
| if (time_elkotel > 24 && time_pelkotel > 24) { time_elkotel = 24; time_pelkotel = 24; }
|
| time_elkotel = time_elkotel + 48;
|
| $.get( "/d.cgi", { v: time_elkotel, p: "93" } ); // Время перехода на электрокотел
|
| }
|
|
|
| if (typeact == 'topelkotel') {
|
| var time_pelkotel = parseInt($('#timetopel').val());
|
| if (time_elkotel > 24 && time_pelkotel > 24) { time_elkotel = 24; time_pelkotel = 24; }
|
| time_pelkotel = time_pelkotel + 48;
|
| $.get( "/d.cgi", { v: time_pelkotel, p: "94" } ); // Время перехода на пеллеты
|
| }
|
|
|
| if (typeact == 'reset') {
|
| $.get( "/d.cgi", { v: "72", p: "93" } );
|
| $.get( "/d.cgi", { v: "72", p: "94" } );
|
| }
|
| }
|
|
|
| if (sets == 'powerset')
|
| {
|
| var pwmin = parseInt($('#showminpower').val());
|
| var pwmax = parseInt($('#showmaxpower').val());
|
| if (typeact == 'pmin') {
|
| var powerset = pwmin + 48;
|
| $.get( "/d.cgi", { v: powerset, p: 61 } ); // установка минимальной мощности
|
| //alert(pwmin);
|
| }
|
|
|
| if (typeact == 'pmax') {
|
| var powerset = pwmax + 48;
|
| $.get( "/d.cgi", { v: powerset, p: 62 } ); // установка максимальной мощности
|
| //alert(pwmax);
|
| }
|
| }
|
| setTimeout(function(){val_flag = 0;}, 2000);
|
| }
|
|
|
|
|
| $(function() {
|
|
|
| if (screen < 5000) { $("#settings").hide(); }
|
| if (screen < 5000) { $("#grafik").hide(); }
|
| if (screen < 5000) { $("#wifi").hide(); }
|
| if (screen < 5000) { $("#gsmwifiblock").hide(); }
|
| if (screen < 5000) { $("#etadpuhide").hide(); }
|
|
|
| $("#showsettings").click(function() {
|
| $("#settings").toggle();
|
| });
|
|
|
| $("#showwifi").click(function() {
|
| $("#wifi").toggle();
|
| });
|
|
|
| $("#showgrafik").click(function() {
|
| $("#grafik").toggle();
|
| });
|
|
|
| $("#showwifistat").click(function() {
|
| $("#gsmwifiblock").toggle();
|
| });
|
|
|
| $("#showpower").click(function() {
|
| $("#powersettings").toggle();
|
| });
|
|
|
| $(".link-week").click(function() {
|
| document.location.href = "week.htm";
|
| });
|
|
|
| $("#updatesecret").click(function() {
|
| updsecret++;
|
| setTimeout(function() {updsecret=0;}, 10000);
|
| if (updsecret == 5) { $(".etadpu").show(); }
|
| });
|
|
|
| $("#powersecret").click(function() {
|
| powersecret++;
|
| setTimeout(function() {powersecret=0;}, 10000);
|
| if (powersecret == 5) { $(".editpower").show(); }
|
| });
|
|
|
| $("#showetadpu").click(function() {
|
| $("#etadpuhide").toggle();
|
| });
|
|
|
|
|
| setTimeout("timelapse_start()", 1000);
|
| setInterval("timelapsecontrol()", 1000);
|
| setInterval("refreshdata()", 1000);
|
|
|
| });
|
|
|
|
|
| </script>
|
|
|
| </head>
|
|
|
|
|
| <body>
|
|
|
|
|
| <div class="wrapper">
|
|
|
| <div class="mainblock">
|
|
|
| <div class="mainstats">
|
| <div class="title-block">
|
| <h3> Состояние котла </h3>
|
| </div>
|
| <div class="knopki">
|
| <div class="inblock">
|
| <button onClick="control('pusk');"> Запустить котел </button>
|
| <button onClick="control('stop');;"> Остановить котел </button>
|
| </div>
|
| </div>
|
|
|
| <div class="inblock" style="display: flex; justify-content: space-between;">
|
| <div>
|
| <ul>
|
| <li> <div class="minititle"> Режим: <span class="value" id="mode">0</span> </div> </li>
|
| <li> <div class="minititle"> Расход: <span class="value" id="rashod">0</span> кг/ч </div></li>
|
| <li> <div class="minititle" id="updatesecret"> Пламя: <span class="value" id="flame">0</span> </div></li>
|
| <li> <div class="minititle"> Мощность: <span class="value" id="energy">0</span> кВт </div></li>
|
| <li> <div class="minititle"> Т-котла: <span class="value" id="tkval">0</span> °C </div></li>
|
| <li> <div class="minititle"> Т-обрат: <span class="value" id="toval">0</span> °C </div></li>
|
|
|
| </ul>
|
| </div>
|
|
|
| <div style="margin-right: 20px;">
|
| <ul>
|
| <li> <div class="minititle" id="powersecret"> Мощность макс.: <span class="value" id="pwmax" >0</span> кВт </div></li>
|
| <li> <div class="minititle"> Мощность мин.: <span class="value" id="pwmin" >0</span> кВт </div></li>
|
| <li> <div class="minititle"> Топливо: <span class="value" id="pelletbalance">0</span> </div> </li>
|
| <li> <div class="minititle"> Топливо/порог: <span class="value" id="pelletlevel_min">0</span> </div> </li>
|
| <li> <div class="minititle"> Старт/Стоп <span class="value" id="startstop">0</span> </div> </li>
|
| <li> <div class="minititle"> Т-лотка: <span class="value" id="tlotok">0</span> °C </div> </li>
|
| </ul>
|
| </div>
|
| </div>
|
|
|
| </div>
|
|
|
| <div class="scalesblock" id="scaless">
|
| <div class="title-block">
|
| <h3> Визуальные показания </h3>
|
| </div>
|
| <div class="inblock" style="display: flex; justify-content: space-between; padding: 5px 10px;">
|
| <div class="minititle"> Ткотла </div>
|
| <div class="minititle"> Тобратка </div>
|
| <div class="minititle"> Пламя </div>
|
| <div class="minititle" id="toplivo"> Топливо </div>
|
| </div>
|
|
|
| <div class="inblock" style="display: flex; justify-content: space-between; padding: 5px 25px;">
|
|
|
| <div class="scalevert bluescale">
|
| <div id="tkscaletext"> </div>
|
| <div id="tklevel" class="scaleinvert"> </div>
|
| </div>
|
|
|
|
|
| <div class="scalevert bluescale">
|
| <div id="toustavka"> </div>
|
| <div id="toustavkatext"> </div>
|
| <div id="tecoustavka"> </div>
|
| <div id="tecoustavkatext"> </div>
|
|
|
| <div id="toscaletext"> </div>
|
| <div id="tolevel" class="scaleinvert"> </div>
|
| </div>
|
|
|
| <div class="scalevert orangescale">
|
| <div id="flamescaletext"> </div>
|
| <div id="flamelevel" class="scaleinvert"> </div>
|
| </div>
|
|
|
| <div class="scalevert greyscale" id="scaltoplivo">
|
| <div id="pelletustavka"> </div>
|
| <div id="pelletustavkatext"> </div>
|
|
|
| <div id="pelletleveltext"> </div>
|
| <div id="pelletlevel" class="scaleinvert" > </div>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| </div>
|
|
|
| <div class="mainblock">
|
|
|
|
|
| <div class="etadpu" style="display: none;">
|
| <div class="title-block" id="showetadpu">
|
| <h3> Обновление ПО Wi-Fi </h3>
|
| </div>
|
|
|
| <div class="inblock" id="etadpuhide">
|
| <p class="oncenter">
|
| <button onClick="update_fw();"> Обновление прошивки </button>
|
| </p>
|
|
|
| <br>
|
|
|
| <div>
|
| <div class="minititle" id="famupdstatus" style="display: none;"><span class="value" id="updstatus"></span></div>
|
| <div class="minititle" id="famupderror" style="display: none;"><span class="value" id="updstatuserror"></span></div>
|
| </div>
|
| </div>
|
| </div>
|
|
|
|
|
| <div class="editpower" style="display: none;">
|
| <div class="title-block" id="showpower">
|
| <h3> Настройка мощности </h3>
|
| </div>
|
|
|
| <div class="inblock" id="powersettings" style="display: none;">
|
| <div class="param">
|
| <div> <p class="minititle"> Максимальная мощность <span class="value" id="pwmax1" ></span> кВт</p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="showmaxpower" id="targetmaxpower" > 0 </span> кВт </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('pmax','minus');"><span id="pmaxL"> 1 </span> кВт </span>
|
| <input type="range" name="targetmaxpower" id="showmaxpower" class="range" oninput="showparam('showmaxpower')">
|
| <span class="minititle greytitle" onclick="tune('pmax','plus');"><span id="pmaxH"> 24 </span> кВт </span>
|
| </p>
|
| </div>
|
|
|
| <div class="param">
|
| <span style="float: right;"> <button onclick="settings('pmin','powerset'); settings('pmax','powerset');"> Применить </button> </span>
|
| <div> <p class="minititle"> Минимальная мощность <span class="value" id="pwmin1" ></span> кВт</p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="showminpower" id="targetminpower" > 0 </span> кВт </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('pmin','minus');"><span id="pminL"> 1 </span>кВт</span>
|
| <input type="range" name="targetminpower" id="showminpower" class="range" oninput="showparam('showminpower')">
|
| <span class="minititle greytitle" onclick="tune('pmin','plus');"><span id="pminH"> 24 </span>кВт</span>
|
| </p>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="editparams">
|
| <div class="title-block" id="showsettings">
|
| <h3> Настройка котла </h3>
|
| </div>
|
|
|
| <div class="inblock" id="settings">
|
|
|
| <div class="param">
|
| <div> <p class="minititle"> Т. обратки: <span class="value" id="toset"></span> °C </p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="tobr"> 0 </span> °C </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('to','minus');"> 10 °C </span>
|
| <input type="range" min="10" max="80" id="tobr" class="range" oninput="showparam('tobr')">
|
| <span class="minititle greytitle" onclick="tune('to','plus');"> 80 °C </span>
|
| </p>
|
|
|
| </div>
|
|
|
| <div class="param">
|
| <span style="float: right;"> <button onclick="settings('min','temp'); settings('max','temp');"> Применить </button> </span>
|
| <div> <p class="minititle"> Т. экономичная: <span class="value" id="tecoset"></span> °C </p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="teco"> 0 </span> °C </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('teco','minus');"> 10 °C </span>
|
| <input type="range" min="10" id="teco" class="range" oninput="showparam('teco')">
|
| <span class="minititle greytitle" onclick="tune('teco','plus');"> <span id="tecomax">0</span>°C</span></p>
|
| </div>
|
|
|
|
|
| <div class="param">
|
| <div> <p class="minititle"> Переход на электрокотел в <span class="value" id="timetoelkotel"></span> ч.</p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="timetoel"> 0 </span> ч. </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('elkotel','minus');"> 0 ч </span>
|
| <input type="range" min="0" max="23" id="timetoel" class="range" oninput="showparam('timetoel')">
|
| <span class="minititle greytitle" onclick="tune('elkotel','plus');"> 23 ч </span>
|
| </p>
|
| </div>
|
|
|
| <div class="param">
|
| <span style="float: right;"> <button onclick="settings('topelkotel','elkotel'); settings('toelkotel','elkotel');"> Применить </button> </span>
|
| <div> <p class="minititle"> Переход на пеллеты в <span class="value" id="timetopelkotel"></span> ч.</p> </div>
|
| <div style="margin-top: 2px;"> <img src="img/arrow.png" alt="Pic" style="vertical-align: middle;" >
|
| <p class="minititle"> <span class="timetopel"> 0 </span> ч. </p> </div>
|
| <p class="oncenter">
|
| <span class="minititle greytitle" onclick="tune('pelkotel','minus');"> 0 ч </span>
|
| <input type="range" min="0" max="23" id="timetopel" class="range" oninput="showparam('timetopel')">
|
| <span class="minititle greytitle" onclick="tune('pelkotel','plus');"> 23 ч </span>
|
| </p>
|
| <p class="oncenter"><button onclick="settings('reset','elkotel');"> Сбросить время перехода на электрокотел </button></p>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="wifi">
|
| <div class="title-block" id="showwifi">
|
| <h3> Настройка Wi-Fi </h3>
|
| </div>
|
|
|
| <div class="inblock" id="wifi">
|
| <div class="wifi-connector">
|
| <div class="point" id="point_0" onClick="wifivision('default')">
|
| <p class="oncenter"> <img src="img/access_point2.jpg" alt="Pic" > </p>
|
| <p> Точка доступа </p>
|
| </div>
|
| <div class="point" id="point_1" onClick="wifivision('dhcp')">
|
| <p class="oncenter"> <img src="img/access_point3.jpg" alt="Pic" > </p>
|
| <p > Роутер (DHCP) </p>
|
| </div>
|
| <div class="point" id="point_2" onClick="wifivision('static')">
|
| <p class="oncenter"> <img src="img/access_point3.jpg" alt="Pic" > </p>
|
| <p> Роутер (STATIC) </p>
|
| </div>
|
| </div>
|
|
|
| <div class="inblock" id="wifidefault">
|
| <br>
|
| <p> <button onClick="set_wifi('default');"> Применить </button> </p>
|
| </div>
|
|
|
| <div class="inblock" id="wifidhcp">
|
| <p style='font-size: 12px;'> Идентификатор Wi-Fi сети (SSID) </p>
|
| <p style="display: block; margin-bottom: 5px;" id="ssidr">
|
| <input type="text" name="id" id="ssid2" class="inputs"> </p>
|
|
|
| <p style='font-size: 12px;'> Пароль роутера (с учетом регистра) </p>
|
| <p style="display: block; margin-bottom: 5px;" id="passwdr">
|
| <input type="text" name="passw" id="passwd2" class="inputs"> </p>
|
| <br>
|
| <p> <button onClick="set_wifi('dhcp');"> Применить </button> </p>
|
| </div>
|
|
|
| <div class="inblock" id="wifistatic">
|
|
|
| <p style='font-size: 12px;'> Идентификатор Wi-Fi сети (SSID) </p>
|
| <p style="display: block; margin-bottom: 5px;" id="ssids">
|
| <input type="text" name="id" id="ssid3" class="inputs"> </p>
|
|
|
| <p style='font-size: 12px;'> Wi-Fi пароль роутера (с учетом регистра)</p>
|
| <p style="display: block; margin-bottom: 5px;" id="passwds">
|
| <input type="text" name="passw" id="passwd3" class="inputs"> </p>
|
|
|
| <div style="text-align: left;">
|
| <p style="display: block; margin-bottom: 5px;" id="ip">
|
| <input type="number" min=0 max=255 style="width: 35px;" name="ip1" id="ip1"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="ip2" id="ip2"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="ip3" id="ip3"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="ip4" id="ip4">
|
| IP адрес
|
| </p>
|
|
|
| <p style="display: block; margin-bottom: 5px;" id="mask">
|
| <input type="number" min=0 max=255 style="width: 35px;" name="mask1" id="mask1" value='255'> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="mask2" id="mask2" value='255'> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="mask3" id="mask3" value='255'> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="mask4" id="mask4" value='0'>
|
| Маска подсети
|
| </p>
|
|
|
| <p style="display: block; margin-bottom: 5px;" id="gateway">
|
| <input type="number" min=0 max=255 style="width: 35px;" name="gateway1" id="gateway1"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="gateway2" id="gateway2"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="gateway3" id="gateway3"> .
|
| <input type="number" min=0 max=255 style="width: 35px;" name="gateway4" id="gateway4">
|
| Шлюз
|
| </p>
|
| </div>
|
| <br>
|
| <p> <button onClick="set_wifi('static');"> Применить </button> </p>
|
| </div>
|
|
|
| </div>
|
|
|
|
|
| </div>
|
| </div>
|
|
|
|
|
| <div class="mainblock">
|
|
|
| <div class="weekset">
|
| <div class="title-block">
|
| <h3 style="background: #346B43;" class="link-week"> Недельный график ... </h3>
|
| </div>
|
| </div>
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| <div class="wifigsm" >
|
| <div class="title-block" id="showwifistat">
|
| <h3> Состояние Wi-Fi / GSM </h3>
|
| </div>
|
|
|
| <div class="inblock" id="gsmwifiblock">
|
| <ul>
|
| <li>
|
| <div class="minititle"> Уровень сигнала GSM модуля: <span class="value" id="gsmsignal">0</span>% </div>
|
| </li>
|
|
|
| <li>
|
| <div class="minititle"> Уровень сигнала Wi-Fi модуля: <span class="value" id="wifisignal">0</span> </div>
|
| </li>
|
|
|
| <li>
|
| <div class="minititle"> SSID: <span class="value" id="myssid"> </span> </div>
|
| </li>
|
|
|
| <li>
|
| <div class="minititle"> 1DNS-Server: <span class="value" id="dns1"> </span> </div>
|
| </li>
|
|
|
| <li>
|
| <div class="minititle"> MACADDR: <span class="value" id="mac"> </span> </div>
|
| </li>
|
|
|
| <li>
|
| <div class="minititle"> Версия веб оболочки: 3.0 </div>
|
| </li>
|
| </ul>
|
| </div>
|
|
|
| </div>
|
|
|
| </div>
|
|
|
|
|
| <div class="mainblock">
|
|
|
|
|
|
|
|
|
| <div class="diagram">
|
| <div class="title-block" onclick="diagram_enable = 1;">
|
| <h3> Диаграмма </h3>
|
| </div>
|
|
|
| <div class="inblock" id="diagram" style="height: 300px;">
|
| </div>
|
| </div>
|
|
|
| </div>
|
|
|
| </div>
|
|
|
|
|
|
|
| </body>
|
|
|
|
|
|
|
| </html> |