Страница 1 из 2

Обновление данных в панеле управления

Добавлено: Пт фев 03, 2017 11:42 am
woow
К МЖД подключил привязал ESP8266 с датчиком BMЕ280 к МЖД. Всё работает данные по MQTT принимаются, но если отключить ESP -об этом МЖД не понимает в панели управления температура, влажность, давление показывает последние значение, даже после перезапуска МЖД.

Re: Обновление данных в панеле управления

Добавлено: Пт фев 03, 2017 11:54 am
DimSun75
woow писал(а):К МЖД подключил привязал ESP8266 с датчиком BMЕ280 к МЖД. Всё работает данные по MQTT принимаются, но если отключить ESP -об этом МЖД не понимает в панели управления температура, влажность, давление показывает последние значение, даже после перезапуска МЖД.
Не до конца понял, но похоже, что в нужных топиках нужно поставить флаг retain. Тогда при подписке на данный топик брокер будет отправлять текущее значение клиенту

Отправлено с моего SM-G850F через Tapatalk

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 1:27 am
woow
DimSun75 писал(а): Не до конца понял, но похоже, что в нужных топиках нужно поставить флаг retain. Тогда при подписке на данный топик брокер будет отправлять текущее значение клиенту
Поставил флаги retain, но всё по преждему по MQTT данные не поступают а на панеле "застывшие" цифры последней передачи.

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 1:36 am
DimSun75
Что за панель? Какая прошивка в ESP?

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 2:38 am
woow
DimSun75 писал(а):Что за панель?
http:// ваш IP/admin.php?pd=pz_&md=panel&inst=&action=mqtt

и соответственно Терминал / консоль или как там ещё лицевая оболочка или интерфейс пользователя
DimSun75 писал(а): Какая прошивка в ESP?
А прошивка к чему? Если ESP отключена и её не стало.

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 9:25 am
DimSun75
woow писал(а):
DimSun75 писал(а):Что за панель?
http:// ваш IP/admin.php?pd=pz_&md=panel&inst=&action=mqtt

и соответственно Терминал / консоль или как там ещё лицевая оболочка или интерфейс пользователя
DimSun75 писал(а): Какая прошивка в ESP?
А прошивка к чему? Если ESP отключена и её не стало.
Извиняюсь за мою тупость, но в чем вопрос? Нет esp - нет данных, цифры застываю. Включаете 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); 
выбрав его в качестве метода при изменении у какого нибудь полученного свойства, например у давления. При этом esp должно выдавать давление с определенной периодичностью. Время $alive_timeout должно быть больше, чем период выдачи значения с esp. Теперь по значению свойства alive МЖД может определить достоверны ли данные или нет.

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 11:37 am
woow
При чём тут тупость, если такой пример, что МЖД следит за обогревом на даче (на улице февраль -20), там уже давно терморегулятор загнулся, а вы всё ещё видите что температура на даче +15 градусов, потребление электро тоже в норме, и приезжаете а там уже давно всё инеем покрылось.
Можете по подробней куда эти строки вписывать?

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 1:48 pm
DimSun75
Вот теперь понятно. Я не знаю уровень ваших знаний, поэтому объясню с самого начала.

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

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 4:18 pm
woow
Спасибо за помощь но для меня всё таки сложно, очевидно не угадали уровня ... :)
Мною был создан объект
Объект :климат
Класс : климат
свойства климат.humidity
свойства климат.presure
свойства климат.temperature
так сюда ещё добавлять эти доп. свойства?
Методы : климат->onValueChange
Может быть что то подобное есть описано где то.

Re: Обновление данных в панеле управления

Добавлено: Сб фев 04, 2017 5:07 pm
DimSun75
woow писал(а):Спасибо за помощь но для меня всё таки сложно, очевидно не угадали уровня ... :)
Мною был создан объект
Объект :климат
Класс : климат
свойства климат.humidity
свойства климат.presure
свойства климат.temperature
так сюда ещё добавлять эти доп. свойства?
Методы : климат->onValueChange
Может быть что то подобное есть описано где то.
Объекты и классы лучше поразному называть, чтобы не путаться.

В класс климат добавить свойства alive, updated и updatedTime. У любого из свойств humidity, presume или temperature выбрать запускать метод при изменении onValueChange.

Отправлено с моего SM-G850F через Tapatalk