Лучше брать на 0-10 бар, они распространены шире.
нашел 0-6 бар
Добрый день. Продаются датчики избыточного и дифференциального давления , какой выбирать для контрола давления в системе отопления?
Добрый.
Уместнее использовать датчик избыточного давления.
принял
Добрый день.
Был очень занят, только дошли руки до отладки алгоритма.
//три попытки запуска
for (var i = 0; i < 3; i++) {
//кратковременная команда на запуск генератора (1 секунда)
dev[“wb-mr6c_90”][“K3”] = true;
setTimeout(function() {dev[“wb-mr6c_90”][“K3”] = false;}, 1000);
//ждем 1 минуту, пока прогреется и проверяем, запустился или нет. если запустился, заканчиваем отработку цикла запуска
setTimeout(function() {if (dev[“wb-nap3ev_109”][“Urms1 L1”] <180) {SendTelegramMsg(‘Генератор запущен123.’)};}, 60000);
break;}
if (i=3) {SendTelegramMsg(‘Ошибка запуска. Превышено количество попыток.’)};
Не могу разобраться, почему не отрабатывает минутная задержка на прогрев. Моментально выходит “Ошибка запуска. Превышено количество попыток.” Что я делаю не так?
должно быть i == 3
добрый день.
Так и не смог победить алгоритм запуска генератора:
Код выполняется асинхронно, цикл отрабатывает мгновенно, и задержка на проверку запуска не отрабатывает. Пробовал выносить в отдельные функции. Что то никак ума не приложу, как правильно организовать.
Буду очень признателен за помощь.
Спасибо.
Добрый день. А почему цикл не должен отрабатывать сразу же? Тут немного непонятна желаемая логика.
Добрый день.
Для запуска генератора необходимо кратковременно на 2 секунды замкнуть реле wb-mr6c_90/k3. Отправляем сообщение в телеграм “Попытка запуска i”. Далее ждем 1 минуту, после чего если на wb-map3ev_109/Urms L1 напряжение больше 180 вольт, отправляем сообщение в телеграм “Генератор запущен”, и счетчику присваиваем значение 3, для выхода из цикла, иначе повторяем цикл.
По истечении попыток, проверяем напряжение на wb-map3ev_109/Urms L1, если меньше 180, отправляем сообщение в телеграм об ошибке запуска.
ниже набросал блоксхему…
Сейчас при подаче команды на запуск в телеграм мгновенно приходит сообщение об ошибке запуска и с задержкой приходит два одинаковых сообщения: Попытка запуска №3…
Выполнение команд асинхронное.
Буду признателен, если подскажете, что я делаю не так.
Спасибо.
Вы неправильно понимаете работу setTimeout. При вызове setTimeout выполнение скрипта не останавливается, он сразу переходит к выполнению следующей строки. А то, что внутри setTimeout
setTimeout(function () {
вот это;
и вот это;
}, 10000);
будет выполнено после временной задержки.
И в следующий раз не выкладывайте код картинкой - с кодом проще работать, когда он код.
фото выложил, потому что оно с подсветкой синтаксиса
“При вызове setTimeout выполнение скрипта не останавливается, он сразу переходит к выполнению следующей строки.” Вот я это уже понял, что быстро проходит три итерации, и после уже приходят сообщения о попытках запуска по таймауту. Как можно сделать, что бы цикл останавливался на проверку запустился генератор или нет, и только после проверки либо заходил на новую итерацию, либо при удачном пуске, завершал цикл?
//три попытки запуска
for (var i = 1; i < 3; i++) {
//кратковременная команда на запуск генератора (1 секунда)
dev[“wb-mr6c-v2_90”][“K3”] = true;
setTimeout(function() {return dev[“wb-mr6c-v2_90”][“K3”] = false;}, 1000);
//ждем 1 минуту, пока прогреется и проверяем, запустился или нет. если запустился, заканчиваем отработку цикла запуска
setTimeout(function() {if (dev[“wb-map3ev_109”][“Urms L1”] <180) {SendTelegramMsg('Попытка запуска № '+ i)}}, 10000);
if (dev[“wb-map3ev_109”][“Urms L1”] >180) {SendTelegramMsg(‘генератор запущен’); i=3};
}
if (dev[“wb-map3ev_109”][“Urms L1”] <180) {SendTelegramMsg(‘Ошибка запуска. Превышено количество попыток.’)};
Функция.
Например так:
//03_24_test_02.js
function tryStart(relayStarter, timeStarter, controlDev, controlV, timeForControl){
dev[relayStarter] = true;
setTimeout(function() {
dev[relayStarter] = false;
setTimeout(function() {
SendTelegramMsg("Попытка запуска № "+ i)
if (dev[controlDev] < controlV) {
i++;
if (i>3){
SendTelegramMsg("Ошибка запуска. Превышено количество попыток.");
}
else{
//рекурсивно запускаем
tryStart(relayStarter, timeStarter, controlDev, controlV, timeForControl);
}
}
else{
SendTelegramMsg("генератор запущен");
started = 1;
}
}, timeForControl);
}, timeStarter);
}
//три попытки запуска
var i = 0;
var started = 0;
//команда на запуск генератора (1 секунда)
tryStart("wb-mr6c-v2_90/K3", 1000, "wb-map3ev_109/Urms L1", 180, 10000)
Хорошо, спасибо, буду пробовать.
все отлично работает, спасибо за поддержку
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.