Условные события

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

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Условные события

Сообщение Bagir » Ср авг 20, 2014 9:39 pm

Все, уже вижу солнышко сквозь тучи! Если я правильно понял:
Vit писал(а):в котором выполняются какие то действия именно для этого объекта
Тут можно указать простые варианты, к примеру выключатель - лампочка.
Vit писал(а):тем самым будет вызываться родительский метод (т.е. метод класса) в котором можете указывать все что угодно
Ну а тут варианты по сложней. Допустим Датчик движения + фотореле = лампочка. Например, как Вы писали:

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

if (свойство объекта А ==5 && свойство объекта B ==3) {
запустить мой скрипт
}
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Условные события

Сообщение Vit » Ср авг 20, 2014 9:50 pm

Bagir писал(а):Все, уже вижу солнышко сквозь тучи! Если я правильно понял:
Vit писал(а):в котором выполняются какие то действия именно для этого объекта
Тут можно указать простые варианты, к примеру выключатель - лампочка.
Vit писал(а):тем самым будет вызываться родительский метод (т.е. метод класса) в котором можете указывать все что угодно
Ну а тут варианты по сложней. Допустим Датчик движения + фотореле = лампочка. Например, как Вы писали:

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

if (свойство объекта А ==5 && свойство объекта B ==3) {
запустить мой скрипт
} 
не правильно)
Bagir писал(а):Все, уже вижу солнышко сквозь тучи! Если я правильно понял:
Vit писал(а):в котором выполняются какие то действия именно для этого объекта
Тут можно указать простые варианты, к примеру выключатель - лампочка.

тут нет разницы что вы включаете или считываете...

"простые варианты" кода имеется ввиду просто сообщить что что то включилось или выключилось, ну и присвоить какие то значения каким то объектам. хотя это не догма..

в любом из методов можно выполнить любой код либо скрипт...

пример, надеюсь поймете логику

класс датчиков движения и объекты (т.е. сами датчики)

Изображение

при сработке например датчика движения в кабинете выполняется метод этого объекта

Изображение

в котором прописан код
Изображение

который обозначает то что система голосом скажет "движение в кабинете"

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

Изображение

т.е. метод родительсткого класса inhouseMovementSensors

Изображение

в котором прописан код общий для всех объектов этого класса (для всех датчиков движения)

Изображение


этот код уже сложнее

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

$this->setProperty('status',$params['status']); // выставляем статус сенсора
$this->setProperty('updatedTimestamp',time()); // выставляем время срабатывания сенсора

$this->setProperty('alive',1);
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
 $alive_timeout=24*60*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);

if ($params['status']) {
 $this->setProperty('motionDetected',1);
 clearTimeOut($this->object_title.'_detected'); 
 setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30);

 $linked_room=$this->getProperty('LinkedRoom');
 if ($linked_room!='') {
  callMethod($linked_room.'.onActivity');
   
 }

 if ($this->object_title=='sensorMovement3' || $this->object_title=='sensorMovementRemote1' || $this->object_title=='sensorMovementRemote2') {
  //|| $this->object_title=='sensorMovement5'
  //return; // не реагируем на движение в спальне, по ip-сенсорам и по сенсору на втром этаже
 }

 ClearTimeOut("nobodyHome"); 
 SetTimeOut("nobodyHome","callMethod('NobodyHomeMode.activate');", 1*60*60); // выполняем если целый час никого не было

 if (getGlobal('NobodyHomeMode.active')) {
  callMethod('NobodyHomeMode.deactivate');
 }

 $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома"
  registerEvent('inhouseMovement',$this->name,2); // регистрируем событие "движение внутри дома" 
 if (!$last_register || ((time()-$last_register)>2*60*60)) { // срабатывало более 2х часов назад
  if (timeBetween('06:00', '12:00')) { // движение замечено утром
   runScript('morningGreeting'); // запускаем скрипт "доброе утро"
  }
  if (timeBetween('16:00', '01:00')) { // движение замечено вечером
   runScript('eveningGreeting'); // запускаем скрипт "возвращение домой"
  }  
 }
} 
в нем уже выполняются какие то условия вызываются скрипты


надеюсь немного понятней стало...

написал почти пошагово
Последний раз редактировалось Vit Ср авг 20, 2014 10:03 pm, всего редактировалось 2 раза.
За это сообщение автора Vit поблагодарили (всего 3):
Bagir (Ср авг 20, 2014 10:11 pm) • andreyt (Чт авг 21, 2014 4:29 am) • skysilver (Чт авг 21, 2014 8:51 am)
Рейтинг: 3.49%
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Условные события

Сообщение Bagir » Ср авг 20, 2014 9:52 pm

Ну вот, попробуй не расстройся :( Ну терпения и желания у меня вагон. Так что рано или поздно разберусь.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Условные события

Сообщение Bagir » Ср авг 20, 2014 10:11 pm

Все! теперь стало более чем понятно! Благодарю за терпение и поддержку начинающих!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Условные события

Сообщение Vit » Ср авг 20, 2014 10:18 pm

обращайтесь)) и удачи в реализации своих задумок
За это сообщение автора Vit поблагодарил:
Bagir (Ср авг 20, 2014 10:19 pm)
Рейтинг: 1.16%
Аватара пользователя
Bagir
Сообщения: 1613
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Условные события

Сообщение Bagir » Вт сен 16, 2014 7:19 pm

Сейчас прочитал свои же глупые вопросы месячной давности :lol: :lol: :lol:
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Условные события

Сообщение Vit » Вт сен 16, 2014 8:28 pm

Все чему то учимся и берем примеры у друг друга)
Ответить