Заголовки при работе из самописного ПО
Re: Заголовки при работе из самописного ПО
Может дело в том, что кнопку нажимаю не я, а само реле по пакету команды? Скорость нажатия = скорости реле. И когда 30 в секунду - работает вроде, а когда быстрее - пропуски. Пока еще пробую разную конфигурацию сервера, выясняю скорость. Будет возможность воспроизвести проблему на windows, если пришлю exe?
Re: Заголовки при работе из самописного ПО
Команда 21:2 выполняется со скоростью 52-60 раза в секунду по факту Done. Это 2 клиента через WiFi AP связано. Если по Lan, то 83 выполненных команды 21:2 в секунду. Порт их считает четко (400 команд отправлял и 400 добавляется на счетчике порта). Но вот на сервер приходит около половины - 192-214 штук. Может мега так и должна пропускать отчеты о состоянии входа при максимальной загрузке Lan? Ведь первый и последний отчет с In порта приходит всегда четко.
Последний раз редактировалось zidky 26 авг 2018, 13:25, всего редактировалось 1 раз.
Re: Заголовки при работе из самописного ПО
А можете подсказать, "зачем так часто"?
Re: Заголовки при работе из самописного ПО
Хитренький Вы, конечно, но не могу. Да и сам пока не знаю. Отлаживаю часть обмена в своем ПО, нагружаю чтоб выявить баги в нем и избежать проблем в части целого комплекса управления.
Но вот в качестве полезного примера, у меня накопилась очередь команд на отработку из 3 штук и если их слать без задержки, сразу после Done, то отчеты бывает теряются. Например, ленту rgb нужно фильтровать по частоте команд из WEB-палитры цвета, иначе она способна вызвать такие нагрузки по скорости. Если в этот момент сработает датчик, не могу быть уверен что он примется сервером. Сначала думал проблема у моего сервера, но дамп трафика вроде как это опровергает.
Re: Заголовки при работе из самописного ПО
Да я просто вспоминаю мысль Андрея в каком-то топике (да и не только его) - "такой сценарий использования не возможен или вы заложили под свои задачи не то железо"
Re: Заголовки при работе из самописного ПО
Мне важно понять какие есть ограничения. Если они есть и выражаются в пропусках событий от датчиков со скоростью выше N, то важно это скорость знать и предусмотреть механизмы для бесперебойной работы. Ведь раз есть режим Raw, то он для чего-то нужен.
Re: Заголовки при работе из самописного ПО
В крайнем случае можно читать счетчик входа и сравнивать со счетчиком событий, которые пришли на сервер, достигая точности. Но вдруг имеет место просто какая-то проблема у меня, которую нужно устранить и не чесать "правое ухо левой ногой".
Последний раз редактировалось zidky 26 авг 2018, 14:17, всего редактировалось 1 раз.
Re: Заголовки при работе из самописного ПО
Только что освежил в памяти, для чего нужен режим Raw. Этот "секрет" я узнал из справки (https://ab-log.ru/smart-house/ethernet/megad-2561). Читать нужно, начиная с фрагмента "Raw - параметр отключает встроенную защиту от дребезга. Когда человек нажимает на обычный выключатель или кнопку, то"...
Re: Заголовки при работе из самописного ПО
А может есть пример скрипта-сервера на php с логированием? Чтоб я его запустил и проверил как он будет отрабатывать события с контакта датчика. Или какой другой сервер для виндовс.
Re: Заголовки при работе из самописного ПО
Может сейчас "сморожу" чушь, но вот есть такая система УД Мажордомо. Там в ведется логи Апача, лог системных ошибок. Я не сильно в этом разбираюсь, но если спросить на форуме, подскажут что к чему (https://majordomo.smartliving.ru). Под Windows устанавливается без проблем. Пишите любые скрипты на PHP.
Тут рассказывал, как подружить Мегу и Мажордомо (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328).
Тут рассказывал, как подружить Мегу и Мажордомо (https://ab-log.ru/forum/viewtopic.php?f=1&t=1328).
Re: Заголовки при работе из самописного ПО
Код: Выделить всё
<?php
$file = fopen('log.txt', 'a');
foreach ($_REQUEST as $key => $val)
{
$time = time();
$timeZ = date("d.m.Y H:i:s", $time);
fwrite($file, $timeZ." // ".$time.": ".$key . ' => ' . $val . "\n");
}
fwrite($file, "\n");
fclose($file);
?>
Re: Заголовки при работе из самописного ПО
xsash, объясните, для чего этот код? Это ведь не сервер, а вывод лога вроде?
Re: Заголовки при работе из самописного ПО
Ну это самый примитивный php скрипт. Сохраняете как xxx.php, заливаете себе на любой web сервер и указываете этот скрипт в меге
https://www.ab-log.ru/files/Image/smart ... server.gif
Скрипт сохраняет при обращении все входящие данные (GET и POST) в файл log.txt с указанием времени в двух форматах d.m.Y H:i:s и UNIX
там увидите параметры и значения, которые отправляет мега
Код также можно вставить в рабочий php скрипт, допустим в самое начало или конец php файла
Вот кусок лога старого, для проверки СМС
https://www.ab-log.ru/files/Image/smart ... server.gif
Скрипт сохраняет при обращении все входящие данные (GET и POST) в файл log.txt с указанием времени в двух форматах d.m.Y H:i:s и UNIX
там увидите параметры и значения, которые отправляет мега
Код также можно вставить в рабочий php скрипт, допустим в самое начало или конец php файла
Вот кусок лога старого, для проверки СМС
Код: Выделить всё
20.04.2018 17:30:07 // 1524234607: st => 1
20.04.2018 17:30:32 // 1524234632: st => 1
20.04.2018 17:30:32 // 1524234632: mdid => testMegaID
20.04.2018 17:32:33 // 1524234753: sms_phone => 79170000000
20.04.2018 17:32:33 // 1524234753: sms_text => test
Re: Заголовки при работе из самописного ПО
Устройство MegaD-2561 используется для решения задач домашней (и не только) автоматизации.
В реальных условиях обычно не требуется обрабатывать сотни отдельных TCP-сессий в секунду (а это отправка и прием более тысячи пакетов в секунду). Такую задачу даже трудно себе представить на реальном объекте.
Между тем, любое устройство можно подвергнуть DDoS-атаке. Абсолютно любое. Не будет проблем при 80 командах в секунду, будет при 800 или при 8000. В микроконтроллере ограниченный объем оперативной памяти, поэтому нет возможности распараллеливать сессии, делать очереди. И если микроконтроллер будет в буквальном смысле завален командами сервера, то вполне вероятно, что он не будет успевать отправлять события по входам. Но это очень синтетическая ситуация. Повторю, при частоте в 30 команд от сервера в секунду и при очень быстром нажатии на клавишу реальной кнопки (до 12 раз в секунду) я не выявил ни одного пропуска. Однако при многократном увеличении частоты событий в 3-5-10 раз, это вполне возможно. Где-то эта грань все равно будет.
Re: Заголовки при работе из самописного ПО
xsash, очень благодарен за скрипт и объяснение!
Выяснил что некоторые изменения порта входа при повышенной скорости срабатываний действительно не доходят до сервера и на php, а не только на самописной программе. Сами же команды выполняются у меня со скоростью до 80 команд в секунду без сбоев. Так же их считает четко и внутренний счетчик порта. Если датчик меняет состояние 20 раз в секунду, то отчеты приходят все. Это приемлемая скорость.
Выяснил что некоторые изменения порта входа при повышенной скорости срабатываний действительно не доходят до сервера и на php, а не только на самописной программе. Сами же команды выполняются у меня со скоростью до 80 команд в секунду без сбоев. Так же их считает четко и внутренний счетчик порта. Если датчик меняет состояние 20 раз в секунду, то отчеты приходят все. Это приемлемая скорость.
Re: Заголовки при работе из самописного ПО
Боюсь спросить - для чего приемлемая скорость? Будете оцифровывать сигнал с помощью MegaD и управлять RGBW цветомузыкой? В реальных задачах такая скорость избыточна.
Еще интересно - что у Вас за релюшка, которая выдерживает такие нагрузки - 60 срабатываний в минуту без дребезга...
Re: Заголовки при работе из самописного ПО
Alex_Jet, не бойтесь и не стесняйтесь - спрашивайте.
Приемлемая скорость для 14-28 датчиков, если они вдруг условно одновременно захотят сработать и по ним всем нужно будет принять решение.
Про управлять цветомузыкой - может в будущем и будет, интересная мысль! То есть планирую важные системные голосовые уведомления отсвечивать на rgb.
А релюшка у меня стандартная встроенная в исполнительный блок, 80 отработок в секунду без сбоев с контролем по счетчику на In контакте! Антидребезг на контакте был отключен.
Приемлемая скорость для 14-28 датчиков, если они вдруг условно одновременно захотят сработать и по ним всем нужно будет принять решение.
Про управлять цветомузыкой - может в будущем и будет, интересная мысль! То есть планирую важные системные голосовые уведомления отсвечивать на rgb.
А релюшка у меня стандартная встроенная в исполнительный блок, 80 отработок в секунду без сбоев с контролем по счетчику на In контакте! Антидребезг на контакте был отключен.
Re: Заголовки при работе из самописного ПО
Все это условности и не более того. Вы не кандидат наук случайно с таким подходом? Сделать такие синтетические тесты чтобы понять реальную скорость работы с MegaD...
Столько датчиков одновременно в доме (даже многоквартирном) никогда не сработает. Тем более подавляющее большинство наиболее необходимых датчиков надо опрашивать, а не ждать от них "трапа".
Про цветомузыку - это была шутка из разряда "каждому проекту своё подходящее железо"!
Бедные и бледные контакты реле...
Столько датчиков одновременно в доме (даже многоквартирном) никогда не сработает. Тем более подавляющее большинство наиболее необходимых датчиков надо опрашивать, а не ждать от них "трапа".
Про цветомузыку - это была шутка из разряда "каждому проекту своё подходящее железо"!
Бедные и бледные контакты реле...
Re: Заголовки при работе из самописного ПО
Слово "никогда" вывожу старательно из своего обихода и всем желаю того-же. "Маловероятно" - более подходит. Но когда пишешь свой сервер, то не хочется чтоб это "маловероятно" ему гарантированно ломало мозги. Синтетично нагружал, чтоб выявить барьеры у модуля ПО или у меги, но за кандидата наук спасибо.
К тому же, может когда такое сработать - отключить/плохо вставить/выдернуть колодку от ин-модуля и сразу или после перезагрузки меги отработают большинство Act и все датчики дружно пошлют изменения серверу. Как защититься от этого пока не придумал, но быть таки может.
Ну это у новых бледные. У моих реле после тестов они волне даже загорелые.
Re: Заголовки при работе из самописного ПО
они могут сработать все сразу и еще столько же в один момент , вот только обработаны они будут все равно друг за другом а не одновременно, сама по себе мега может работать очень быстро,главные тормоза в http.Если Вы будете работать на голом TCP скорость возрастет.если они вдруг условно одновременно захотят сработать и по ним всем нужно будет принять решение