[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Модуль "MegaD"

Сообщение Jager » Вс май 21, 2017 10:30 pm

neromih писал(а):Привязал, но значение в бд не добавляются
Кстати, почему у вас здесь «0»?
Изображение
По идее там должна быть «1», датчики движения обычно работают на размыкание цепи, соответственно в дежурном режиме на входе мегад «1» при обнаружении движения кратковременно «0».
В X-Ray-Properties еще посмотрите события.
Последний раз редактировалось Jager Вс май 21, 2017 10:37 pm, всего редактировалось 1 раз.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вс май 21, 2017 10:37 pm

Jager писал(а):
neromih писал(а):Привязал, но значение в бд не добавляются
Кстати, почему у вас здесь «0»?
Изображение
По идее там должна быть «1», датчики движения обычно работают на размыкание цепи, соответственно в дежурном режиме на входе мегад «1» при обнаружении движения кратковременно «0».
Это последнее значение :)

Вроде как разобрался, в модуле Период опроса, секунд: поставил 1.
Заработало, вопрос правильно но ли, ведь это получается МД спрашивает у MegaD а не MegaD говорит о состоянии. Или по другому ни как?
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Модуль "MegaD"

Сообщение Jager » Вс май 21, 2017 10:43 pm

neromih писал(а):
Jager писал(а):
neromih писал(а):Вроде как разобрался, в модуле Период опроса, секунд: поставил 1.
Заработало, вопрос правильно но ли, ведь это получается МД спрашивает у MegaD а не MegaD говорит о состоянии. Или по другому ни как?
Одно другому не мешает, модуль может сам опрашивать состояния портов с заданным интервалом (например датчики температуры) и мегад сам шлет данные при изменении состояния портов немедленно.
Но у вас сейчас связь похоже односторонняя, попробуйте удалить мегад из модуля и заново установить через поиск. С текущими настройками все должно работать.
За это сообщение автора Jager поблагодарил:
neromih (Вс май 21, 2017 10:54 pm)
Рейтинг: 1.16%
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вс май 21, 2017 11:10 pm

Одно другому не мешает, модуль может сам опрашивать состояния портов с заданным интервалом (например датчики температуры) и мегад сам шлет данные при изменении состояния портов немедленно.
Но у вас сейчас связь похоже односторонняя, попробуйте удалить мегад из модуля и заново установить через поиск. С текущими настройками все должно работать.[/quote]

Удалил, не могу добавить, устанавливается, но его нет, в маркете опять только установка :)

03:14:34 0.20563200 Error registered (type: cycle_stop): ./scripts/cycle_schedapp.php
03:14:34 0.20510200 AUTO-RECOVERY: ./scripts/cycle_schedapp.php
03:14:33 0.19571900 Closing thread: exec php -q ./scripts/cycle_schedapp.php --params "a:0:{}">>/var/www/debmes/log_2017-05-22-cycle_schedapp.php.txt
03:14:33 0.18747200 Starting service cycle_schedapp (./scripts/cycle_schedapp.php)
03:14:30 0.89605600 Executing: kill -9 2140
03:14:30 0.18520300 Closing service cycle_schedapp (id: 17)
03:14:13 0.90513600 Installing/updating plugin megad ()
03:14:13 0.12716200 Geturl to http://connect.smartliving.ru/market/?lang=ru (source admin) finished with error:
Resolving timed out after 5515 milliseconds
{"url":"http:\/\/connect.smartliving.ru\/market\/?lang=ru","content_type":null,"http_code":0,"header_size":0,"request_size":0,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":4.514295,"namelookup_time":0,"connect_time":0,"pretransfer_time":0,"size_upload":0,"size_download":0,"speed_download":0,"speed_upload":0,"download_content_length":-1,"upload_content_length":-1,"starttransfer_time":0,"redirect_time":0,"redirect_url":"","primary_ip":"","certinfo":[],"primary_port":0,"local_ip":"","local_port":0}

Ошибку победил, перезапуском и остановкой.

Теперь когда опрос идет 1 секунду, когда включены реле через виртуальную кнопку (из 52 странице) происходит самопроизвольное включение выключение :) треск стоит релейный :)

Соответственно переустановка модуля не помогла, что же делать?

Код megad.ini может в нем что то не так, и еще на сайте стоит авторизация.

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

<?php

@ini_set('zlib.output_compression', 'Off');
@ini_set('output_buffering', 'Off');
@ini_set('output_handler', '');
@apache_setenv('no-gzip', 1);   


//echo "8:2";exit;

include_once("./config.php");
include_once("./lib/loader.php");
include_once(DIR_MODULES."application.class.php");

// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); 

//DebMes("megad: ".$_SERVER['REQUEST_URI']. " (".$_SERVER['REMOTE_ADDR'].")");

include_once("./load_settings.php");
include_once(DIR_MODULES.'megad/megad.class.php');
$megad=new megad();
$megad->processRequest();

$db->Disconnect();  
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Пн май 22, 2017 9:01 pm

