Скиньте оба варианта - посмотрю сегодня вечеромolegmak22 писал(а): ↑15.05.2022{, 22:07}Изменения касаются логики работы одной из плат( контроль нагрева в частности), дисплея не касается вовсе.И почему при одном и том же синтаксисе память стартует нормально в одном случае,и выдает ошибку в другом.
Может скинуть два варианта кода (компилируемый и не компилируемый)?
Не заморачивайтесь со штатным блоком. Возьмите лучше блок от ecoins, работает стабильно и намного быстрее.svv писал(а): ↑07.06.2022{, 13:59}Добрый день! Помогите пожалуйста вот с токай проблемой.
Нужно получить данные с DHT21 на ESP32.
При компиляции выпадает ошибку ( 'DHT21' is not a member of 'DHTesp' )
При этом если выставить в проекте на ESP32 тип датчика DHT11 (и соответственно его подключить) то проект компилируется и всё работает.
Также пробивал подключать DHT21 к UNO все также компилируется.
Значит проблема именно в связке DHT21 и ESP32.
Может кто подскажет решение проблемы? (версия FLprog 7.5.2)
Да,действительно, сейчас все на месте,но два дня я заходил и на месте загрузки было сообщение 404 page not found, ну и ладно главное все нормально.Dryundel писал(а): ↑16.06.2022{, 08:59}Там же где и всегда.
https://flprog.ru/downloads/distrutives ... my-flprog/
а как данные получать без запросов?))
нет слов)
у меня все норм - вылета нет при редактировании Параметра.look писал(а): ↑19.06.2022{, 12:01}2. Если редактировать виджет или html-блок через меню слева Контроллер -> Настройки контроллера -> Web интерфейс настройки -> Страницы настроек -> Главная -> Отображаемые параметры, то при сохранении, программа зависает на несколько секунд, а потом аварийно закрывается.
Если редактировать через верхнее меню: Инструменты -> Отладчик веб интерфейса, то проблем не возникает.
Количество запросов растёт в геометрической прогрессии и достигает сотню тысяч за несколько секунд.
Код: Выделить всё
function gND() {
let x = gX();
x.onreadystatechange = function() {
if(x.readyState == 4) {
pRD(x);
}
};
let r = "/e9f7d538-e80a-4e69-afe9-9610d0e54eff?page=1";
x.open("GET", r, true);
x.send();
}
function pRD(x) {
try {
var r = JSON.parse(x.responseText);
} catch(e) {
setTimeout(gND(), 1000);
return;
}
if(r.au == "1") {
document.location.reload(true);
return;
}
if(r.r < 1) {
setTimeout(gND(), 1000);
return;
}
for(let i = 0; i < r.c; i++) {
uCE(i, r);
}
setTimeout(gND(), 1000);
}
Код: Выделить всё
<!DOCTYPE html>
<!-- saved from url=(0017)http://localhost/ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.menu {
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 1%;
margin: 1%;
width: 16%;
border: 1px solid black;
border-radius: 8px;
}
.menuItem {
font-weight: 600;
font-family: 'Times New Roman', Times, serif;
display: block;
margin: 5px;
width: 95%;
}
.header {
padding: 10px;
left: 0px;
right: 0px;
top: 0px;
background: #00FFFF;
text-align: center;
font-weight: 600;
font-family: 'Times New Roman', Times, serif;
font-size: 250%;
}
.content {
float: right;
width: 78%;
}
.footer {
float: left;
padding: 1%;
width: 98%;
background: #00FFFF;
margin-top: 1%;
text-align: center;
font-weight: 600;
font-family: 'Times New Roman', Times, serif;
font-size: 150%;
}
.buttonFlp {
width: 150px;
border-radius: 20px;
background: #459DE5;
color: #fff;
font-size: 12px;
cursor: pointer;
float: left;
padding: 1%;
margin: 1%;
}
.buttonFlp:hover {
background: #358DE5;
}
.buttonFlp:focus {
outline: none;
}
.stLab {
margin: 5px 0;
}
.stBtn {
margin: 5px;
}
.stLig {
margin: 5px;
width: 50px;
height: 50px;
border-radius: 20%;
display: inline-flex;
align-items: center;
justify-content: center;
}
.stText {
margin: 5px 0;
}
.stIF {
margin: 5px 0;
}
.stWL {
height: 100px;
width: 400px;
overflow: auto;
}
.stChb {
margin: 5px 0;
}
.stRb {
margin: 5px 0;
}
.stCB {
margin: 5px 0;
}
table {
width: 60%;
border: 1px solid #b3adad;
border-collapse: collapse;
padding: 5px;
align: center;
}
table th {
border: 1px solid #b3adad;
padding: 5px;
background: #f0f0f0;
color: #454545;
}
table td {
border: 1px solid #b3adad;
text-align: center;
padding: 5px;
background: #ffffff;
color: #2e2e2e;
}
.noBlock {
display: inline;
}
</style>
</head>
<body>
<div class="header">ESP8266</div>
<div class="content">
<br>
<br>
<table>
<thead>
<tr>
<th>#</th>
<th>Длит. пол.</th>
<th>Счёт. воды</th>
<th>Влажн. вкл</th>
<th>Влажн. откл</th>
<th>Полив по врем.</th>
<th>Полив по счёт.</th>
<th>Полив по влаж.</th>
<th>Уст. час. пол.</th>
<th>Уст. мин. пол.</th>
</tr>
</thead>
<tbody>
<tr>
<th>T1G1</th>
<td>
<div id="T1G1dlitpoliv">0</div>
</td>
<td>
<div id="T1G1countpoliv">0</div>
</td>
<td>
<div id="T1G1hson">0</div>
</td>
<td>
<div id="T1G1hsoff">0</div>
</td>
<td>
<div id="T1G1worktime">false</div>
</td>
<td>
<div id="T1G1workcount">false</div>
</td>
<td>
<div id="T1G1workhs">false</div>
</td>
<td>
<div id="T1G1minspoliv">0</div>
</td>
<td>
<div id="T1G1hourspoliv">0</div>
</td>
</tr>
<tr>
<th>T1G2</th>
<td>
<div id="T1G2dlitpoliv">0</div>
</td>
<td>
<div id="T1G2countpoliv">0</div>
</td>
<td>
<div id="T1G2hson">0</div>
</td>
<td>
<div id="T1G2hsoff">0</div>
</td>
<td>
<div id="T1G2worktime">false</div>
</td>
<td>
<div id="T1G2workcount">false</div>
</td>
<td>
<div id="T1G2workhs">false</div>
</td>
<td>
<div id="T1G2minspoliv">0</div>
</td>
<td>
<div id="T1G2hourspoliv">0</div>
</td>
</tr>
<tr>
<th>T1G3</th>
<td>
<div id="T1G3dlitpoliv">0</div>
</td>
<td>
<div id="T1G3countpoliv">0</div>
</td>
<td>
<div id="T1G3hson">0</div>
</td>
<td>
<div id="T1G3hsoff">0</div>
</td>
<td>
<div id="T1G3worktime">false</div>
</td>
<td>
<div id="T1G3workcount">false</div>
</td>
<td>
<div id="T1G3workhs">false</div>
</td>
<td>
<div id="T1G3minspoliv">0</div>
</td>
<td>
<div id="T1G3hourspoliv">0</div>
</td>
</tr>
<tr>
<th>T2G1</th>
<td>
<div id="T2G1dlitpoliv">0</div>
</td>
<td>
<div id="T2G1countpoliv">0</div>
</td>
<td>
<div id="T2G1hson">0</div>
</td>
<td>
<div id="T2G1hsoff">0</div>
</td>
<td>
<div id="T2G1worktime">false</div>
</td>
<td>
<div id="T2G1workcount">false</div>
</td>
<td>
<div id="T2G1workhs">false</div>
</td>
<td>
<div id="T2G1minspoliv">0</div>
</td>
<td>
<div id="T2G1hourspoliv">0</div>
</td>
</tr>
<tr>
<th>T2G2</th>
<td>
<div id="T2G2dlitpoliv">0</div>
</td>
<td>
<div id="T2G2countpoliv">0</div>
</td>
<td>
<div id="T2G2hson">0</div>
</td>
<td>
<div id="T2G2hsoff">0</div>
</td>
<td>
<div id="T2G2worktime">false</div>
</td>
<td>
<div id="T2G2workcount">false</div>
</td>
<td>
<div id="T2G2workhs">false</div>
</td>
<td>
<div id="T2G2minspoliv">0</div>
</td>
<td>
<div id="T2G2hourspoliv">0</div>
</td>
</tr>
<tr>
<th>T2G3</th>
<td>
<div id="T2G3dlitpoliv">0</div>
</td>
<td>
<div id="T2G3countpoliv">0</div>
</td>
<td>
<div id="T2G3hson">0</div>
</td>
<td>
<div id="T2G3hsoff">0</div>
</td>
<td>
<div id="T2G3worktime">false</div>
</td>
<td>
<div id="T2G3workcount">false</div>
</td>
<td>
<div id="T2G3workhs">false</div>
</td>
<td>
<div id="T2G3minspoliv">0</div>
</td>
<td>
<div id="T2G3hourspoliv">0</div>
</td>
</tr>
</tbody>
</table>
<div class="stChb">
<label>
<input type="checkbox" onchange="chOnC('P14',1)" id="P14A">Кнопка MenuEn</label>
<input type="hidden" id="P14" value="0">
</div>
<div>
<button id="P3" onclick="bOc('P3')" class="stBtn">Кнопка MenuMU</button>
</div>
<div>
<button id="P9" onclick="bOc('P9')" class="stBtn">Кнопка MenuMD</button>
</div>
<div>
<button id="P10" onclick="bOc('P10')" class="stBtn">Кнопка MenuVplus</button>
</div>
<div>
<button id="P11" onclick="bOc('P11')" class="stBtn">Кнопка MenuVminus</button>
</div>
<div>
<button id="P12" onclick="bOc('P12')" class="stBtn">Кнопка MenuETM</button>
</div>
<div>
<button id="P13" onclick="bOc('P13')" class="stBtn">Кнопка MenuExFM</button>
</div>
<div>
<div class="stLab">MenuName</div>
<div id="P15" class="stText noBlock"></div>
</div>
<div class=".noBlock">
<div class="stLab">MenuValStr</div>
<div id="P16" class="stText noBlock"></div>
</div>
<div class=".noBlock">
<div class="stLab">Род. меню</div>
<div id="P17" class="stText noBlock"></div>
</div>
<div id="P18" class="stLig" style="background-color: rgb(0, 180, 0);"></div>
</div>
<div class="footer">ESP8266 - Разработано в программе FLProg (https://flprog.ru)</div>
<script>
function gX() {
var x;
try {
x = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
x = new ActiveXObject("Microsoft.XMLHTTP");
} catch(E) {
x = false;
}
}
if(!x && typeof XMLHttpRequest != 'undefined') {
x = new XMLHttpRequest();
}
return x;
}
function chOnC(id, iAs) {
let c = document.getElementById(id + "A");
let e = document.getElementById(id);
if((c != null) && (e != null)) {
blI(id);
if(c.checked) {
e.value = "1";
} else {
e.value = "0";
}
}
if(iAs) {
sED(id);
}
}
function bOc(id) {
var x = gX();
var r = "/bd6b07e5-b2cc-4336-aef9-197c32bb2b4f?id=" + id;
if(x.readyState == 4) {}
x.open("GET", r, true);
x.send();
}
let sD = {
c: 1,
d: [{
i: "P14",
e: 0,
t: "H"
}]
};
function sED(id) {
var x = gX();
var r = "/1c3c2a92-e155-4419-bbb6-d2d01ee9cc1d?";
var e = document.getElementById(id);
if(e != null) {
r = r + id + "=" + e.value;
}
for(let i = 0; i < sD.c; i++) {
sD.d[i].e = false;
}
x.onreadystatechange = function() {
if(x.readyState == 4) {}
}
x.open("GET", r, true);
x.send();
}
function gND() {
let x = gX();
x.onreadystatechange = function() {
if(x.readyState == 4) {
pRD(x);
}
};
let r = "/e9f7d538-e80a-4e69-afe9-9610d0e54eff?page=1";
x.open("GET", r, true);
x.send();
}
function pRD(x) {
try {
var r = JSON.parse(x.responseText);
} catch(e) {
setTimeout(gND(), 1000);
return;
}
if(r.au == "1") {
document.location.reload(true);
return;
}
if(r.r < 1) {
setTimeout(gND(), 1000);
return;
}
for(let i = 0; i < r.c; i++) {
uCE(i, r);
}
setTimeout(gND(), 1000);
}
function uCE(i, r) {
if(r.d[i].t == "UH") {
uUH(r.d[i].i, r.d[i].v);
return;
}
let e = document.getElementById(r.d[i].i);
if(e == null) {
return;
}
if(r.d[i].t == "T") {
e.innerHTML = r.d[i].v;
return;
}
if(r.d[i].t == "L") {
e.style.backgroundColor = r.d[i].v;
return;
}
if(!(cND(r.d[i].i))) {
return;
}
e.value = r.d[i].v;
if(r.d[i].t == "H") {
e = document.getElementById(r.d[i].i + "A");
if(e != null) {
e.checked = (r.d[i].v == "1");
}
}
if(r.d[i].t == "R") {
e = document.getElementsByName(r.d[i].i);
if(e == null) {
return;
}
for(let i1 = 0; i1 < e.length; i1++) {
if(e[i1].value == r.d[i].v) {
e[i1].checked = true;
} else {
e[i1].checked = false;
}
}
}
}
function cND(id) {
for(let i = 0; i < sD.c; i++) {
if(sD.d[i].i == id) {
return !sD.d[i].e;
}
}
return false;
}
function blI(id) {
for(let i = 0; i < sD.c; i++) {
if(sD.d[i].i == id) {
sD.d[i].e = true;
return;
}
}
}
window.onload = function() {
gND();
};
function uUH(i, v) {
if(i == "P1") {
uP1(v);
}
if(i == "P4") {
uP4(v);
}
if(i == "P5") {
uP5(v);
}
if(i == "P6") {
uP6(v);
}
if(i == "P7") {
uP7(v);
}
if(i == "P8") {
uP8(v);
}
}
function uP1(v) {
document.getElementById("T1G1dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T1G1countpoliv").innerHTML = v.countpoliv;
document.getElementById("T1G1hson").innerHTML = v.hson;
document.getElementById("T1G1hsoff").innerHTML = v.hsoff;
document.getElementById("T1G1worktime").innerHTML = v.worktime;
document.getElementById("T1G1workcount").innerHTML = v.workcount;
document.getElementById("T1G1workhs").innerHTML = v.workhs;
document.getElementById("T1G1minspoliv").innerHTML = v.minspoliv;
document.getElementById("T1G1hourspoliv").innerHTML = v.hourspoliv;
}
function uP4(v) {
document.getElementById("T1G2dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T1G2countpoliv").innerHTML = v.countpoliv;
document.getElementById("T1G2hson").innerHTML = v.hson;
document.getElementById("T1G2hsoff").innerHTML = v.hsoff;
document.getElementById("T1G2worktime").innerHTML = v.worktime;
document.getElementById("T1G2workcount").innerHTML = v.workcount;
document.getElementById("T1G2workhs").innerHTML = v.workhs;
document.getElementById("T1G2minspoliv").innerHTML = v.minspoliv;
document.getElementById("T1G2hourspoliv").innerHTML = v.hourspoliv;
}
function uP5(v) {
document.getElementById("T1G3dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T1G3countpoliv").innerHTML = v.countpoliv;
document.getElementById("T1G3hson").innerHTML = v.hson;
document.getElementById("T1G3hsoff").innerHTML = v.hsoff;
document.getElementById("T1G3worktime").innerHTML = v.worktime;
document.getElementById("T1G3workcount").innerHTML = v.workcount;
document.getElementById("T1G3workhs").innerHTML = v.workhs;
document.getElementById("T1G3minspoliv").innerHTML = v.minspoliv;
document.getElementById("T1G3hourspoliv").innerHTML = v.hourspoliv;
}
function uP6(v) {
document.getElementById("T2G1dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T2G1countpoliv").innerHTML = v.countpoliv;
document.getElementById("T2G1hson").innerHTML = v.hson;
document.getElementById("T2G1hsoff").innerHTML = v.hsoff;
document.getElementById("T2G1worktime").innerHTML = v.worktime;
document.getElementById("T2G1workcount").innerHTML = v.workcount;
document.getElementById("T2G1workhs").innerHTML = v.workhs;
document.getElementById("T2G1minspoliv").innerHTML = v.minspoliv;
document.getElementById("T2G1hourspoliv").innerHTML = v.hourspoliv;
}
function uP7(v) {
document.getElementById("T2G2dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T2G2countpoliv").innerHTML = v.countpoliv;
document.getElementById("T2G2hson").innerHTML = v.hson;
document.getElementById("T2G2hsoff").innerHTML = v.hsoff;
document.getElementById("T2G2worktime").innerHTML = v.worktime;
document.getElementById("T2G2workcount").innerHTML = v.workcount;
document.getElementById("T2G2workhs").innerHTML = v.workhs;
document.getElementById("T2G2minspoliv").innerHTML = v.minspoliv;
document.getElementById("T2G2hourspoliv").innerHTML = v.hourspoliv;
}
function uP8(v) {
document.getElementById("T2G3dlitpoliv").innerHTML = v.dlitpoliv;
document.getElementById("T2G3countpoliv").innerHTML = v.countpoliv;
document.getElementById("T2G3hson").innerHTML = v.hson;
document.getElementById("T2G3hsoff").innerHTML = v.hsoff;
document.getElementById("T2G3worktime").innerHTML = v.worktime;
document.getElementById("T2G3workcount").innerHTML = v.workcount;
document.getElementById("T2G3workhs").innerHTML = v.workhs;
document.getElementById("T2G3minspoliv").innerHTML = v.minspoliv;
document.getElementById("T2G3hourspoliv").innerHTML = v.hourspoliv;
}
</script>
</body>
</html>
если очень нужно, то можно сделать запросы по таймеру: