SmartLiving.ru

Обсуждение проекта
 
Текущее время: Сб ноя 18, 2017 11:35 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 848 ]  На страницу Пред.  1 ... 75, 76, 77, 78, 79, 80, 81 ... 85  След.
Автор Сообщение
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:00 am 
Не в сети

Зарегистрирован: Пн апр 06, 2015 10:57 am
Сообщения: 33
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Продолжаю эксперименты.
Снова прописал в меге Act 7:2 Создал для эксперимента такой метод
if ($_GET['m'] != 2)
{
file_get_contents("http://192.168.2.201/sec/?cmd=7:2");
}
Работает без глюков, действие по-умолчанию не мешает! Блин, ну не хочется строить всю систему на таких костылях. Я понимаю, что костыль можно усовершенствовать, создать каждому объекту свойство с URL и использовать один метод для всех кнопок, но это же все равно костыли...

Ладно, свет пока кое-как работает, выключатели без фиксации вроде ведут себя стабильно, сейчас поисследую задержки при включении


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:14 am 
Не в сети

Зарегистрирован: Пн апр 06, 2015 10:57 am
Сообщения: 33
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
А эксперимент у меня прошел довольно-таки быстро.
Вот этот код зажигает/гасит свет в 1 зоне через 0,5-1 сек, а на второй зоне через 2 сек.
[Показать] Скрытый текст:
//работает, но с задержкой включения
$statusz = $this->getProperty('StateZone');
if ($statusz == 0)
{
$this->setProperty('StateZone',1);
sg('Zone24_1.StateZone',1);
}
else
{
$this->setProperty('StateZone',0);
sg('Zone24_1.StateZone',0);
}

А вот этот код отрабатывает мгновенно и стабильно
[Показать] Скрытый текст:
$str = "http://192.168.2.203/sec/?pt=7&cmd=get";
$state=substr(file_get_contents($str),0,2);
if ($state == 'ON')
{
file_get_contents("http://192.168.2.203/sec/?cmd=7:0");
file_get_contents("http://192.168.2.207/sec/?cmd=8:0");
} else
{
file_get_contents("http://192.168.2.203/sec/?cmd=7:1");
file_get_contents("http://192.168.2.207/sec/?cmd=8:1");
}

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:19 am 
Не в сети

Зарегистрирован: Вс янв 10, 2016 11:05 am
Сообщения: 237
Благодарил (а): 24 раз.
Поблагодарили: 53 раз.
Ivan_A писал(а):
Обрабатывать нажатие пытаюсь вот таким методом:
[Показать] Скрытый текст:
//метод SwitchFix
$statusz = $this->getProperty('StateZone');
if ($_GET['m'] != 2)
{
if ($statusz == 0)
{
$this->setProperty('StateZone',1);
}
else
{
$this->setProperty('StateZone',0);
}
}

Вложение:
mega1.jpg


Можно попробовать в коде метода заменить
Код:
if ($_GET['m'] != 2) 

