Вот теперь понятно. Я не знаю уровень ваших знаний, поэтому объясню с самого начала.
1. Создаем класс, например Sensors.
2. Добавляем в него метод onValueChange. В качестве кода вставляем приведены мной выше.
3. Добавляем свойство updated.
4. Добавляем свойство updatedTime
5. Добавляем свойство alive
6. Добавляем свойство value. В "Запускать метод при изменении" выбираем onValueChange.
7. Добавляем объект, например Temper1.
8. Идём в модуль mqtt. То, что вы назвали панелью, просто список всех топиков, на которые подписан МЖД. Заходим в свойства топика с нужной нам температурой. В "Связанный объект" выбираем наш Temper1, а "Свойство" - value.
Ну вот и все. Что у нас получилось: esp публикует значение температуры. Брокер mqtt передаёт его мжд, а он записывает его в свойство value объекта Temper1. Далее запускается метод onValueChange. В этом методе в свойства updated и updatedTime объекта Temper1 записывается текущее время. (Это время последнего обновления значения температуры). Далее устанавливается свойство alive в 1. Это говорит о том, что данные получены и актуальны. И далее запускается таймер, при срабатывании которого свойство alive устанавливается в 0. Если данные из esp поступают с периодичностью, например 1 минута, то этот таймер нужно запускать секунд на 70 например.
Теперь можно Temper1.value вставлять куда угодно. Это текущее значение температуры. При этом если Temper1.alive равен 1, то значения актуальны, а если 0, то нет. И в Temper1.updatedTime можно увидеть время последнего получения данных.
Можно в методе onNewMinute проверять значение Temper1.alive и если оно равно 0, то бить тревогу.
Примерно как-то так это работает. Я бы вообще мог посоветовать никакие классы не создавать, а использовать новый модуль "Простые устройства". Там это все реализованно из коробки.Но во первых, не знаю есть ли он в стабильной ветке. И во вторых, для температуры там таймер взводится на 2 дня, что уж очень много. А просто поправить его не так и просто
Отправлено с моего SM-G850F через Tapatalk