Skip to content

Commit 30df788

Browse files
committed
more stability
1 parent a8f86d9 commit 30df788

File tree

15 files changed

+227
-156
lines changed

15 files changed

+227
-156
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,6 @@ IP адрес только автоматический. Не вижу смыс
126126
- Настройки разбиты на две части, отдельно настройки часов, отдельно telegram, теперь они в разделе "охрана".
127127
- Добавлены ограничения на время работы матрицы от аккумулятора, отключены настройки с кнопки во время работы от аккумулятора, добавлена возможность установить время без интернета.
128128
- Добавлена возможность подключать внешние датчики.
129+
- Улучшена стабильность работы будильника
129130

130131
# Слава Украине!

data/about.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<div>об этих часах</div>
1616
</div>
1717
<div class="content">
18+
<a href="sysinfo.html">Системная информация</a>
1819
<p>
1920
Часы на основе матрицы на адресных светодиодах. <a target="_blank" rel="noopener" href="https://github.com/SerhiiLe/clock-esp8266-ws2812b">(github)</a>.
2021
Создано по мотивам проекта <a target="_blank" rel="noopener" href="https://github.com/vvip-68/GyverMatrixWiFi/">GyverMatrixWiFi</a>.
@@ -60,7 +61,6 @@
6061
</ol>
6162
Долгое нажатие - справка. Она контекстная, зависит от текущего режима.
6263
</p>
63-
<a href="sysinfo.html">Системная информация</a>
6464
</div>
6565
<div class="footer">
6666
<a href="index.html">

data/alarms.html