neromih, не знаю, какая у вас задача, но вот примеры настройки с картинками
выключатель и лампочка (http://ab-log.ru/forum/viewtopic.php?f=1&t=1328)
геркон (http://ab-log.ru/forum/viewtopic.php?f= ... 309#p28309)
За это сообщение автора Chainik поблагодарил:
neromih (Вт май 23, 2017 11:19 am)
Рейтинг: 1.16%
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вт май 23, 2017 12:40 pm

Chainik, спасибо за ответ!

Исходные данные:
Оборудование:
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

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

Вот тут мой мозг впал в ступор :cry:

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 раз :)

3. Нужна помощь:
1. Как сделать что бы при поступление 0 - движение MD произносил 1 раз к примеру Атеншин виу виу, ждал 30,
после этого проверял текущие значение, и если это 1 - не чего не делал, а если опять 0 повторял опять Атеншин виу виу.
2. Соответственно со светом будет обстоять так же, нужен какой то таймер на выполнение (в Blockly двигал двигал но таймера не нашел или не додумался как это сделать).
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
erandess
Сообщения: 50
Зарегистрирован: Пт окт 03, 2014 9:04 am
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Модуль "MegaD"

Сообщение erandess » Вт май 23, 2017 1:13 pm

Почитайте здесь: http://majordomo.smartliving.ru/Main/ScSensorLight. Конечно с учетом того, что вы работаете с простыми устройствами и MegaD.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Вт май 23, 2017 3:22 pm

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

3. Нужна помощь:
1. Как сделать что бы при поступление 0 - движение MD произносил 1 раз к примеру Атеншин виу виу, ждал 30,
после этого проверял текущие значение, и если это 1 - не чего не делал, а если опять 0 повторял опять Атеншин виу виу.
2. Соответственно со светом будет обстоять так же, нужен какой то таймер на выполнение (в Blockly двигал двигал но таймера не нашел или не додумался как это сделать).

neromih, можно и без модуля "простые устройства". Если озвучивание и включение света синхронизировано со свойствами, значение которых увязано с состоянием сигнальной цепи датчика движения, другого поведения ожидать и не приходится.

Зачем в настройках порта Меги, к которому подключен датчик движения выставлен режим "С", понять не смог. Я бы установил режим "R".

Можно попробовать написать отдельный скрипт, в котором будет прописана вся необходимая логика. Для проблемы с "озвучкой" можно создать в объекте вашего датчика движения отдельное свойство ("СвойствоОзвучание"). Значение "1" будет означать, что надо озвучивать срабатывание датчика движения, "0" - не надо.

Все что напишу ниже, проверить не смогу, т.к. далеко от МД и Меги, но общий принцип, надеюсь, будет понятен.
Создаете скрипт (сценарий) с примерно таким кодом [назовем скрипт "reaktciya"]

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

if (gg('ВашОбъект.СвойствоОзвучание'); == "1") {
say("Атеншин виу виу",5);
sg('ВашОбъект.СвойствоОзвучание', 0);
setTimeOut('Timer_1','sg('ВашОбъект.СвойствоОзвучание', 1);',30);
} 
В объекте вашего датчика движения можно прописать новый метод, в котором указать код для запуска скрипта

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

runScript("reaktciya"); 
а в модуле MegaD в настройках порта, куда подключен датчик движения, в поле "Связанный объект" выставить ОбъектВашегоДатчика, а в поле "Метод", созданный нами метод.


Для управления светом нужно сначала определиться, по какому алгоритму он должен включаться/выключаться.
В каком-то объекте (например, на с.52 он назван "Relay_014-07") должны быть методы с командами на включение и выключение реле Меги, например, с именами "turnOn" и "turnOff".
В простейшем случае, если мы, например, хотим, чтобы свет сам включался по датчику движения и выключался через 10 минут после того, как движение прекратится, можно дописать в наш скрипт "reaktciya" такой код

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

cm('Relay_014-07.turnOn');
ClearTimeOut('Timer_2');
setTimeOut('Timer_2','cm('Relay_014-07.turnOff');',60*10); 
За это сообщение автора Chainik поблагодарил:
neromih (Вт май 23, 2017 3:35 pm)
Рейтинг: 1.16%
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вт май 23, 2017 4:36 pm

Победил спасибо всем за помощь!!!

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

sg("Switch0.status","1");
sg('Switch0.statusText','Включено');
clearTimeOut("Switch0");
SetTimeOut("Switch0",'sg("Switch0.status","0"); 
sg("Switch0.statusText","Выключено");',[b]10[/b]); 
вписал данный код в метод statusUpdated
10 время через которое отключится реле.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
erandess
Сообщения: 50
Зарегистрирован: Пт окт 03, 2014 9:04 am
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Модуль "MegaD"

Сообщение erandess » Вт май 23, 2017 5:12 pm

clearTimeOut("Switch0"); - уже не обязательная команда, ее можно убрать.
За это сообщение автора erandess поблагодарил:
neromih (Вт май 23, 2017 5:40 pm)
Рейтинг: 1.16%
Ответить