Энтузиасты добрый день.
В этот раз не с вопросом, а с решением. Возможно оно кому-то пригодится для своих проектов.
Имеем физический энкодер для контроля железа на месте и MQTT брокер с клиентом. Для сего это нужно? Для того чтобы можно было с экрана железа ESP32 мониторить текущее состояние и делать настройки, а также при необходимости дублировать то же самое через MQTT клиента.
Итак, исходные данные. Есть термодатчик, для которого энкодер должен задать уставку включения и отключения исполнительного механизма и MQTT клиент.
к схеме:
для начала по единичному опросу запрашиваем адрес датчика DS18x2x и присваиваем значение температуры с датчика переменной Температура 1 sens.
далее в блоке Mqtt main прописываем вашего брокера (статус MQTT для контроля онлайн)
далее идет блок публикации уставки температуры на брокер к его логике мы вернемся позднее.
далее идет блок публикации температуры с датчика на брокер (здесь магии нет)
далее идет блок подписки на уставку температуры с брокера, где необходимо подтверждение (вход EN) значений по приему.
Блок энкодера. (я его честно украл на страницах нашего форума, и он работает)
при вращении ручки энкодера а отсчет начинается с "0" мы определяем дельту старого значения энкодера с текущим значением и передаем данные в переменную "изменение значения на энкодере".
Блок сравнения.
при каждом цикле изменения значений на энкодере строе значение энкодера затирается.
далее идет блок присвоения значения уставки в зависимости от изменения значений с энкодера.
далее идет блок ограничения значений уставки от 60до 99.
далее для временного контроля передаются данные на ком порт впоследствии можно данную схему убрать
далее блок управления механизмом исполнения, где производится сверка текущей температуры с уставкой. по достижению гистерезиса уставки SR триггер включит или отключит исполнительный механизм в моем случае реле/светодиод.
теперь вернемся к блоку публикации. при вращении энкодера у меня всегда вылазили артефакты в виде пограничного переключения значений например значений 70 и 71 при этом на ком-порт летели кучу меняющихся значений. для компенсации данного эффекта применение значений происходит по задержке . в итоге значения с энкодера отправляются на брокер спустя 5 секунд и значение не меняется до изменения положения энкодера.
выражаю глубокую благодарность модератору форума Sancho за наставление и реализацию логики работы схемы.