Реализация световых эффектов на MD

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

Модератор: immortal

Ответить
kalina
Сообщения: 180
Зарегистрирован: Пн фев 22, 2016 11:01 pm
Благодарил (а): 29 раз
Поблагодарили: 90 раз

Реализация световых эффектов на MD

Сообщение kalina » Чт апр 05, 2018 11:30 am

Всем доброго времени суток!

Нужно решить следующую задачу...

1. Имеется набор светильников в количестве 12 шт. Каждый светильник нужно включать на 10 сек. Включение должно осуществляться друг за другом, например, включили первый, подождали 10 сек и выключили, сразу же включаем второй ... и т.д. Короче, типа "бегущая волна".
2. Все эти манипуляции должны осуществляться периодически. Причем должны меняться сценарии от простого последовательного переключения до включения попарно некоторых и т.д., так называемые "световые эффекты".

Я создал на базе Простых устройств 12 управляемых реле и связал их с "железом" (устройствами на базе MySensors). Могу по отдельности включать и выключать следующим способом : sg("Relay01.status",1); и sg("Relay01.status",0);

Вопрос заключается в следующем - как (имеется ввиду программирование на php, общие принципы программирования на С имею) и на каких ресурсах(таймерах и т.д.) правильно решить вышеизложенную задачу?

Всем откликнувшимся заранее спасибо!
Raspberry PI3 + образ 3.31 | MDMSGate | Lighting | LightingX2 | Power | Multisensor
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Реализация световых эффектов на MD

Сообщение xor » Чт апр 05, 2018 7:00 pm

Мне кажется,на таймерах такое не прокатит на секундах. Может, стоит создать по скрипту на эффект, запускать скрипт отдельным потоком, а в скрипте явно прописать переключения релюх чередуя их sleep'ами по 10 с. Но это мои впечатления на моем железе, практика всё покажет. И отпишитесь как лучше

Отправлено с моего Redmi 4X через Tapatalk

Аватара пользователя
Krz
Сообщения: 22
Зарегистрирован: Сб мар 24, 2018 3:51 pm
Откуда: Сибирь
Благодарил (а): 2 раза
Поблагодарили: 17 раз

Re: Реализация световых эффектов на MD

Сообщение Krz » Пт апр 06, 2018 9:16 am

Я бы реализовал так:
В массив, используя свои обозначения, вносится порядок действий, а дальше программа их выполняет.
Для примера:

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

$deistvie=array('v01','p10','v02','q01','p10','v03','q02','p10','q03');
foreach($deistvie as $dn) {
$d=substr($dn,0,1);
$n=substr($dn,1);
switch ($d) {
    case 'v':
        sg('Relay'.$n.'.status',1);
        break;
    case 'q':
        sg('Relay'.$n.'.status',0);
        break;
    case 'p':
        sleep($n);
        break;
}}
В данном примере обозначения следующие:
v - включить
q - выключить
p - пауза
В командах "v" и "q" числа обозначают номер устройства, в команде "p" - продолжительность паузы в секундах
Т.е.
'v01','p10','v02','q01','p10','v03','q02','p10','q3'
это включить 1 светильник, подождать 10 секунд, включить второй и выключить первый, подождать 10 секунд включить третий и выключить второй, подождать 10 секунд и выключить третий.
Соответственно, можно составить любой сценарий с одновременным включением разного числа светильников в разной последовательности, лишь бы система успевала им передавать команды.
Изображение
Изображение
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Реализация световых эффектов на MD

Сообщение slgeo » Пт апр 06, 2018 2:02 pm

Не стоит это на МД выносить, лучше прописать в контроллере
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Реализация световых эффектов на MD

Сообщение serghei » Пт апр 06, 2018 2:10 pm

Одного мало - надо два. Как Тут рассказано. Управляется по сети.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Реализация световых эффектов на MD

Сообщение nick7zmail » Пт апр 06, 2018 2:26 pm

Я бы тоже прописал логику в контроллере, который рулит этими реле...а так - пишите функцию, у которой на входе номер светильника закидываете в /lib/ (функция формата, если просто, то - вырубаем всё, врубаем нужное). Пишите скрипт который к какому нить свойству прибавляет 1, если свойство больше максимума- скидывает на 0, и запускает вашу функцию. И далее ставит таймер на запуск себя же через 10 сек. Как это сделать - смотрите в теме "Таймер на 2 секунды".
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
kalina
Сообщения: 180
Зарегистрирован: Пн фев 22, 2016 11:01 pm
Благодарил (а): 29 раз
Поблагодарили: 90 раз

Re: Реализация световых эффектов на MD

Сообщение kalina » Сб апр 07, 2018 5:45 pm

Всем отозвавшимся огромное спасибо! Наибольшая ценность проекта Majordomo - это его участники :)

Проанализировав ваши предложения и оценив свой уровень знаний и адекватность, я реализовал следующую схему работы:
Каждую минуту по методу onNewMinute объекта ClockChime вызывается главный скрипт, в котором, в зависимости от времени, запускается или останавливается поток Cron. В каждом Cron потоке реализуется нужный световой эффект. Посчитав время выполнения такого эффекта можно настроить периодичность вызова потока. Проверил - всё работает отлично. Ниже приведу поясняющий рисунок.
Lightings.png
Lightings.png (91.31 КБ) 4480 просмотров
У меня нет отдельного контроллера, все работает в цепочке: [MDMSNode Lightings x 12pcs]<-->[MDMSGate]<-->[RPI3+MajorDomo]
Используется технология MySensors.
Raspberry PI3 + образ 3.31 | MDMSGate | Lighting | LightingX2 | Power | Multisensor
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Реализация световых эффектов на MD

Сообщение xor » Сб апр 07, 2018 10:17 pm

Посчитав количество звёздочек, понял, что Крон - это не модуль МЖД Крон, а линуксовый планировщик, да?
Модуль Крон позволяет планировать с точностью до минуты.
kalina
Сообщения: 180
Зарегистрирован: Пн фев 22, 2016 11:01 pm
Благодарил (а): 29 раз
Поблагодарили: 90 раз

Re: Реализация световых эффектов на MD

Сообщение kalina » Вс апр 08, 2018 9:02 am

xor писал(а):
Сб апр 07, 2018 10:17 pm
Посчитав количество звёздочек, понял, что Крон - это не модуль МЖД Крон, а линуксовый планировщик, да?
Нет, всё-таки МЖД Крон. На картинке нашёл уже две очепятки - эти самые звездочки и, вместо двух подряд "if (timeIs("10:00"))", должно быть сначала так "if (timeIs("10:00"))", а потом так "if (timeIs("11:00"))".
xor писал(а):
Сб апр 07, 2018 10:17 pm
Модуль Крон позволяет планировать с точностью до минуты.
Этого вполне достаточно. Весь сценарий одного из эффектов, в зависимости от задержки переключения ламп, длится минуты (1...5). Например, 12 * 2сек (волна в одну сторону) + 12*2 сек (волна обратно) + задержка отправки комманд * 24 (время не определено, порядка сотен мс) ~ 60 сек. То есть настраиваем Cron на 1 минуту....
Raspberry PI3 + образ 3.31 | MDMSGate | Lighting | LightingX2 | Power | Multisensor
Ответить