Страница 2 из 5

Re: действия после срабатывания датчика движения

Добавлено: Вс окт 29, 2017 6:10 pm
neromih
NiKiToS писал(а):
neromih писал(а):Rezim.status создали такой объект? - он будет содержать режимы - охрана наблюдение автосвет. Создайте пустой.

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

Попробую посмотреть, только как? :)
через "TeamViewer" вам в личку сброшу логин и пароль....
гм, к сожалению 3g, и ubuntu стоит :) не выйдет :)

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 2:05 pm
NiKiToS
как система понимает в этом коде что статус 1 а не 0 то ли он не дописан, то ли это не для MovementSensors

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

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

if ($params['status']) { // если статус = 1
 setGlobal('somebodyHome',2); // ставим глобальный флаг на то что кто-то дома
 setGlobal('somebodyHomeText','Дома кто-то есть'); // так же ставим свойства глобальной переменной для текстового статуса
 ClearTimeOut("NobodyHomeMode"); // очищаем таймер события "никого нет дома"
 SetTimeOut("NobodyHomeMode","runScript('NobodyHomeMode');", 1*60*60); // назначаем новый таймер. срабатывает через час после последнего срабатывания датчика.
 $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома"
 if (!$last_register || ((time()-$last_register)>2*60*60)) { // срабатывало более 2х часов назад (либо никогда не срабатывало ранее)
  say("Ну наконец-то кто-то появился дома!");
  if (timeBetween('06:00', '12:00')) { // движение замечено утром
   runScript('MorningGreeting'); // запускаем скрипт "доброе утро"
  }
 }
 registerEvent('inhouseMovement',$this->name,7); // регистрируем событие "движение внутри дома"
}

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 2:24 pm
igorewa
Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 2:53 pm
neromih
igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 3:17 pm
igorewa
neromih писал(а):
igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?
Да, но почему то данные приходят именно в alive а не в status

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 4:32 pm
NiKiToS
лазия по форому, увидел то что много ТЕМ про датчики движения, НО не разу не увидел что бы выложили нормальный ответ, то ли ни кто не понимает как подключить, то ли где то что то не доработано....может все таки объяснит кто не будь в чем проблема с этим, через простые устройства датчик
при срабатывании появляется 1 висит вечность ( на сцене красный значок движения не исчезает. При подключении через объекты>keySensors >MovementSensors>методы...."статус/alive" меняется 0-1 но действий не происходит не каких, где и что я упускаю?

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 4:56 pm
neromih
У меня реализация не через простые устройства, а просто как сказать объектами.
Настраивал у себя:

Исходные данные:
Оборудование:
1. Raspberry Pi 2 (установлен Majordomo из образа v3.26 viewtopic.php?f=3&p=48757#p48757);
2. Контроллер MegaD-2561-RTC;
3. Исполнительный блок MegaD-14-R 1.0 для контроллеров MegaD-2561/328 (14 реле для управления нагрузками);
4. Switch D-Link DES-1016;
5. Датчик движения с защитой от животных до 25 кг Patrol-201 PET;

Подключение:
1. Сеть организована через витую пару...
2. Датчик движения подключен непосредственно к MegaD-2561-RTC к Клеммнику XT2 внизу (зелёный) пины: 1, 4. Питание 12 вольт;

Настройки:
1. MegaD-2561-RTC порт P30:
- настроен как вход;
- Mode: С; у меня почему то только при этом режиме MegaD-2561-RTC отправляет на сервер MD данные 1 или 0, то есть срабатывание датчика, при том без задержек
2. Majordomo:
- создан Объект SMotions ----> PATROL:
Его методы (без изменений):
SMotions-> motionDetected;
SDevices-> statusUpdated;
SDevices-> logicAction;
- в модуле MegaD:
30 | Input | PATROL | status | statusUpdate.

Все в принципе работает.
В PATROL.status при срабатывание датчика движения вносятся состояния (1 и 0)
1 - покой;
0 - движение;

Пример полученных данных (из PATROL.status):

2017-05-23 06:21:46: 1 X
2017-05-23 06:21:42: 0 X
2017-05-23 06:21:34: 1 X
2017-05-23 06:21:30: 0 X
2017-05-23 06:20:46: 1 X
2017-05-23 06:20:40: 0 X
2017-05-22 18:50:39: 1 X

В принципе инструкция как подключить датчик движения и получать с него информацию.

1. Как видно из примера полученных данных, датчик движения имеет два состояния 1-покой, 0-движение.
Исходя из записей, я как понял, он работает следующим образом:
появилось движение и он размыкает (реле, контакт и что нибудь еще) проходит 4-5 секунд замыкает контакт без учета есть ли движение, и если оно есть опять размыкает его.

2017-05-23 06:21:46: 1 X нет движения
2017-05-23 06:21:42: 0 X движение
2017-05-23 06:21:34: 1 X нет движения хотя оно и не прекращается с 06:21:30 до 06:21:46
2017-05-23 06:21:30: 0 X движение
2017-05-22 18:50:39: 1 X с этого момента движений не было.

2. Проблемы:
1. Если в свойства без разницы какое SMotions-> motionDetected или SDevices-> statusUpdated
добавить код что бы при 0 MD произносил "обнаружено движение" то соответственно это будет сделано несколько раз.
2. Если добавить код для включения и выключения освещения, то соответственно он будет вкл и выкл освещение 5 раз :)

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

sg("Switch0.status","1");
sg('Switch0.statusText','Включено');
clearTimeOut("Switch0");
SetTimeOut("Switch0",'sg("Switch0.status","0"); 
sg("Switch0.statusText","Выключено");',[b]10[/b]);  

вписал данный код в метод statusUpdated
10 время через которое отключится реле.

Может быть пригодится кому нибудь, работает.
Смысл в том если SecuritySwitch.status значение 0 - режим не охраны а наблюдения, соответственно включает реле, если наоборот то говорит проникновение.

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

if (gg('SecuritySwitch.status') == "0") {
sg("Switch0.status","1");
sg('Switch0.statusText','Включено');
SetTimeOut("Switch0",'sg("Switch0.status","0"); 
sg("Switch0.statusText","Выключено");',10);
} else {
say("Проникновение",5);
}  
В принципе эта настройка будет справедлива почти ко всем датчикам движения

Re: действия после срабатывания датчика движения

Добавлено: Пн ноя 06, 2017 4:59 pm
neromih
igorewa писал(а):
neromih писал(а):
igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?
Да, но почему то данные приходят именно в alive а не в status
Попробуйте поменять метода на statusUpdated

Re: действия после срабатывания датчика движения

Добавлено: Вт ноя 07, 2017 4:38 pm
woow
да и я тут хочу спросить у знающих, пользуюсь готовым имиджем на малинке там на панеле управления "висит" сообщение "кто-то дома коридор". где это находится? Для начала хочу найти и убрать, а потом как будет какой датчик сделаем и правильные действие, теперь не надо. Так как его убрать

Re: действия после срабатывания датчика движения

Добавлено: Вт ноя 07, 2017 4:44 pm
igorewa
woow писал(а):да и я тут хочу спросить у знающих, пользуюсь готовым имиджем на малинке там на панеле управления "висит" сообщение "кто-то дома коридор". где это находится? Для начала хочу найти и убрать, а потом как будет какой датчик сделаем и правильные действие, теперь не надо. Так как его убрать
Объект: ThisComputer - ThisComputer.somebodyHomeText Убрать, или на самой сцене убрать вывод этой инфрпмации