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

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

Модератор: immortal

neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Вс окт 29, 2017 6:10 pm

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

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

Попробую посмотреть, только как? :)
через "TeamViewer" вам в личку сброшу логин и пароль....
гм, к сожалению 3g, и ubuntu стоит :) не выйдет :)
За это сообщение автора neromih поблагодарил:
piton_78 (Вт апр 24, 2018 11:42 pm)
Рейтинг: 1.16%
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
NiKiToS
Сообщения: 42
Зарегистрирован: Сб окт 28, 2017 8:06 pm
Благодарил (а): 5 раз
Поблагодарили: 4 раза

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

Сообщение NiKiToS » Пн ноя 06, 2017 2:05 pm

как система понимает в этом коде что статус 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); // регистрируем событие "движение внутри дома"
}
Последний раз редактировалось NiKiToS Пн ноя 06, 2017 4:37 pm, всего редактировалось 2 раза.
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

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

Сообщение igorewa » Пн ноя 06, 2017 2:24 pm

Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Пн ноя 06, 2017 2:53 pm

igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

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

Сообщение igorewa » Пн ноя 06, 2017 3:17 pm

neromih писал(а):
igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?
Да, но почему то данные приходят именно в alive а не в status
Вложения
Снимок экрана 2017-11-06 в 13.29.20.png
Снимок экрана 2017-11-06 в 13.29.20.png (72.49 КБ) 6862 просмотра
Снимок экрана 2017-11-06 в 13.30.03.png
Снимок экрана 2017-11-06 в 13.30.03.png (215.59 КБ) 6862 просмотра
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
NiKiToS
Сообщения: 42
Зарегистрирован: Сб окт 28, 2017 8:06 pm
Благодарил (а): 5 раз
Поблагодарили: 4 раза

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

Сообщение NiKiToS » Пн ноя 06, 2017 4:32 pm

лазия по форому, увидел то что много ТЕМ про датчики движения, НО не разу не увидел что бы выложили нормальный ответ, то ли ни кто не понимает как подключить, то ли где то что то не доработано....может все таки объяснит кто не будь в чем проблема с этим, через простые устройства датчик
при срабатывании появляется 1 висит вечность ( на сцене красный значок движения не исчезает. При подключении через объекты>keySensors >MovementSensors>методы...."статус/alive" меняется 0-1 но действий не происходит не каких, где и что я упускаю?
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Пн ноя 06, 2017 4:56 pm

У меня реализация не через простые устройства, а просто как сказать объектами.
Настраивал у себя:

Исходные данные:
Оборудование:
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);
}  
В принципе эта настройка будет справедлива почти ко всем датчикам движения
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

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

Сообщение neromih » Пн ноя 06, 2017 4:59 pm

igorewa писал(а):
neromih писал(а):
igorewa писал(а):Что бы не плодить кучу тем, спрошу тут. У меня 2 датчика движения, 1й Broadlink, 2й Noolite. оба настроены через простые устройства и выведены на сцену. Проблема в следующем : когда срабатывает датчик движения Broadlink то в Motion01.alive появляется 1, на сцене загорается красный значок движения и через какое то ( примерно 30 сек. ) исчезает соответственно в Motion01.alive появляется 0. А с датчиком движения Noolite беда, при срабатывании появляется 1 и висит вечность ( на сцене красный значок движения не исчезает. ( свойства и методы у них идентичны) . Как сделать что бы статус сбрасывался ?
Motion01.alive - гм, это же вроде как - жив он или нет?
Да, но почему то данные приходят именно в alive а не в status
Попробуйте поменять метода на statusUpdated
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

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

Сообщение woow » Вт ноя 07, 2017 4:38 pm

да и я тут хочу спросить у знающих, пользуюсь готовым имиджем на малинке там на панеле управления "висит" сообщение "кто-то дома коридор". где это находится? Для начала хочу найти и убрать, а потом как будет какой датчик сделаем и правильные действие, теперь не надо. Так как его убрать
Raspberry Pi 3B+
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

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

Сообщение igorewa » Вт ноя 07, 2017 4:44 pm

woow писал(а):да и я тут хочу спросить у знающих, пользуюсь готовым имиджем на малинке там на панеле управления "висит" сообщение "кто-то дома коридор". где это находится? Для начала хочу найти и убрать, а потом как будет какой датчик сделаем и правильные действие, теперь не надо. Так как его убрать
Объект: ThisComputer - ThisComputer.somebodyHomeText Убрать, или на самой сцене убрать вывод этой инфрпмации
За это сообщение автора igorewa поблагодарил:
Samir77 (Вс окт 07, 2018 12:33 am)
Рейтинг: 1.16%
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
Ответить