как правильно опрашивать реле и прочее

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модераторы: Bagir, Ivan, Vit, immortal, PAV

sega6549
Сообщения: 419
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 47 раз
Поблагодарили: 67 раз
Контактная информация:

как правильно опрашивать реле и прочее

Сообщение sega6549 » Пт авг 03, 2018 12:23 pm

всем привет, подскажите как правильнее сделать, есть несколько устройств допустим 5, опрашиваются по hhtp get, необходимо их опрашивать каждые 10 секунд или еще лучше чаще, я создал 5 методов которые просто опрашивают, запускаются они через сценарий который циклично запускается каждые 10 секунд примерно так

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

clearTimeout("myscript1_timer");
callMethod('prihojaya.get_value');
callMethod('zal.get_value');
callMethod('vanna.get_value');
callMethod('kyhnya.get_value');
callMethod('spalnya.get_value');
setTimeOut("myscript1_timer","runScript('status_reley');",5); 
проблема в том что каждый из этих запросов выполняется достаточно долго, если взять и просто через браузер запросить состояние то проходит примерно секунды полторы прежде чем придет ответ, в итоге имеем куча ошибок в админке, как лучше поступить, сначала я хотел все в одном методе опрашивать что бы запросы происходили по очереди, но там необходимо еще и парсить ответ так как приходит еще и мусор всякий вместе с ответом
ps я бы может и не парился и сделал бы опрос реже например раз в минуту, но если мне нужно будет еще больше запросов делать, например 40 запросов на всякие датчики, релюхи и прочее, как тут быть?
Мой канал на youtube
skysilver
Сообщения: 1837
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 270 раз
Поблагодарили: 1080 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение skysilver » Пт авг 03, 2018 1:01 pm

Надо менять сами устройства. Строить систему на принципе опросов железок со стороны сервера - это гиблое и тупиковое занятие. Тем более с большой частотой. Устройства сами должны слать на сервер события об изменении своих состояний.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Chainik
Сообщения: 576
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 65 раз
Поблагодарили: 157 раз

Re: как правильно опрашивать реле и прочее

Сообщение Chainik » Пт авг 03, 2018 1:03 pm

Еще вариант, кроме "тут всю систему надо менять", такой: опрос каждого устройства запускать со своим индивидуальным setTimeOut. Тогда он будет запускаться каждый в своем индивидуальном процессе.
sega6549
Сообщения: 419
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 47 раз
Поблагодарили: 67 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение sega6549 » Пт авг 03, 2018 1:20 pm

Chainik писал(а):
Пт авг 03, 2018 1:03 pm
Еще вариант, кроме "тут всю систему надо менять", такой: опрос каждого устройства запускать со своим индивидуальным setTimeOut. Тогда он будет запускаться каждый в своем индивидуальном процессе.
а если совпадут таймеры?
Мой канал на youtube
sega6549
Сообщения: 419
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 47 раз
Поблагодарили: 67 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение sega6549 » Пт авг 03, 2018 1:21 pm

"тут всю систему надо менять" я не против если подскажете лучший вариант, естественно не меняя железо)
Мой канал на youtube
skysilver
Сообщения: 1837
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 270 раз
Поблагодарили: 1080 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение skysilver » Пт авг 03, 2018 1:39 pm

sega6549 писал(а):
Пт авг 03, 2018 1:21 pm
"тут всю систему надо менять" я не против если подскажете лучший вариант, естественно не меняя железо)
Что за железо используется?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
sega6549
Сообщения: 419
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 47 раз
Поблагодарили: 67 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение sega6549 » Пт авг 03, 2018 2:22 pm

про железо не скажу, тут стоит умный дом от компании 1m, у них все модули и датчики можно опросить только http get, сами они ни чего не присылают но управляются через тот http get
Мой канал на youtube
Chainik
Сообщения: 576
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 65 раз
Поблагодарили: 157 раз

Re: как правильно опрашивать реле и прочее

Сообщение Chainik » Пт авг 03, 2018 3:04 pm

sega6549 писал(а):
Пт авг 03, 2018 1:20 pm
Chainik писал(а):
Пт авг 03, 2018 1:03 pm
Еще вариант, кроме "тут всю систему надо менять", такой: опрос каждого устройства запускать со своим индивидуальным setTimeOut. Тогда он будет запускаться каждый в своем индивидуальном процессе.
а если совпадут таймеры?
Если название таймеров совпадет, то более свежий таймер "затрет" более "старый". И течение таймера начнется с начала.
Однако можно сделать названия таймеров уникальными, добавив к наименованию таймера ".time()". Ну т.е. TimerName.time()
sega6549
Сообщения: 419
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 47 раз
Поблагодарили: 67 раз
Контактная информация:

Re: как правильно опрашивать реле и прочее

Сообщение sega6549 » Пт авг 03, 2018 3:06 pm

Chainik писал(а):
Пт авг 03, 2018 3:04 pm
sega6549 писал(а):
Пт авг 03, 2018 1:20 pm
Chainik писал(а):
Пт авг 03, 2018 1:03 pm
Еще вариант, кроме "тут всю систему надо менять", такой: опрос каждого устройства запускать со своим индивидуальным setTimeOut. Тогда он будет запускаться каждый в своем индивидуальном процессе.
а если совпадут таймеры?
Если название таймеров совпадет, то более свежий таймер "затрет" более "старый". И течение таймера начнется с начала.
Однако можно сделать названия таймеров уникальными, добавив к наименованию таймера ".time()". Ну т.е. TimerName.time()
я так и делаю, каждый таймер уникален, я говорил про время, допустим у всех таймеров стоит 10 секунд, не будут ли они воевать между собой и не получится так что выполнился один таймер а второй нет
Мой канал на youtube
Chainik
Сообщения: 576
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 65 раз
Поблагодарили: 157 раз

Re: как правильно опрашивать реле и прочее

Сообщение Chainik » Пт авг 03, 2018 3:30 pm

Я, конечно, не специалист, но представляется, что все зависит от производительности системы, т.е. способности "переварить" осуществление большого количества операций в ограниченное время.
Ну можно запускать таймеры в разбежкой в 1 секунду.
Т.е. выставить для таймера № 1 задержку в 1 сек., для таймера № 2 - 2 сек. и т.д. Они же ведь у вас в одном скрипте будут запускаться. Только тогда общее время перезапуска скрипта должно быть больше максимальной задержки в таймерах.
Ответить