Варианты не повесить систему через sleep()?

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

Варианты не повесить систему через sleep()?

Сообщение SmoKE_xDDD » Ср июл 03, 2019 7:34 pm

Привет всем!
Пишу поведение для выключателя Xiaomi и задался вопросом:
есть тестовый скрипт:

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

if($click == 'dual_long_both_click') {
 	//Запускаем бесконечный цикл
 	$count = 10;
 	while(true) {
     	sg('TVLGBigRoom.notification', 'Выключим все приборы через '.$count.' секунд...');
    	$count--;
     	sleep('1');
     	if($count == 0) break;
    }
 	sg('ledStripBedroom.power', '0');
 	sleep('3');
 	sg('BedroomLight.chanel_1', '0');
 	sleep('3');
    sg('BedroomLight.chanel_2', '0');
 	sleep('3');
 	sg('TVLGBigRoom.power', '0');
}
Так вот, всем известно, что sleep() "вещает" компилятор и тот послушно ждет и между делом ждут все жильцы квартиры, т.к. все выключатели в квартире беспроводные :)
Какие аналоги можете порекомендовать?
Понимаю, что можно заюзать AJAX, но блин как не хочется городить "мильон" сценариев и тонну кода для 6 реле и 8 выключателей... А еще ведь есть датчики движения...
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1754 раза
Контактная информация:

Re: Варианты не повесить систему через sleep()?

Сообщение skysilver » Ср июл 03, 2019 7:41 pm

1. В МДМ для этого есть таймеры - функция setTimeOut.
2. Для запуска чего-то относительно долгого в фоновом процессе используются runScriptSafe или callMethodSafe.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Варианты не повесить систему через sleep()?

Сообщение tarasfrompir » Ср июл 03, 2019 8:24 pm

Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 899 раз

Re: Варианты не повесить систему через sleep()?

Сообщение SmoKE_xDDD » Ср июл 03, 2019 8:58 pm

tarasfrompir писал(а):
Ср июл 03, 2019 8:24 pm
Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....
Что значит отдельный цикл?)
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Варианты не повесить систему через sleep()?

Сообщение tarasfrompir » Ср июл 03, 2019 9:03 pm

SmoKE_xDDD писал(а):
Ср июл 03, 2019 8:58 pm
tarasfrompir писал(а):
Ср июл 03, 2019 8:24 pm
Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....
Что значит отдельный цикл?)
https://kb.mjdm.ru/?s=%D1%86%D0%B8%D0%BA%D0%BB
Спасибо нам ПОМОЖЕТ..!
Ответить