Обновление данных в панеле управления
Модератор: immortal
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Обновление данных в панеле управления
К МЖД подключил привязал ESP8266 с датчиком BMЕ280 к МЖД. Всё работает данные по MQTT принимаются, но если отключить ESP -об этом МЖД не понимает в панели управления температура, влажность, давление показывает последние значение, даже после перезапуска МЖД.
Raspberry Pi 3B+
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Обновление данных в панеле управления
Не до конца понял, но похоже, что в нужных топиках нужно поставить флаг retain. Тогда при подписке на данный топик брокер будет отправлять текущее значение клиентуwoow писал(а):К МЖД подключил привязал ESP8266 с датчиком BMЕ280 к МЖД. Всё работает данные по MQTT принимаются, но если отключить ESP -об этом МЖД не понимает в панели управления температура, влажность, давление показывает последние значение, даже после перезапуска МЖД.
Отправлено с моего SM-G850F через Tapatalk
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: Обновление данных в панеле управления
Поставил флаги retain, но всё по преждему по MQTT данные не поступают а на панеле "застывшие" цифры последней передачи.DimSun75 писал(а): Не до конца понял, но похоже, что в нужных топиках нужно поставить флаг retain. Тогда при подписке на данный топик брокер будет отправлять текущее значение клиенту
Raspberry Pi 3B+
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: Обновление данных в панеле управления
http:// ваш IP/admin.php?pd=pz_&md=panel&inst=&action=mqttDimSun75 писал(а):Что за панель?
и соответственно Терминал / консоль или как там ещё лицевая оболочка или интерфейс пользователя
А прошивка к чему? Если ESP отключена и её не стало.DimSun75 писал(а): Какая прошивка в ESP?
Raspberry Pi 3B+
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Обновление данных в панеле управления
Извиняюсь за мою тупость, но в чем вопрос? Нет esp - нет данных, цифры застываю. Включаете esp - данные появляются. Если так, то вроде все правильно работаетwoow писал(а):http:// ваш IP/admin.php?pd=pz_&md=panel&inst=&action=mqttDimSun75 писал(а):Что за панель?
и соответственно Терминал / консоль или как там ещё лицевая оболочка или интерфейс пользователяА прошивка к чему? Если ESP отключена и её не стало.DimSun75 писал(а): Какая прошивка в ESP?
update:
А вот если нужно чтобы МЖД понимал достоверные данные или нет, то есть несколько путей решения вопроса:
1. Добавить esp в модуль "Устройства Online", и по наличию или отсутствию устройства определять достоверны ли данные
2. В классе, куда записываются полученные данные, добавить свойство alive, updated, updatedTime и метод примерно такого содержания:
Код: Выделить всё
$this->setProperty("updated",time());
$this->setProperty("updatedTime",date("H:i",time()));
$this->setProperty("alive",1);
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
$alive_timeout=30*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
- Рейтинг: 1.16%
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: Обновление данных в панеле управления
При чём тут тупость, если такой пример, что МЖД следит за обогревом на даче (на улице февраль -20), там уже давно терморегулятор загнулся, а вы всё ещё видите что температура на даче +15 градусов, потребление электро тоже в норме, и приезжаете а там уже давно всё инеем покрылось.
Можете по подробней куда эти строки вписывать?
Можете по подробней куда эти строки вписывать?
Raspberry Pi 3B+
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Обновление данных в панеле управления
Вот теперь понятно. Я не знаю уровень ваших знаний, поэтому объясню с самого начала.
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
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
- Рейтинг: 2.33%
- woow
- Сообщения: 821
- Зарегистрирован: Пн июл 04, 2016 8:46 am
- Откуда: Mazeikiai
- Благодарил (а): 125 раз
- Поблагодарили: 46 раз
Re: Обновление данных в панеле управления
Спасибо за помощь но для меня всё таки сложно, очевидно не угадали уровня ... 
Мною был создан объект
Объект :климат
Класс : климат
свойства климат.humidity
свойства климат.presure
свойства климат.temperature
так сюда ещё добавлять эти доп. свойства?
Методы : климат->onValueChange
Может быть что то подобное есть описано где то.

Мною был создан объект
Объект :климат
Класс : климат
свойства климат.humidity
свойства климат.presure
свойства климат.temperature
так сюда ещё добавлять эти доп. свойства?
Методы : климат->onValueChange
Может быть что то подобное есть описано где то.
Raspberry Pi 3B+
-
- Сообщения: 318
- Зарегистрирован: Вс янв 01, 2017 8:32 pm
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 44 раза
Re: Обновление данных в панеле управления
Объекты и классы лучше поразному называть, чтобы не путаться.woow писал(а):Спасибо за помощь но для меня всё таки сложно, очевидно не угадали уровня ...
Мною был создан объект
Объект :климат
Класс : климат
свойства климат.humidity
свойства климат.presure
свойства климат.temperature
так сюда ещё добавлять эти доп. свойства?
Методы : климат->onValueChange
Может быть что то подобное есть описано где то.
В класс климат добавить свойства alive, updated и updatedTime. У любого из свойств humidity, presume или temperature выбрать запускать метод при изменении onValueChange.
Отправлено с моего SM-G850F через Tapatalk