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

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

Модератор: immortal

majkl84
Сообщения: 11
Зарегистрирован: Пт июн 30, 2017 9:11 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение majkl84 » Вт июл 04, 2017 8:32 pm

Chainik писал(а):Насколько я понимаю, модуль MegaD создавался для отслеживания срабатывания входов Меги и инициации сервером выполнения тех или иных действий.
Что касается датчиков, то изменение их значений не воспринимаются модулем как срабатывание входа. Соответственно, модуль для ваших задач, видимо, вам не нужен.
Для запроса значения датчиков можно, например, в сценарии (периодически запускающемся) опрашивать ваши датчики командами как предлагает Андрей в своей статье (код примерно такой):

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

//Отображение влажности (HTU21D/Si7021)
file_get_contentshttp://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d");
//Отображение температуры (HTU21D)
file_get_contentshttp://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d&i2c_par=1");

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

setTimeOut('myTimer_opros','runScript("opros");',60*5);
Этот скрипт, который я назвал "opros", должен опрашивать датчики раз в 5 минут. Ну свои Объект.свойства для записи значений с датчиков сами допишите. Типа

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

$hum = file_get_contentshttp://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d");
sg('HTU21D.Hum',$hum);
Для тех кто только начал вникать в эту тему как это все еще и в majordomo прикрутить?
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 9:01 pm

Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
majkl84
Сообщения: 11
Зарегистрирован: Пт июн 30, 2017 9:11 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение majkl84 » Вт июл 04, 2017 9:05 pm

Chainik писал(а):Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
Да вот минут 10 как пытаюсь именно по этой статье.
koshnv
Сообщения: 18
Зарегистрирован: Пт июн 30, 2017 9:43 pm
Откуда: Златоуст
Благодарил (а): 4 раза
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение koshnv » Вт июл 04, 2017 9:08 pm

ferenir писал(а):Все решается средствами мажора, не нужно никакого лишнего кода
Я правильно понял:
1) Создаю сколько надо объектов tempSensor в дефолтом классе
2) Скрипт опроса шины и разбора строки ответа из методов объекта переношу в сценарий и вешаю в крон
3) Скрипт реакций на пороги показаний то же в сценарий и в крон.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 9:10 pm

majkl84 писал(а):
Chainik писал(а):Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
Да вот минут 10 как пытаюсь именно по этой статье.
А, собственно, что не получается? Там же даже с картинками.
Правда про датчики, с которых приходит значение, там ничего нет (надеюсь, пока).
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 9:16 pm

koshnv писал(а):
ferenir писал(а):Все решается средствами мажора, не нужно никакого лишнего кода
Я правильно понял:
1) Создаю сколько надо объектов tempSensor в дефолтом классе
2) Скрипт опроса шины и разбора строки ответа из методов объекта переношу в сценарий и вешаю в крон
3) Скрипт реакций на пороги показаний то же в сценарий и в крон.
В целом, да. Сам я пока такие датчики не подключал.
После запроса значения датчика, можно тут же (в этом же скрипте) вызвать необходимые действия (другой скрипт или метод какого-то объекта).
Мое понимание такое.
1. Делаем перезапускающися скрипт, который запрашивает значения датчиков и записывает их в свойства.
2. При выходе значения, измеренного датчиком, за определенные пределы (это можно проверить в этом же скрипте сразу после опроса) можно тут же запустить другой скрипт или метод (где будет указана реакция).

Вникая в предыдущий вопрос, понял, что Андрей все уже за нас сделал. Даже если датчик (по протоколу I2C) может выдавать 2-3 параметра, каждый из них можно узнать с помощью своего отдельного запроса.
Последний раз редактировалось Chainik Вт июл 04, 2017 9:34 pm, всего редактировалось 1 раз.
majkl84
Сообщения: 11
Зарегистрирован: Пт июн 30, 2017 9:11 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение majkl84 » Вт июл 04, 2017 9:30 pm

Вроде все получилось сделал сценарий
СпойлерПоказать
//Отображение влажности (HTU21D/Si7021)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=htu21d"); sg('HTU21D.Hum',$hum);
//Отображение температуры (HTU21D)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('HTU21D.Temp',$temp);

//Отображение атмосферного давления (BMP280/BME280)
$pres = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280"); sg('BME280.pres',$pres);
//Отображение температуры (BMP280/BME280)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('BME280.temp',$temp);
//Отображение влажности (BME280)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=2"); sg('BME280.hum',$hum);
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 9:38 pm

majkl84 писал(а):Вроде все получилось сделал сценарий
СпойлерПоказать
//Отображение влажности (HTU21D/Si7021)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=htu21d"); sg('HTU21D.Hum',$hum);
//Отображение температуры (HTU21D)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('HTU21D.Temp',$temp);

//Отображение атмосферного давления (BMP280/BME280)
$pres = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280"); sg('BME280.pres',$pres);
//Отображение температуры (BMP280/BME280)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('BME280.temp',$temp);
//Отображение влажности (BME280)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=2"); sg('BME280.hum',$hum);
Теперь осталось использовать это в информерах на сцене, в меню, при построении графиков и т.д.
majkl84
Сообщения: 11
Зарегистрирован: Пт июн 30, 2017 9:11 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "MegaD"

Сообщение majkl84 » Вт июл 04, 2017 9:43 pm

Chainik писал(а):
majkl84 писал(а):Вроде все получилось сделал сценарий
СпойлерПоказать
//Отображение влажности (HTU21D/Si7021)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=htu21d"); sg('HTU21D.Hum',$hum);
//Отображение температуры (HTU21D)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('HTU21D.Temp',$temp);

//Отображение атмосферного давления (BMP280/BME280)
$pres = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280"); sg('BME280.pres',$pres);
//Отображение температуры (BMP280/BME280)
$temp = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=1"); sg('BME280.temp',$temp);
//Отображение влажности (BME280)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_ ... &i2c_par=2"); sg('BME280.hum',$hum);
Теперь осталось в информерах на сцене, в меню, при построении графиков и т.д.
В меню сделал теперь надо чтоб данный сценарий периодически выполнялся смотрю в сторону cron
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Вт июл 04, 2017 9:49 pm

Можно и через крон.
А можно и в этом же скрипте организовать. Для этого допишите в конце сценария код, чтобы он перезапускал сам себя

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

setTimeOut('myTimer_opros','runScript("opros");',60*5);
В onNewMinute допишите

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

if ($m%5 == 0) {runScript("opros");} 
где "opros" - имя сценария (у вас, вероятно, будет свое).
В упомянутой статье на ab-log об этом написано.
Последний раз редактировалось Chainik Чт июл 06, 2017 8:39 pm, всего редактировалось 1 раз.
Ответить