Lines changed: 50 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,11 @@
6060
<tr class="sel_days"><td>Воскресенье</td><td><input type="checkbox" name="su" value="1"></td></tr>
6161
<tr>
6262
<td>Мелодия будильника <button onclick="test_ring();return false;" id="ss">проверить</button></td>
63-
<td><input type="number" name="melody" value="1" id="cur" onkeypress="sendTr(event)"> из <span id="col">0</span></td>
63+
<td>
64+
<input type="number" name="melody" value="1" id="track" onkeypress="sendTr(event)" onfocus="fl_allowUpdate=false;" onfocusout="fl_allowUpdate=true;">
65+
из <span id="col">0</span>
66+
<input type="hidden" id="cur" name="cur" value="1">
67+
</td>
6468
</tr>
6569
<tr>
6670
<td colspan="2">
@@ -97,15 +101,27 @@
97101
}
98102
}
99103
var is_play = false;
104+
var fl_allowUpdate = true;
105+
function update_info() {
106+
ajaxRequest("play","POST","p=0", function(ajaxResp) {
107+
const a = ajaxResp.responseText.split(":");
108+
if( a[3] == 0 && is_play ) test_ring();
109+
if(fl_allowUpdate) show(a);
110+
if( a[1] == 0 && ! is_play ) setTimeout(update_info, 2000);
111+
}, dummy);
112+
if(is_play) setTimeout(update_info, 2000);
113+
}
100114
function test_ring() {
101115
if(is_play) {
102116
$g("ss").innerHTML="проверить";
103117
send(6);
104118
is_play=false;
105119
} else {
120+
$g("cur").value = $g("track").value;
106121
$g("ss").innerHTML="стоп";
107122
send(3);
108123
is_play=true;
124+
setTimeout(update_info, 5000);
109125
}
110126
}
111127
function sendTr(e) {
@@ -142,36 +158,40 @@
142158
var doc = [];
143159
function start() {
144160
if (typeof ajaxRequest !== "undefined") {
145-
doc = JSON.parse(httpGet("texts.json"));
146-
$g("txt").appendChild($ee("option","_нет_",{value:-1}));
147-
for(var i=0; i<doc.length; i++)
148-
$g("txt").appendChild($ee("option", doc[i].t.length>30 ? doc[i].t.substring(0,17)+"..."+doc[i].t.substring(doc[i].t.length-10): doc[i].t, {value:i}));
149-
doc = JSON.parse(httpGet("alarms.json"));
150-
var li = $g("list_items");
151-
for(var i=0; i<doc.length; i++) {
152-
var sp1 = $ee("span",print_time(i),{class:"big"});
153-
var sp2 = $e("span",{class:"small"});
154-
if(doc[i].s & 128) {
155-
sp2.innerHTML = " Каждый день";
156-
} else if(doc[i].s & 256) {
157-
var days = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
158-
var bit = 2;
159-
for(var t=1; t<7; t++) {
160-
if(doc[i].s & bit) sp2.innerHTML += " "+days[t];
161-
bit = bit << 1;
161+
ajaxRequest("texts.json","GET",null, function(ajaxResp) {
162+
doc = JSON.parse(ajaxResp.responseText);
163+
$g("txt").appendChild($ee("option","_нет_",{value:-1}));
164+
for(var i=0; i<doc.length; i++)
165+
$g("txt").appendChild($ee("option", doc[i].t.length>30 ? doc[i].t.substring(0,17)+"..."+doc[i].t.substring(doc[i].t.length-10): doc[i].t, {value:i}));
166+
ajaxRequest("alarms.json","GET",null, function(ajaxResp) {
167+
doc = JSON.parse(ajaxResp.responseText);
168+
var li = $g("list_items");
169+
for(var i=0; i<doc.length; i++) {
170+
var sp1 = $ee("span",print_time(i),{class:"big"});
171+
var sp2 = $e("span",{class:"small"});
172+
if(doc[i].s & 128) {
173+
sp2.innerHTML = " Каждый день";
174+
} else if(doc[i].s & 256) {
175+
var days = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
176+
var bit = 2;
177+
for(var t=1; t<7; t++) {
178+
if(doc[i].s & bit) sp2.innerHTML += " "+days[t];
179+
bit = bit << 1;
180+
}
181+
if(doc[i].s & 1) sp2.innerHTML += " "+days[0];
182+
} else {
183+
sp2.innerHTML = " Один раз";
184+
}
185+
var fl = doc[i].s & 512;
186+
var td1 = $em("td",[sp1,sp2],{class:(fl?"on":"off"),id:"t"+i,onclick:"show_edit("+i+")"});
187+
var input = $e("input",{type:"checkbox",id:"e"+i,onchange:"toggle_edit("+i+",0)"});
188+
if(fl) input.checked = true;
189+
li.appendChild($em("tr",[td1,$ee("td",input)]));
162190
}
163-
if(doc[i].s & 1) sp2.innerHTML += " "+days[0];
164-
} else {
165-
sp2.innerHTML = " Один раз";
166-
}
167-
var fl = doc[i].s & 512;
168-
var td1 = $em("td",[sp1,sp2],{class:(fl?"on":"off"),id:"t"+i,onclick:"show_edit("+i+")"});
169-
var input = $e("input",{type:"checkbox",id:"e"+i,onchange:"toggle_edit("+i+",0)"});
170-
if(fl) input.checked = true;
171-
li.appendChild($em("tr",[td1,$ee("td",input)]));
172-
}
173-
show(httpGet("play").split(":"));
174-
$g("shadow").style.display = "none";
191+
update_info();
192+
$g("shadow").style.display = "none";
193+
}, dummy);
194+
}, dummy);
175195
} else setTimeout(start, 100);
176196
}
177197
start();

data/clock.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@
5858
}
5959
function start() {
6060
if (typeof ajaxRequest !== "undefined") {
61-
fill_settings("clock","clock");
62-
$g("shadow").style.display = "none";
61+
fill_settings("clock","clock", () => {
62+
$g("shadow").style.display = "none";
63+
});
6364
} else setTimeout(start, 100);
6465
}
6566
start();

data/functions.js

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,24 @@ function onoff(id,a=1) {
113113
$g(id).innerHTML = ajaxResp.responseText=="1" ? "On": "Off";
114114
}, dummy);
115115
};
116-
function fill_settings(url,form_name) {
117-
var doc = JSON.parse(httpGet(url));
118-
var f = document.forms[form_name];
119-
for (var key in doc) {
120-
if(!f.elements[key]) continue;
121-
if(f.elements[key].type=="checkbox") {
122-
if( f.elements[key].checked && doc[key] == 0 )
123-
f.elements[key].checked = false;
124-
if( ! f.elements[key].checked && doc[key] != 0 )
125-
f.elements[key].checked = true;
126-
} else if(f.elements[key].type=="time") {
127-
var h = Math.floor(doc[key]/60);
128-
var m = doc[key]%60;
129-
f.elements[key].value = (h<10?"0"+h:h) + ":" + (m<10?"0"+m:m);
130-
} else
131-
f.elements[key].value = doc[key];
132-
}
116+
function fill_settings(url,form_name,cbfunc=null) {
117+
ajaxRequest(url,"GET",null, function(ajaxResp) {
118+
var doc = JSON.parse(ajaxResp.responseText);
119+
var f = document.forms[form_name];
120+
for (var key in doc) {
121+
if(!f.elements[key]) continue;
122+
if(f.elements[key].type=="checkbox") {
123+
if( f.elements[key].checked && doc[key] == 0 )
124+
f.elements[key].checked = false;
125+
if( ! f.elements[key].checked && doc[key] != 0 )
126+
f.elements[key].checked = true;
127+
} else if(f.elements[key].type=="time") {
128+
var h = Math.floor(doc[key]/60);
129+
var m = doc[key]%60;
130+
f.elements[key].value = (h<10?"0"+h:h) + ":" + (m<10?"0"+m:m);
131+
} else
132+
f.elements[key].value = doc[key];
133+
}
134+
if(cbfunc !== null) cbfunc();
135+
}, dummy);
133136
};

data/running.html

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -144,39 +144,41 @@
144144
}
145145
var doc = [];
146146
function start() {
147-
if (typeof ajaxRequest !== "undefined") {
148-
doc = JSON.parse(httpGet("texts.json"));
149-
var li = $g("list_items");
150-
for(var i=0; i<doc.length; i++) {
151-
var sp1 = $ee("div",(doc[i].t.length? doc[i].t: "&lt;Пусто&gt;"));
152-
var sp2 = $e("div",{class:"small top_line"});
153-
switch((doc[i].r >> 7) & 3) {
154-
case 1:
155-
sp2.innerHTML = "каждого " + (doc[i].r >> 10) + "-го числа";
156-
break;
157-
case 2:
158-
var days = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
159-
var bit = 2;
160-
sp2.innerHTML = "По:";
161-
for(var t=1; t<7; t++) {
162-
if(doc[i].r & bit) sp2.innerHTML += " "+days[t];
163-
bit = bit << 1;
164-
}
165-
if(doc[i].r & 1) sp2.innerHTML += " "+days[0];
166-
break;
167-
case 3:
168-
sp2.innerHTML = "до конца дня";
169-
break;
170-
default:
171-
sp2.innerHTML = "пока включён";
147+
if (typeof ajaxRequest !== "undefined") {
148+
ajaxRequest("texts.json","GET",null, function(ajaxResp) {
149+
doc = JSON.parse(ajaxResp.responseText);
150+
var li = $g("list_items");
151+
for(var i=0; i<doc.length; i++) {
152+
var sp1 = $ee("div",(doc[i].t.length? doc[i].t: "&lt;Пусто&gt;"));
153+
var sp2 = $e("div",{class:"small top_line"});
154+
switch((doc[i].r >> 7) & 3) {
155+
case 1:
156+
sp2.innerHTML = "каждого " + (doc[i].r >> 10) + "-го числа";
157+
break;
158+
case 2:
159+
var days = ["Вс","Пн","Вт","Ср","Чт","Пт","Сб"];
160+
var bit = 2;
161+
sp2.innerHTML = "По:";
162+
for(var t=1; t<7; t++) {
163+
if(doc[i].r & bit) sp2.innerHTML += " "+days[t];
164+
bit = bit << 1;
165+
}
166+
if(doc[i].r & 1) sp2.innerHTML += " "+days[0];
167+
break;
168+
case 3:
169+
sp2.innerHTML = "до конца дня";
170+
break;
171+
default:
172+
sp2.innerHTML = "пока включён";
173+
}
174+
var fl = doc[i].r & 512;
175+
var td1 = $em("td",[sp1,sp2],{class:(fl?"on":"off"),id:"t"+i,onclick:"show_edit("+i+")"});
176+
var input = $e("input",{type:"checkbox",id:"e"+i,onchange:"toggle_edit("+i+",1)"});
177+
if(fl) input.checked = true;
178+
li.appendChild($em("tr",[td1,$ee("td",input)]));
172179
}
173-
var fl = doc[i].r & 512;
174-
var td1 = $em("td",[sp1,sp2],{class:(fl?"on":"off"),id:"t"+i,onclick:"show_edit("+i+")"});
175-
var input = $e("input",{type:"checkbox",id:"e"+i,onchange:"toggle_edit("+i+",1)"});
176-
if(fl) input.checked = true;
177-
li.appendChild($em("tr",[td1,$ee("td",input)]));
178-
}
179-
$g("shadow").style.display = "none";
180+
$g("shadow").style.display = "none";
181+
}, dummy);
180182
} else setTimeout(start, 100);
181183
}
182184
start();

data/security.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,11 @@
9999
}
100100
function start() {
101101
if (typeof ajaxRequest !== "undefined") {
102-
doc = JSON.parse(httpGet("security.json"));
103-
$g("security").innerHTML = doc["sec_enable"] ? "On": "Off";
104-
$g("shadow").style.display = "none";
102+
ajaxRequest("security.json","GET",null, function(ajaxResp) {
103+
doc = JSON.parse(ajaxResp.responseText);
104+
$g("security").innerHTML = doc["sec_enable"] ? "On": "Off";
105+
$g("shadow").style.display = "none";
106+
}, dummy);
105107
} else setTimeout(start, 100);
106108
}
107109
start();

data/sensors.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@
5252
}
5353
function start() {
5454
if (typeof ajaxRequest !== "undefined") {
55-
parseSensors(JSON.parse(httpGet("sensors")));
56-
$g("shadow").style.display = "none";
55+
ajaxRequest("sensors","GET",null, function(ajaxResp) {
56+
parseSensors(JSON.parse(ajaxResp.responseText));
57+
$g("shadow").style.display = "none";
58+
}, dummy);
5759
} else setTimeout(start, 100);
5860
}
5961
start();

