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

Разработка дополнительных модулей, подключение различных приложений.

Модераторы: Bagir, Ivan, Vit, immortal, PAV

Unripe
Сообщения: 11
Зарегистрирован: Чт июл 26, 2018 8:23 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение Unripe » Вт сен 18, 2018 11:58 am

Модуль MegaD devices не корректно принимает данные с bme280 c самой меги. Строка приходит из исполнительного модуля в виде temp:23.90/press:742.59/hum:56.852. Соответственно модуль Megad в мажордоме видит только первые два значения, влажность теряется. Как быть?
Chainik
Сообщения: 605
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 70 раз
Поблагодарили: 169 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт сен 18, 2018 12:52 pm

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 минут в свойство будет записываться новое значение влажности.
За это сообщение автора Chainik поблагодарили (всего 2):
semkyskov (Вт сен 18, 2018 2:48 pm) • Genplane (Вт сен 18, 2018 3:59 pm)
Рейтинг: 2.74%
Unripe
Сообщения: 11
Зарегистрирован: Чт июл 26, 2018 8:23 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение Unripe » Вт сен 18, 2018 1:54 pm

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

Re: Модуль "MegaD"

Сообщение Chainik » Вт сен 18, 2018 2:43 pm

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

А конкретно по вашему вопросу попробуйте почитать вот здесь (https://majordomo.smartliving.ru/forum/ ... f=4&t=1534).
Unripe
Сообщения: 11
Зарегистрирован: Чт июл 26, 2018 8:23 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение Unripe » Вт сен 18, 2018 3:02 pm

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

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

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

а что делать теперь с пхп кодом который ты дал я и не понимаю.
Так поплакался, пойду дальше головой об лед биться , каждый затык для меня сейчас проблема ))))
Chainik
Сообщения: 605
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 70 раз
Поблагодарили: 169 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт сен 18, 2018 3:50 pm

С "Простыми устройствами" не разбирался (говорят, не такие уж они и простые), поэтому тут подсказать не могу.
Что касается вопроса, куда "запихивать" мой 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" необходимо включить историю.
За это сообщение автора Chainik поблагодарили (всего 2):
Unripe (Вт сен 18, 2018 4:26 pm) • semkyskov (Вт сен 18, 2018 11:39 pm)
Рейтинг: 2.74%
Nail
Сообщения: 18
Зарегистрирован: Пн мар 05, 2018 7:09 am
Благодарил (а): 10 раз
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение Nail » Ср окт 31, 2018 1:57 pm

Тут собрался попробовать собрать мини Систему (хотя в этом "ноль") контроля отоплением на Мега 2561 (https://www.ab-log.ru/smart-house/ethernet/megad-2561)
КАК и куда можно подключить датчик NTC 10К ? (https://ru.aliexpress.com/item/2x-NTC-1 ... 33edHwHylt)
Подскажите пжл.(так как их удобно по резьбе вкрутить в бак с тенами(для точности показаний) мне так кажется.
skysilver
Сообщения: 2118
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 301 раз
Поблагодарили: 1225 раз
Контактная информация:

Re: Модуль "MegaD"

Сообщение skysilver » Ср окт 31, 2018 2:26 pm

Nail писал(а):
Ср окт 31, 2018 1:57 pm
КАК и куда можно подключить датчик NTC 10К ?
Имхо, на на форуме аб-лог в части железа быстрее получишь ответ.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
serghei
Сообщения: 2308
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 263 раза
Поблагодарили: 219 раз

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

Сообщение serghei » Ср окт 31, 2018 4:38 pm

Хмм.... Похоже это аналоговый датчик и на сайте продовца есть калибровочные таблицы. Можно в реальном времени мониторить температуру.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Nail
Сообщения: 18
Зарегистрирован: Пн мар 05, 2018 7:09 am
Благодарил (а): 10 раз
Поблагодарили: 0

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

Сообщение Nail » Вс ноя 18, 2018 10:16 pm

Знает кто как реализовать в МД , сразу двух датчиков на одном порту Меги 2561?
Вложения
Screenshot_2.jpg
Screenshot_2.jpg (5.23 КБ) 216 просмотров
Screenshot_1.jpg
Screenshot_1.jpg (6.04 КБ) 216 просмотров
Ответить