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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

Добрый день! Связал мегу с МД через брокера. Могу включать и выключать реле через браузер. Реле включается и выключается по срабатыванию датчика через брокера и МД.

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

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

как можно включать реле на определенное время? например на 1 секунду из 60, т.е. каждую 60-ю секунду. как в МД сделать кнопочки с изменением этого параметра? например реле зажимать на 2 секунды из 60-ти, на 3 и т.д.
Это мне нужно дозировать пеллеты (регулировка мощности горелки).
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

$m=date('i',time());

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

if ($m=="01") {
callMethod('Реле1.turnOff');
}
может как то так? только не понятно что такое i
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

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

Сообщение Dark_Veter »

Может вот так попробывать:

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

callMethod('Реле1.turnOn'); // включаем реле
$timeout = 3; // 3 секунды
SetTimeOut("TurnOffRelay","callMethod('Реле1.turnOff');", $timeout); //Запланируем выключить реле через $timeout секунд 
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

а как автоматически повторить цикл через 57 секунд?

еще нужно как то этот цикл активировать и деактивировать, чтобы активировать другой.
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

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

Сообщение Dark_Veter »

ну примерное так же, через SetTimeOut. Можете создать сценарий с выше написанным кодом, и из SetTimeOut вызывать уже его.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

если я сделаю такой сценарий, то реле включится на 3 секунды и все. не догоняю как заново запустить
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

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

Сообщение 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 сек.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

Создал переключатель. зацепил запуск сценария. реле начало включаться. как теперь остановить этот сценарий? и как индицировать включен он или нет на этой кнопке или на индикаторе рядом?
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск

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

Сообщение Dark_Veter »

Чтобы остановить выполните ClearTimeOut("relayOnOff");
Чтобы добавить индикацию можно записывать в какое-нибудь свойство 1 при запуске сценария, и 0 при его остановке.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm

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

Сообщение alex32 »

спасибо огромное. больше вопросов пока нет. попробую несколько режимов сделать.
Ответить