SmartLiving.ru
http://majordomo.smartliving.ru/forum/

Модуль "MegaD"
http://majordomo.smartliving.ru/forum/viewtopic.php?f=5&t=2263
Страница 82 из 84

Автор:  kas58 [ Чт сен 21, 2017 3:06 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

Jilber писал(а):
Уже пробовали убрать подобные вещи в этой теме.

Раньше у меня такой вариант работал
Код:
$tmp[0]=str_replace("hum:", "", $tmp[1]);

После обновления модуля, это уже не помогает.

Автор:  kas58 [ Чт сен 21, 2017 3:16 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

kas58 писал(а):
Jilber писал(а):
Уже пробовали убрать подобные вещи в этой теме.

Раньше у меня такой вариант работал
Код:
$tmp[0]=str_replace("hum:", "", $tmp[1]); 

После обновления модуля, это уже не помогает.

Вот такой вариант уже работает
Код:
$tmp=explode('/'$states[$i]);
       
$tmp[0]=str_replace("temp:"""$tmp[0]);
       
$tmp[0]=str_replace("hum:"""$tmp[0]);
       
$prop['CURRENT_VALUE_STRING']=$tmp[0];
       if (isset(
$tmp[1])) {
       
$tmp[1]=str_replace("temp:"""$tmp[1]);
       
$tmp[1]=str_replace("hum:"""$tmp[1]);
       
$prop['CURRENT_VALUE_STRING2']=$tmp[1]; 

Но хочется что бы на уровне модуля поправили, после обновлений все слетает, не удобно.

Автор:  andrey1509 [ Ср окт 11, 2017 6:08 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

majkl84 писал(а):
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_dev=htu21d&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_dev=bmx280&i2c_par=1"); sg('BME280.temp',$temp);
//Отображение влажности (BME280)
$hum = file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2"); sg('BME280.hum',$hum);

Теперь осталось в информерах на сцене, в меню, при построении графиков и т.д.


В меню сделал теперь надо чтоб данный сценарий периодически выполнялся смотрю в сторону cron

Доброго времени. Если есть возможность напишите пошагово как подключали датчики в МД.
Для особо одаренных ......

Автор:  Chainik [ Ср окт 11, 2017 8:32 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

А какие датчики интересуют?

В общем плане порядок действий такой (предполагаем, что датчик подключен корректно и его показания мы наблюдаем в вэб-интерфейсе Меги):
1. Записываем значение датчика в какое нибудь Объект.Свойство.
(Например, за запись значения температуры с датчика DS18B20 у меня отвечает такой код
Код:
$T=file_get_contents("http://192.168.0.14/sec/?pt=23&cmd=get");
$T substr($T,5,5);
sg('TempSensor03.temp',$T); 

Датчик, как видно, подключен к порту P23.
Код опроса можно поместить в сценарий или в метод.)

2. Ясно, что единожды запрошенное значение мало интересно. Значит нужно организовать периодический опрос.
Для этого можно записать в «onNewMinute» (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute) такой код
Код:
if ($m%== 0) {runScript("GetТemperature");} 

Такой код будет запускать сценарий (названный "GetТemperature") с кодом опроса датчика раз в 5 минут.

3. Использовать полученные данные в интерфейсе. Можно их, например, вставить в информер на сцене или построить график (https://youtu.be/Tz9-tu9R7dM).

Автор:  andrey1509 [ Чт окт 12, 2017 6:44 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

Chainik писал(а):
А какие датчики интересуют?

Датчик BME280. Попробовал не получается.

Автор:  Chainik [ Чт окт 12, 2017 8:05 pm ]
Заголовок сообщения:  Re: Модуль "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&i ... &i2c_par=1
Отображение влажности (BME280)
http://192.168.0.14/sec/?pt=31&scl=30&i ... &i2c_par=2


Ну вот же у товарища majkl84 все получилось
Код:
//Отображение атмосферного давления (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_dev=bmx280&i2c_par=1"); sg('BME280.temp',$temp);
//Отображение влажности (BME280)
$hum file_get_contents("http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=2"); sg('BME280.hum',$hum);
 

Автор:  andrey1509 [ Чт окт 12, 2017 8:11 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

Chainik писал(а):
У меня такого датчика нет, но это, думаю не помеха.

Читаю из описания как получать значения с этого датчика:

Ну вот же у товарища majkl84 все получилось

Читал о этом , видимо мозгов не хватает :oops:
Вот к этому товарищу , в основном, и направлено обращение.
Он может занят или еще чего......., поэтому не в личку , а на форуме. Есть же такие как я, у которых не получается.

Автор:  Chainik [ Чт окт 12, 2017 8:20 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

А что не получается то?

Если, допустим, выполнить из адресной строки браузера (IP-адрес, пароль и порт, конечно же ваши):
Код:
http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280  

то значение атмосферного давления с датчика выводится?

Автор:  andrey1509 [ Чт окт 12, 2017 8:29 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

Chainik писал(а):
А что не получается то?

Если, допустим, выполнить из адресной строки браузера (IP-адрес, пароль и порт, конечно же ваши):
Код:
http://10.0.6.65/sec/?pt=31&scl=30&i2c_dev=bmx280     

то значение атмосферного давления с датчика выводится?

Да

Вложения:
Снимок.PNG
Снимок.PNG [ 9.09 КБ | Просмотров: 96 ]

Автор:  Chainik [ Чт окт 12, 2017 8:46 pm ]
Заголовок сообщения:  Re: Модуль "MegaD"

Хорошо!
У вас есть в Мажордомо Объект.свойство, куда должно записываться значение атм.давления с этого датчика?
Если нет, создайте это свойство.
Хотя, тренероваться проще всего на температуре. Для температуры тоже нужно создать свойство.
Дальше, например, в методы объекта надо записать метод за запроса значения температуры с датчика:
Код:
$temp = file_get_contents("http://192.168.1.14/sec/?pt=23&scl=24&i2c_dev=bmx280&i2c_par=1");
sg('BME280.temp',$temp);

Вместо "BME280.temp", конечно, должно быть указано ваше Объект.свойство.

Затем попробуйте позапускать этот метод вручную (при этом можно рукой нагревать датчик или как-то еще на него температурно воздействовать, чтобы посмотреть как меняются показания).

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

Страница 82 из 84 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/