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

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

Модератор: immortal

alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm
Благодарил (а): 7 раз
Поблагодарили: 0

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

Сообщение alex32 » Вт май 23, 2017 12:41 pm

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

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

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

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

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

Сообщение alex32 » Вт май 23, 2017 3:01 pm

$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
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

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

Сообщение Dark_Veter » Вт май 23, 2017 3:12 pm

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

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

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

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

Сообщение alex32 » Вт май 23, 2017 3:17 pm

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

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

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

Сообщение Dark_Veter » Вт май 23, 2017 3:21 pm

ну примерное так же, через SetTimeOut. Можете создать сценарий с выше написанным кодом, и из SetTimeOut вызывать уже его.
За это сообщение автора Dark_Veter поблагодарил:
alex32 (Вт май 23, 2017 3:47 pm)
Рейтинг: 1.16%
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm
Благодарил (а): 7 раз
Поблагодарили: 0

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

Сообщение alex32 » Вт май 23, 2017 3:39 pm

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

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

Сообщение Dark_Veter » Вт май 23, 2017 3:50 pm

Ну примерно так наверное:
Создаете сценарий с именем (например) 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 сек.
За это сообщение автора Dark_Veter поблагодарил:
alex32 (Вт май 23, 2017 3:59 pm)
Рейтинг: 1.16%
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
alex32
Сообщения: 29
Зарегистрирован: Чт мар 30, 2017 4:14 pm
Благодарил (а): 7 раз
Поблагодарили: 0

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

Сообщение alex32 » Вт май 23, 2017 4:13 pm

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

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

Сообщение Dark_Veter » Вт май 23, 2017 4:46 pm

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

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

Сообщение alex32 » Вт май 23, 2017 4:52 pm

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