?

Log in

No account? Create an account

Новый функционал, контроллер.

Я попробую взять за привычку писать здесь также все нововведения в проект.

Сегодня я доработал механизм отвечающий за периодичность опроса устройств контроллером.
Казалось бы здесь все просто, опрашивай раз в период и все, но на самом деле нет.
В проекте периодичность опроса можно указать как для локации(всех ее устройств), так и для каждого устройства отдельно. Т.е. если указали для локации минуту, а для конкретного устройства 5 минут, то контроллер именно так и должен поступить - опросить все устройства каждую минуту кроме одного, которое нужно опрашивать каждые 5 минут.

А что если устройство не удалось опросить? Ну например оно опрашивается через интернет, и в этот момент опроса не было связи. И периодичность у нас выставлена не в минуту, а скажем в 6 часов. Ждать данных еще 6 часов в надежде, что в следующий момент опроса устройство будет доступно? На мой взгляд это не корректно.
Поэтому, с этого момента, контроллер повторяет опрос каждую минуту если предыдущий опрос был неудачным, не взирая на выставленный период опроса.

Comments

Да, период опроса - это промежуток времени не просто между опросами, а между успешными опросами.

И статус устройства должен отображать "BAD" при исчерпании попыток опроса, до тех пор, пока не произойдет успешный опрос. Естественно, данные с BAD устройства, считаются не валидными и использовать их нельзя.
Я думаю, что перед тем как давать подобные советы, культурно было бы изучить наличие в проекте подобного функционала. Он безусловно есть. :)

"Межуд успешными опросами" - это актуально для крайне ограниченной модели опроса, типа как проекты ардуино, здесь сделано по другому не потому, что я не догадался, а потому, что есть серьезные причины. :)
Элеменарно, если отсчитывать период от успешных опросов, то начало опроса устройств со временем может сильно отличаться.
И обрабатывать такие показания от нескольких устройств будет просто некорректно.
Это причина которую на сходу вспомнил, но она там не одна.

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

Где изучить? Я видимо пропустил ссылку на документацию, поделитесь пожалуйста.
:) Да, это проблема, пробелма нехватки времени и другие приоритеты.
Но если посмотреть внимательно на скриншоты клиента, то там будет видно поле "Доступность устройства", например здесь https://5277.livejournal.com/17206.html
Еще, насчет отображения состояния устройства.
В принципе в моем проекте оно не обязательно, это больше свойственно скадам, где сидит дежурный и наблюдает.

Здесь же основная задача системы - работать без участия человека.
Она должна предоставлять информацию только в случае нештатой работы.
Т.е. если это допустимо, то сценарии интегратором должны быть написаны так, что даже в случае недосутпности не критического устройства информирования не будет.
Информирование будет, когда отвалится устройство для которого интегратор явно прописал, что нужно информировать при его недоступности.

Вряд ли в автоматизированной системе будет кому-то интересно какое состояние каждого устройства и какова причина. Ну кроме конечно инегратора на базе настройки и тестирования.