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

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

Модератор: immortal

Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Пн июн 12, 2017 12:37 pm

Jeugenius писал(а):Ребята! Может вопрос глупый, но...! Реализовал управление​ тёплыми полами, датчики DS18B20 подключил к MegaD-2561 P30 и P31. Так вот информация с датчиков обновляется только когда включаешь или включаешь ТП. Не в вижу актуального роста температуры. Может где галку поставить забыл? Управление через сцену MDM.
Jeugenius, а каким образом вы опрашиваете датчик (в какой момент, каким кодом)?
Jeugenius
Сообщения: 18
Зарегистрирован: Пн мар 27, 2017 6:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Модуль "MegaD"

Сообщение Jeugenius » Пн июн 12, 2017 12:42 pm

Chainik писал(а):
Jeugenius писал(а):Ребята! Может вопрос глупый, но...! Реализовал управление​ тёплыми полами, датчики DS18B20 подключил к MegaD-2561 P30 и P31. Так вот информация с датчиков обновляется только когда включаешь или включаешь ТП. Не в вижу актуального роста температуры. Может где галку поставить забыл? Управление через сцену MDM.
Jeugenius, а каким образом вы опрашиваете датчик (в какой момент, каким кодом)?
Создан объект в классе "sensors" подкласс "temperaturesensors" привязано устройство с меги.

Отправлено с моего MI 5 через Tapatalk
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль

Сообщение Chainik » Пн июн 12, 2017 1:33 pm

Jeugenius писал(а):Создан объект в классе "sensors" подкласс "temperaturesensors" привязано устройство с меги.
Странно, но у меня нет класса "sensors" и нет подкласса "temperaturesensors" (есть класс "tempSensors" и есть класс "keySensors"). Но дело даже не в том.
У вас где-то должен быть вписан код опроса датчика вроде такого

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

$T=file_get_contents("http://192.168.0.14/sec/?pt=23&cmd=get");
$T = substr($T,5,5);
sg('TempSensor03.temp',$T); 
В результате выполнения этого кода в Обект.Свойство "TempSensor03.temp" запишется температура с датчика DS18B20, подключенного к порту P23.
Jeugenius
Сообщения: 18
Зарегистрирован: Пн мар 27, 2017 6:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Модуль

Сообщение Jeugenius » Пн июн 12, 2017 1:54 pm

Chainik писал(а):
Jeugenius писал(а):Создан объект в классе "sensors" подкласс "temperaturesensors" привязано устройство с меги.
Странно, но у меня нет класса "sensors" и нет подкласса "temperaturesensors" (есть класс "tempSensors" и есть класс "keySensors"). Но дело даже не в том.
У вас где-то должен быть вписан код опроса датчика вроде такого

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

$T=file_get_contents("http://192.168.0.14/sec/?pt=23&cmd=get");
$T = substr($T,5,5);
sg('TempSensor03.temp',$T);
В результате выполнения этого кода в Обект.Свойство "TempSensor03.temp" запишется температура с датчика DS18B20, подключенного к порту P23.
У объекта есть вот такой метод: sensors->onChange
http://192.168.0.2:80/objects/?object=T ... m=onChange&
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль

Сообщение Chainik » Пн июн 12, 2017 2:13 pm

Jeugenius писал(а):У объекта есть вот такой метод: sensors->onChange
http://192.168.0.2:80/objects/?object=T ... m=onChange&
А есть ли внутри этого метода код, из которого будет опрашиваться порт Меги с датчиком на понятном Меге языке?
Jeugenius
Сообщения: 18
Зарегистрирован: Пн мар 27, 2017 6:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Модуль

Сообщение Jeugenius » Ср июн 14, 2017 1:25 pm

Chainik писал(а):
Jeugenius писал(а):У объекта есть вот такой метод: sensors->onChange
http://192.168.0.2:80/objects/?object=T ... m=onChange&
А есть ли внутри этого метода код, из которого будет опрашиваться порт Меги с датчиком на понятном Меге языке?
Да вот метод onChange

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

//$params['t']
 $this->setProperty("updated",time());
 $this->setProperty("updatedTime",date("H:i",time()));
 $this->setProperty("alive",1); 
 
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
 $alive_timeout=2*60*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); 

if (!isset($params['v'])) {
 return;
}


$old_v=$this->getProperty('value');
$v=round($params['v'],1);

$this->setProperty('value',$v);
if ($params['uptime']) {
 $this->setProperty('uptime',$params['uptime']);
}

if ($v>$old_v) {
 $d=1;
} elseif ($v<$old_v) {
 $d=-1;
} else {
 $d=0;
}
$this->setProperty('direction',$d);

/*
$linked_room=$this->getProperty("LinkedRoom");
if ($linked_room) {
 setGlobal($linked_room.'.Temperature',$v);
}
*/ 
навыки программирования только в LUA начальный уровень, поэтому чет не пойму, что в нем. Я так понимаю связка объекта и самого датчика работает хорошо. Хочу понять почему сам датчик не шлет температуру, в момент изменения. Или же как-то нужно настроить постоянный опрос со стороны сервера и запись в объект при изменении?
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Ср июн 14, 2017 2:57 pm

Я тоже к программированию не имею никакого отношения. В представленном вами методе не увидел обращения к Меге по поводу опроса состояния порта. Код должен быть примерно такой, который я приводил выше.
А что касается вопроса почему сам датчик не шлет информацию при изменении, то вообще все устройства, работающие по протоколу 1-wire, не умеют по своей инициативе сообщать в сеть об этом.
Касательно вопроса о периодическом опросе порта, то можно поступить так же, как указано в конце моего длинного поста на стр.52. Там создается скрипт, который будет перезапускать сам себя через заданное время.
ILGAS
Сообщения: 366
Зарегистрирован: Пт июл 26, 2013 4:11 pm
Благодарил (а): 71 раз
Поблагодарили: 18 раз

Re: Модуль "MegaD"

Сообщение ILGAS » Пн июн 19, 2017 8:36 pm

Помогите пожалуйста. метод выполняется 2 раза.
Создал метод, в нем написано

Изображение
добавил метод в модуль megad, убрал действие по умолчанию из девайса и поставил галку "Skip default action"
Изображение
При нажатие на физическую кнопку модуль вызывается 2 раза.
Изображение
помогите найти причину.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Модуль "MegaD"

Сообщение Jager » Пн июн 19, 2017 9:51 pm

ILGAS писал(а):помогите найти причину.
Я вижу два варианта:
1. В настройках порта MegaD выбран режим P&R, соответственно метод вызывается при замыкании и при размыкании контакта.
2. Вы прописали say и в метод класса и в метод объекта ПР1_дверь.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: Модуль "MegaD"

Сообщение Chainik » Пн июн 19, 2017 10:02 pm

ILGAS писал(а):помогите найти причину.
...
Jager писал(а):2. Вы прописали say и в метод класса и в метод объекта ПР1_дверь.
При этом в настройке метода в пункте «Вызывать родительский метод» выставлено или "Перед выполнением кода" или "После выполнения кода".
Ответить