Алгоритм переключения состояний оборудования
Не могу найти подходящий алгоритм. Для описания сути вопроса возьму для примера упрощенную ситуацию. Например, мы имеем датчик температуры в помещении и некоторое оборудование, типа нагревателя, вентилятора и жалюзи воздуховода. При определенной температуре автоматика должна менять режимы работы этого оборудования, условно, когда холодно - нагревать, когда тепло - охлаждать. Можно задать пару порогов, например при температуре ниже 20 включать обогрев, при температуре выше 27 - охлаждение. Казалось бы, делаем конечный автомат и управляем состояниями.
Но у меня возникает вопрос по граничным ситуациям. То есть когда температура начинает колебаться в районе одной из границ, например 20 градусов, автоматика начинает непрерывно дергать оборудование, постоянно включая-выключая его, что плохо. Логично было бы сделать разные границы для перехода "ИЗ" и "В" какое-то состояние. Например, комната при низкой температуре нагревается до 20 градусов, после чего нагрев выключается и включается просто вентиляция помещения. При охлаждении, обратный переход в нагрев и включение обогревателей происходите не в 20, а допустим в 17 градусов. Разнеся таким образом температуры, получится избежать проблемы граничных состояний и дерганья аппаратуры.
Однако, в таком варианте я не понимаю можно ли сделать некое подобие конечного автомата и возможно ли это вообще. Этот пример упрощенный, в реальности оборудования, условий переходов между состояниями и самих состояний кратно больше. Не хочется решать задачу в лоб и городить кучу IF'ов и SWITCH'ей в автоматизации, делая код нечитаемым, хочется сделать решение более правильное и красивое, но знаний и мат.аппарата у меня для этого не хватает. Может кто сталкивался с подобным или подскажет куда копать, чтобы найти подходящий алгоритм?