на
Код:
if ( $_GET['m'] == "2" ) {
return
""


Еще можно попробовать выставить "Вызывать родительский метод" в положение "никогда".
Что касается пересохранения конфигурации Меги в модуле MegaD после изменения, то я всегда пересохраняю.

Вообще я руководствуюсь немножко другой идеологией. Перед тем, как переключить порт, я всегда запрашиваю его фактическое состояние ($state = file_get_contents("http://192.168.0.14/sec/?pt=7&cmd=get");). И только после этого дается команда на его переключение.

Ну и еще вопрос на уточнение. Файл megad.class.php модуля MegaD у вас "модернизирован" для "отлавливания" параметра "m"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:32 am 
Не в сети

Зарегистрирован: Пн апр 06, 2015 10:57 am
Сообщения: 33
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
с вашим вариантом кода сейчас поиграюсь.
По пересохранению имел в виду другое. Если я меняю в самой меге что-то, например, действие по-умолчанию, она отправляет данные о том, что что-то внутри нее поменялось на сервер или нет? Я не знаю, поэтому считаю что нет. А ведь сервер как-то должен узнать, что что-то поменялось, вот и лезу в модуль MegaD каждый раз и пересохраняюсь ничего в нем не поменяв..
Да, ваша идеология намного более правильная в плане стабильности, как я вижу из своих экспериментов. Но ее использование лишает нас всех плюсов объектно-ориентированного программирования. Зачем на каждый вход писать свой скрипт? Зачем обращаться к самой меге, если можно обратиться к свойству привязанного к ней объекта? Опять же и сетевой трафик должен уменьшиться...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:39 am 
Не в сети

Зарегистрирован: Вс янв 10, 2016 11:05 am
Сообщения: 237
Благодарил (а): 24 раз.
Поблагодарили: 53 раз.
Насколько я понимаю модуль считывает конфигурацию только при сканировании Мег. И, соответственно, если в конфигурации мы что-то меняем, надо "перечитывать" обновленную конфигурацию в модуле. Менять там в случае изменения конфигурации ничего не нужно. Нужно только "перечитать" (Read Config).

Думаю, чтобы не потерять преимущества ООП, можно меняющиеся параметры (IP-адреса Мег, номера портов) сохранять в свойства объектов. И в коде их запрашивать. А насчет сетевого трафика, думаю это не настолько серьезная нагрузка. Не потоковое же видео в конце концов...


Последний раз редактировалось Chainik Чт авг 03, 2017 10:42 am, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:41 am 
Не в сети

Зарегистрирован: Пн апр 06, 2015 10:57 am
Сообщения: 33
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Да, вчера поправил
if ($prop['LINKED_OBJECT2'] && $prop['LINKED_METHOD2']) { // && $old_value2!=$prop['CURRENT_VALUE_STRING2']
$params=array();
$params['TITLE']=$rec['TITLE'];
$params['VALUE']=$prop['CURRENT_VALUE_STRING2'];
$params['value']=$params['VALUE'];
$params['port']=$prop['NUM'];
$params['m']=$m;
callMethod($prop['LINKED_OBJECT2'].'.'.$prop['LINKED_METHOD2'], $params);
}
Кстати, засомневался, регистр ведь не имеет значения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:43 am 
Не в сети

Зарегистрирован: Вс янв 10, 2016 11:05 am
Сообщения: 237
Благодарил (а): 24 раз.
Поблагодарили: 53 раз.
Не знаю, насчет регистра. Можно просто использовать везде строчную букву "m", как у Андрея.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 10:53 am 
Не в сети

Зарегистрирован: Пн апр 06, 2015 10:57 am
Сообщения: 33
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Да, забыл написать, там где не требуется, везде ставлю "никогда не вызывать родительский метод"
Вот еще эксперимент с длинным и коротким нажатием. Модифицировал код вот так
[Показать] Скрытый текст:
if($_GET['m'] == 2) { // прилетело сообщение о длинном нажатии
$this->setProperty('Long', 1);
return;
}
else
{
if ($_GET['m'] == 1) // прилетело сообщение об отпускании клавиши
{
$lng = $this->getProperty('Long');
if ($lng == 1)
{
file_get_contents("http://192.168.2.210/sec/?cmd=11:2");
}
else
{
$str = "http://192.168.2.203/sec/?pt=11&cmd=get";
$st1=substr(file_get_contents($str),0,2);
if ($st1 == 'ON')
{
file_get_contents("http://192.168.2.210/sec/?cmd=11:0");
} ;
file_get_contents("http://192.168.2.203/sec/?cmd=11:2");
}
}
else // прилетело сообщение о нажатии выключателя
{
$this->setProperty('Long', 0);
return;
}
}

Этот код тоже работает, однако не срабатывают короткие нажатия, навскидку те, что менее 0,5 сек.
Складывается стойкое ощущение, что сервер тормозит именно при работе с объектами (как такое возможно не понимаю). В этом коде не использовать их нельзя, так же как и в коде с ютуба (2 действия на одном выключателе). Что делать пока не знаю...
А если хранить IP мег и номера портов в свойствах, наверняка проблема тормозов тоже может всплыть. Сейчас поэкспериментирую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 11:10 am 
Не в сети

Зарегистрирован: Вс янв 10, 2016 11:05 am
Сообщения: 237
Благодарил (а): 24 раз.
Поблагодарили: 53 раз.
Ну хранение IP мег и номеров портов в свойствах, думаю, не поможет избежать тормозов. Здесь причину надо искать где-то еще. Может SQL медленно работает, может трафик где-то тормозит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "MegaD"
СообщениеДобавлено: Чт авг 03, 2017 12:17 pm 
Не в сети

Зарегистрирован: Пт дек 14, 2012 12:24 pm
Сообщения: 1162
Откуда: Россия, Нижняя Тура
Благодарил (а): 341 раз.
Поблагодарили: 73 раз.
Ivan_A писал(а):
Кстати, попутный вопрос - после изменений на самой меге надо пересохранять конфигурацию в мажордоме?

Желательно - да

_________________
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 848 ]  На страницу Пред.  1 ... 75, 76, 77, 78, 79, 80, 81 ... 85  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: nick7zmail, vitt76 и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB