Для тех кто только начал вникать в эту тему как это все еще и в majordomo прикрутить?Chainik писал(а):Насколько я понимаю, модуль MegaD создавался для отслеживания срабатывания входов Меги и инициации сервером выполнения тех или иных действий.
Что касается датчиков, то изменение их значений не воспринимаются модулем как срабатывание входа. Соответственно, модуль для ваших задач, видимо, вам не нужен.
Для запроса значения датчиков можно, например, в сценарии (периодически запускающемся) опрашивать ваши датчики командами как предлагает Андрей в своей статье (код примерно такой):Этот скрипт, который я назвал "opros", должен опрашивать датчики раз в 5 минут. Ну свои Объект.свойства для записи значений с датчиков сами допишите. ТипаКод: Выделить всё
//Отображение влажности (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);
Код: Выделить всё
$hum = file_get_contentshttp://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d"); sg('HTU21D.Hum',$hum);
[Модуль] MegaD (megad)
Модератор: immortal
Re: Модуль "MegaD"
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
Re: Модуль "MegaD"
Да вот минут 10 как пытаюсь именно по этой статье.Chainik писал(а):Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
-
- Сообщения: 18
- Зарегистрирован: Пт июн 30, 2017 9:43 pm
- Откуда: Златоуст
- Благодарил (а): 4 раза
- Поблагодарили: 0
Re: Модуль "MegaD"
Я правильно понял:ferenir писал(а):Все решается средствами мажора, не нужно никакого лишнего кода
1) Создаю сколько надо объектов tempSensor в дефолтом классе
2) Скрипт опроса шины и разбора строки ответа из методов объекта переношу в сценарий и вешаю в крон
3) Скрипт реакций на пороги показаний то же в сценарий и в крон.
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
А, собственно, что не получается? Там же даже с картинками.majkl84 писал(а):Да вот минут 10 как пытаюсь именно по этой статье.Chainik писал(а):Можете посмотреть здесь, как прикрутить нужный сценарий http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1328 (в конце первого поста топика).
Правда про датчики, с которых приходит значение, там ничего нет (надеюсь, пока).
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
В целом, да. Сам я пока такие датчики не подключал.koshnv писал(а):Я правильно понял:ferenir писал(а):Все решается средствами мажора, не нужно никакого лишнего кода
1) Создаю сколько надо объектов tempSensor в дефолтом классе
2) Скрипт опроса шины и разбора строки ответа из методов объекта переношу в сценарий и вешаю в крон
3) Скрипт реакций на пороги показаний то же в сценарий и в крон.
После запроса значения датчика, можно тут же (в этом же скрипте) вызвать необходимые действия (другой скрипт или метод какого-то объекта).
Мое понимание такое.
1. Делаем перезапускающися скрипт, который запрашивает значения датчиков и записывает их в свойства.
2. При выходе значения, измеренного датчиком, за определенные пределы (это можно проверить в этом же скрипте сразу после опроса) можно тут же запустить другой скрипт или метод (где будет указана реакция).
Вникая в предыдущий вопрос, понял, что Андрей все уже за нас сделал. Даже если датчик (по протоколу I2C) может выдавать 2-3 параметра, каждый из них можно узнать с помощью своего отдельного запроса.
Последний раз редактировалось Chainik Вт июл 04, 2017 9:34 pm, всего редактировалось 1 раз.
Re: Модуль "MegaD"
Вроде все получилось сделал сценарий
СпойлерПоказать
//Отображение влажности (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);
$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);
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
Теперь осталось использовать это в информерах на сцене, в меню, при построении графиков и т.д.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);
Re: Модуль "MegaD"
В меню сделал теперь надо чтоб данный сценарий периодически выполнялся смотрю в сторону cronChainik писал(а):Теперь осталось в информерах на сцене, в меню, при построении графиков и т.д.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);
-
- Сообщения: 1465
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 262 раза
- Поблагодарили: 455 раз
Re: Модуль "MegaD"
Можно и через крон.
А можно и в этом же скрипте организовать. Для этого допишите в конце сценария код, чтобы он перезапускал сам себя
В onNewMinute допишите
где "opros" - имя сценария (у вас, вероятно, будет свое).
В упомянутой статье на ab-log об этом написано.
А можно и в этом же скрипте организовать. Для этого допишите в конце сценария код, чтобы он перезапускал сам себя
Код: Выделить всё
setTimeOut('myTimer_opros','runScript("opros");',60*5);
Код: Выделить всё
if ($m%5 == 0) {runScript("opros");}
В упомянутой статье на ab-log об этом написано.
Последний раз редактировалось Chainik Чт июл 06, 2017 8:39 pm, всего редактировалось 1 раз.