data/settings.html

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -344,15 +344,16 @@
344344
}
345345
function start() {
346346
if (typeof ajaxRequest !== "undefined") {
347-
fill_settings("config.json","settings");
348-
show_run_block();
349-
show_color_block();
350-
show_color_block2();
351-
show_bright_block();
352-
init_color_demo();
353-
updateBr();
354-
show_bright_add_block();
355-
$g("shadow").style.display = "none";
347+
fill_settings("config.json","settings", () => {
348+
show_run_block();
349+
show_color_block();
350+
show_color_block2();
351+
show_bright_block();
352+
init_color_demo();
353+
updateBr();
354+
show_bright_add_block();
355+
$g("shadow").style.display = "none";
356+
});
356357
} else setTimeout(start, 100);
357358
}
358359
start();

data/sounds.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,11 @@
8484
}
8585
function start() {
8686
if (typeof ajaxRequest !== "undefined") {
87-
show(httpGet("play").split(":"));
88-
update_info();
89-
$g("shadow").style.display = "none";
87+
ajaxRequest("play","GET",null, function(ajaxResp) {
88+
show(ajaxResp.responseText.split(":"));
89+
update_info();
90+
$g("shadow").style.display = "none";
91+
}, dummy);
9092
} else setTimeout(start, 100);
9193
}
9294
start();

0 commit comments

Comments
 (0)