Страница 103 из 140

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 11:58 am
Unripe
Модуль MegaD devices не корректно принимает данные с bme280 c самой меги. Строка приходит из исполнительного модуля в виде temp:23.90/press:742.59/hum:56.852. Соответственно модуль Megad в мажордоме видит только первые два значения, влажность теряется. Как быть?

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 12:52 pm
Chainik
Unripe писал(а):
Вт сен 18, 2018 11:58 am
...Как быть?
Вообще не смотреть, что пишется в модуле "MegaD". Запрашивать конкретный параметр с датчика отдельными запросами (из инструкции к Меге):

Код: Выделить всё

Отображение атмосферного давления (BMP280/BME280)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bmx280
Отображение температуры (BMP280/BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=1
Отображение влажности (BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2
Пишете скрипт или метод с примерно таким кодом:

Код: Выделить всё

$Hum = file_get_contents("http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2");
sg('Имя_вашего_объекта.Имя_свойства',$Hum);
Затем организовываете периодический запуск скрипта или метода. Можно из Cron, можно просто дописать строчку в «onNewMinute» (ниже строки «$m=date('i',time());»):
для метода:

Код: Выделить всё

if ($m%5 == 0) {callMethod('Имя_вашего_объекта.Имя_метода');}
для сценария:

Код: Выделить всё

if ($m%5 == 0) {runScript("Имя_вашего_сценария");}
Каждые 5 минут в свойство будет записываться новое значение влажности.

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 1:54 pm
Unripe
Chainik писал(а):
Вт сен 18, 2018 12:52 pm
Unripe писал(а):
Вт сен 18, 2018 11:58 am
...Как быть?
Вообще не смотреть, что пишется в модуле "MegaD". Запрашивать конкретный параметр с датчика отдельными запросами (из инструкции к Меге):
Супер, я в пхп 0, сейчас сяду пробовать. А опрашивать датчик раз в 5 секунд возможно?

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 2:43 pm
Chainik
Unripe писал(а):
Вт сен 18, 2018 1:54 pm
... А опрашивать датчик раз в 5 секунд возможно?
Возможно, конечно. Только у меня вопрос, а зачем так часто? Для решения какой практической задачи?

А конкретно по вашему вопросу попробуйте почитать вот здесь (https://majordomo.smartliving.ru/forum/ ... f=4&t=1534).

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 3:02 pm
Unripe
Привет, Да вот смысл в том что бы держать влажность когда включается паровой душ, дабы сразу включилась вытяжка и приточка в ванную комнату.
Когда идет проветривание зимой и в холодные месяцы, как только температура в контрольных зонах дошла до минимума, проветривание остановилось.
Температура носителя в трубе ГВС - как только падает что бы шла фиксация и оповещение.

А так некоторые датчики хочется опрашивать раз в минуту а какие то раз в секунду. Освоил пока только через Простые устройства, да частично пробую блокли. Php для меня темный лес.

Вот по твоему примеру отредактировал метод valueUpdate, получил влажность, она с 53,123 а хочу что бы были только десятые, из базы данных взял код создал метод, в связке с ПУ и MegaD devices все ок
// Получаем данные от сенсора
$value = $params['value'];
// Фильтруем данные
//if ($value > 60 || $value < -60) return;
// Выполняем округление с точностью до одного знака
$value = round($value, 1);
// Сохраняем обработанное значение в свойство объекта
$this->setProperty('value', $value);

а что делать теперь с пхп кодом который ты дал я и не понимаю.
Так поплакался, пойду дальше головой об лед биться , каждый затык для меня сейчас проблема ))))

Re: Модуль "MegaD"

Добавлено: Вт сен 18, 2018 3:50 pm
Chainik
С "Простыми устройствами" не разбирался (говорят, не такие уж они и простые), поэтому тут подсказать не могу.
Что касается вопроса, куда "запихивать" мой php-код... Вам надо немножко "поразбираться" в объектной модели Мажордомо (классы, объекты, методы, свойства и т.д.).

Делать с кодом примерно следующее (это не догма, просто как вариант).
1. Создаете в объектах новый класс. Называете его, к примеру "Sensors".
2. В классе создаете Метод, например, "GetHumidity". И создаете свойство, например, "Нumidity".
3. Создаете в классе Sensors новый объект, например, "HumSensor01". Добавляете в метод GetHumidity ДАННОГО ОБЪЕКТА (а не класса) код:

Код: Выделить всё

$Hum = file_get_contents("http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2");
$Hum = round($Hum, 1);
$this->setProperty('Нumidity',$Hum);
Для теста, чтобы убедиться, что все в коде написано правильно, запускаете вручную Объект.Метод "HumSensor01.GetHumidity". После исполнения, в свойстве "Нumidity" объекта "HumSensor01" должно появиться текущее значение влажности с датчика.

4. В «onNewMinute» (ниже строки «$m=date('i',time());») пишите:

Код: Выделить всё

if ($m%5 == 0) {callMethod('HumSensor01.GetHumidity');}
Если надо опрашивать раз в минуту, тогда просто пишите:

Код: Выделить всё

callMethod('HumSensor01.GetHumidity');
5. Если надо строить графики, у свойства класса "Нumidity" необходимо включить историю.

Re: Модуль "MegaD"

Добавлено: Ср окт 31, 2018 1:57 pm
Nail
Тут собрался попробовать собрать мини Систему (хотя в этом "ноль") контроля отоплением на Мега 2561 (https://www.ab-log.ru/smart-house/ethernet/megad-2561)
КАК и куда можно подключить датчик NTC 10К ? (https://ru.aliexpress.com/item/2x-NTC-1 ... 33edHwHylt)
Подскажите пжл.(так как их удобно по резьбе вкрутить в бак с тенами(для точности показаний) мне так кажется.

Re: Модуль "MegaD"

Добавлено: Ср окт 31, 2018 2:26 pm
skysilver
Nail писал(а):
Ср окт 31, 2018 1:57 pm
КАК и куда можно подключить датчик NTC 10К ?
Имхо, на на форуме аб-лог в части железа быстрее получишь ответ.

Re: [Модуль] MegaD (megad)

Добавлено: Ср окт 31, 2018 4:38 pm
serghei
Хмм.... Похоже это аналоговый датчик и на сайте продовца есть калибровочные таблицы. Можно в реальном времени мониторить температуру.

Re: [Модуль] MegaD (megad)

Добавлено: Вс ноя 18, 2018 10:16 pm
Nail
Знает кто как реализовать в МД , сразу двух датчиков на одном порту Меги 2561?