У меня реализация не через простые устройства, а просто как сказать объектами.
Настраивал у себя:
Исходные данные:
Оборудование:
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.