Помогите новичку!!!!
Re: Помогите новичку!!!!
Спасибо за информацию. Очень жаль, что так, можно было бы и галочку там прикрутить, если кто-то считает эту информацию избыточной. А так приходится забивать сеть запросами раз в секунду. Я не представляю, пока, как на сервере определить, что порт уже выключился, если ему была послана, например, такая команда - 8:1;p3600;8:0. Запускать на сервере таймер? А если такая команда может быть послана несколькими входами (например, разными датчиками движения)? Запускать несколько таймеров и потом их сравнивать? Все было бы намного проще, если бы порт при изменении своего состояния мог отправлять эту информацию на сервер.
Re: Помогите новичку!!!!
Опрашивать выход (где расположено, например, реле) раз в секунду -- не очень удачная идея. Мега, конечно, не умрет и сеть не развалится, но есть способы получше.
Нет ничего проще запустить таймер на сервере. В Мажордомо, например, это делается в одну строчку кода (https://ab-log.ru/forum/viewtopic.php?f ... 440#p28440).
В вашем примере все будет укладываться в 2 строчки кода:
Если таймеры запускаются несколькими датчиками движения (выключателями, герконами и т.д.), то ничего сравнивать не надо. Предполагаю, что если текущий таймер не завершил свой отсчет, а в это время другой датчик движения запустил новый таймер "на эту же тему", то текущий таймер надо "ликвидировать". В Мажордомо при запуске одноименного таймера текущий таймер (с тем же именем) "ликвидируется". Т.е. смело можете писать тот же самый код:
В крайнем случае, можно в коде принудительно прервать отсчет таймера:
Так что никаких сложностей в описанной вами ситуации не вижу.
Нет ничего проще запустить таймер на сервере. В Мажордомо, например, это делается в одну строчку кода (https://ab-log.ru/forum/viewtopic.php?f ... 440#p28440).
В вашем примере все будет укладываться в 2 строчки кода:
Код: Выделить всё
file_get_contents("http://192.168.0.14/sec/?cmd=8:1");
setTimeOut('myTimer_1','file_get_contents("http://192.168.0.14/sec/?cmd=8:0");',60*60);
Код: Выделить всё
setTimeOut('myTimer_1','file_get_contents("http://192.168.0.14/sec/?cmd=8:0");',60*60);
Код: Выделить всё
clearTimeOut('myTimer_1');