Циклическое выполнение команды

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

Модератор: immortal

freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 30 раз

Re: Циклическое выполнение команды

Сообщение freesh » Чт ноя 28, 2019 1:36 pm

tarasfrompir писал(а):
Чт ноя 28, 2019 1:33 pm
freesh писал(а):
Чт ноя 28, 2019 1:28 pm
Kumehtar писал(а):
Чт ноя 28, 2019 1:16 pm
tarasfrompir писал(а):
Чт ноя 28, 2019 12:20 pm
Вот так будет просто и надежно
Но это для старта - а там уже логику можна и на таймеры повесить
НО ТОЛЬКО ВСЕ СДЕЛАТЬ ПО ДРУГОМУ.... а не так как сделано
Так вообще не запускается =(
freesh писал(а):
Чт ноя 28, 2019 11:09 am
А если попробовать банально повесить на onNewSecond?
А так, вроде, работает. Но "повесил" пока на onNewMinute. Теперь понять, как сделать что-то типа onNewSecond
(как тут: viewtopic.php?t=386#p1932)
Да, решение от tarasfrompir получше и должно работать, видимо пускаешь неправильно. Грубо говоря по нажатию кнопки - если перешло в режим ВключитьПеремигивание - в switcher.status должна записаться 1 а при выключении должна туда записаться 0
Я бы добавил сюда + запускать этот же метод в свойстве status
Или добавить в логиактион этот кусок кода
Я поэтому и спросил про StatusUpdated - этот метод же отработает если мы просто статус поменяем. опять-таки смотря как зпускать, если по switcher.activate / deactivate то кнопка по умолчанию пишет 1 / 0 в статус же
Raspberry pi3, xiaomi, sonoff rf.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Циклическое выполнение команды

Сообщение tarasfrompir » Чт ноя 28, 2019 1:40 pm

Все проверил - все четко
Только нужно еще и дописать немного

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

while (true)				// бесконечный цикл
	{
		$status0=gg('switcher.status');
		if ($status0 <> 1){
		        callMethod('Living_room_f.turnoff');	// выключить второе устройство
		        callMethod('CEB00F_test.turnoff');	// включить первое устройство
	       		 break;	// если выключатель поменял состояние ("выключен") выйти из цикла
       		 }
		callMethod('CEB00F_test.turnon');	// включить первое устройство
		callMethod('Living_room_f.turnoff');	// выключить второе устройство
		sleep(3);
		$status0=gg('switcher.status');
		if ($status0 <> 1){
		        callMethod('Living_room_f.turnoff');	// выключить второе устройство
		        callMethod('CEB00F_test.turnoff');	// включить первое устройство
	       		 break;	// если выключатель поменял состояние ("выключен") выйти из цикла
        	}
        	callMethod('CEB00F_test.turnoff');	// включить первое устройство
		callMethod('Living_room_f.turnon');	// выключить второе устройство
		sleep(3);
	}
Спасибо нам ПОМОЖЕТ..!
Kumehtar
Сообщения: 12
Зарегистрирован: Вт окт 01, 2019 8:30 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Циклическое выполнение команды

Сообщение Kumehtar » Чт ноя 28, 2019 3:25 pm

tarasfrompir писал(а):
Чт ноя 28, 2019 1:22 pm
Подожди ану ка расскажи как ты запускаеш сам этот метод...
Сначала запускал прямо в коде выключателя.
Сейчас сделал скрипт flash, а в коде выключателя

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

callMethod('switcher.switch');
runscript('flash');
Итог: Скрипт запускается и работает правильно (устройства переключаются), но как только он запускается, другие выключатели не управляются и остановить скрипт тоже не могу...
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 30 раз

Re: Циклическое выполнение команды

Сообщение freesh » Чт ноя 28, 2019 3:28 pm

Kumehtar писал(а):
Чт ноя 28, 2019 3:25 pm
tarasfrompir писал(а):
Чт ноя 28, 2019 1:22 pm
Подожди ану ка расскажи как ты запускаеш сам этот метод...
Сначала запускал прямо в коде выключателя.
Сейчас сделал скрипт flash, а в коде выключателя

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

callMethod('switcher.switch');
runscript('flash');
Итог: Скрипт запускается и работает правильно (устройства переключаются), но как только он запускается, другие выключатели не управляются и остановить скрипт тоже не могу...
У меня метод свитч в Xiaomi home тоже мне устраивал светомузыку и не выключался))

Попробуй CallMethod('switcher.turnon'); - для включения и turnoff для выключения.
Raspberry pi3, xiaomi, sonoff rf.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Циклическое выполнение команды

Сообщение tarasfrompir » Чт ноя 28, 2019 3:31 pm

Kumehtar писал(а):
Чт ноя 28, 2019 3:25 pm
tarasfrompir писал(а):
Чт ноя 28, 2019 1:22 pm
Подожди ану ка расскажи как ты запускаеш сам этот метод...
Сначала запускал прямо в коде выключателя.
Сейчас сделал скрипт flash, а в коде выключателя

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

callMethod('switcher.switch');
runscript('flash');
Итог: Скрипт запускается и работает правильно (устройства переключаются), но как только он запускается, другие выключатели не управляются и остановить скрипт тоже не могу...
Создаеш УПРАВЛЯЕМОЕ РЕЛЕ - и в его методе ЛогикАктион вставляеш этот код что сверху - только вместо switcher - вставляеш Имя УПРАВЛЯЕМОГО РЕЛЕ. Теперь нажав на это реле у тебя начнут моргать лампочки - нажав еще раз они перестанут.
За это сообщение автора tarasfrompir поблагодарил:
Kumehtar (Чт ноя 28, 2019 3:41 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Kumehtar
Сообщения: 12
Зарегистрирован: Вт окт 01, 2019 8:30 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: Циклическое выполнение команды

Сообщение Kumehtar » Чт ноя 28, 2019 3:42 pm

tarasfrompir писал(а):
Чт ноя 28, 2019 3:31 pm
Kumehtar писал(а):
Чт ноя 28, 2019 3:25 pm
tarasfrompir писал(а):
Чт ноя 28, 2019 1:22 pm
Подожди ану ка расскажи как ты запускаеш сам этот метод...
Сначала запускал прямо в коде выключателя.
Сейчас сделал скрипт flash, а в коде выключателя

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

callMethod('switcher.switch');
runscript('flash');
Итог: Скрипт запускается и работает правильно (устройства переключаются), но как только он запускается, другие выключатели не управляются и остановить скрипт тоже не могу...
Создаеш УПРАВЛЯЕМОЕ РЕЛЕ - и в его методе ЛогикАктион вставляеш этот код что сверху - только вместо switcher - вставляеш Имя УПРАВЛЯЕМОГО РЕЛЕ. Теперь нажав на это реле у тебя начнут моргать лампочки - нажав еще раз они перестанут.
:D Разведка боем удалась!!! =) Спасибо большое
Ответить