Страница 1 из 2

управление циклами

Добавлено: Вт май 23, 2017 12:41 pm
alex32
Добрый день! Связал мегу с МД через брокера. Могу включать и выключать реле через браузер. Реле включается и выключается по срабатыванию датчика через брокера и МД.

Есть мысль замутить управление пеллетной горелкой.

Использую такие команды для управления реле в разделе шаблоны поведения:
callMethod('Реле1.turnOn'); // включаем реле
callMethod('Реле1.turnOff'); // выключаем реле

как можно включать реле на определенное время? например на 1 секунду из 60, т.е. каждую 60-ю секунду. как в МД сделать кнопочки с изменением этого параметра? например реле зажимать на 2 секунды из 60-ти, на 3 и т.д.
Это мне нужно дозировать пеллеты (регулировка мощности горелки).

Re: управление циклами

Добавлено: Вт май 23, 2017 3:01 pm
alex32
$m=date('i',time());

if ($m=="00") {
callMethod('Реле1.turnOn');
}

if ($m=="01") {
callMethod('Реле1.turnOff');
}
может как то так? только не понятно что такое i

Re: управление циклами

Добавлено: Вт май 23, 2017 3:12 pm
Dark_Veter
Может вот так попробывать:

Код: Выделить всё

callMethod('Реле1.turnOn'); // включаем реле
$timeout = 3; // 3 секунды
SetTimeOut("TurnOffRelay","callMethod('Реле1.turnOff');", $timeout); //Запланируем выключить реле через $timeout секунд 

Re: управление циклами

Добавлено: Вт май 23, 2017 3:17 pm
alex32
а как автоматически повторить цикл через 57 секунд?

еще нужно как то этот цикл активировать и деактивировать, чтобы активировать другой.

Re: управление циклами

Добавлено: Вт май 23, 2017 3:21 pm
Dark_Veter
ну примерное так же, через SetTimeOut. Можете создать сценарий с выше написанным кодом, и из SetTimeOut вызывать уже его.

Re: управление циклами

Добавлено: Вт май 23, 2017 3:39 pm
alex32
если я сделаю такой сценарий, то реле включится на 3 секунды и все. не догоняю как заново запустить

Re: управление циклами

Добавлено: Вт май 23, 2017 3:50 pm
Dark_Veter
Ну примерно так наверное:
Создаете сценарий с именем (например) relayOnOff, туда пишете код:

Код: Выделить всё

callMethod('Реле1.turnOn'); // включаем реле
$timeout = 3; // 3 секунды
SetTimeOut("TurnOffRelay","callMethod('Реле1.turnOff');", $timeout); //Запланируем выключить реле через $timeout секунд
SetTimeOut("relayOnOff","runScript('relayOnOff');", 60); // Запланируем запуск себя через 60 сек
Т.е. сценарий будет планировать выполнить сам себя через 60 сек.
Можно создать 2 сценария relayOn и relayOff, из первого запланировать запуск второго через 3 сек, а из второго запуск первого через 57 сек.

Re: управление циклами

Добавлено: Вт май 23, 2017 4:13 pm
alex32
Создал переключатель. зацепил запуск сценария. реле начало включаться. как теперь остановить этот сценарий? и как индицировать включен он или нет на этой кнопке или на индикаторе рядом?

Re: управление циклами

Добавлено: Вт май 23, 2017 4:46 pm
Dark_Veter
Чтобы остановить выполните ClearTimeOut("relayOnOff");
Чтобы добавить индикацию можно записывать в какое-нибудь свойство 1 при запуске сценария, и 0 при его остановке.

Re: управление циклами

Добавлено: Вт май 23, 2017 4:52 pm
alex32
спасибо огромное. больше вопросов пока нет. попробую несколько режимов сделать.