Страница 68 из 141

Re: Модуль "MegaD"

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

Re: Модуль "MegaD"

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

Отправлено с моего MI 5 через Tapatalk

Re: Модуль

Добавлено: Пн июн 12, 2017 1:33 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.

Re: Модуль

Добавлено: Пн июн 12, 2017 1:54 pm
Jeugenius
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&

Re: Модуль

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

Re: Модуль

Добавлено: Ср июн 14, 2017 1:25 pm
Jeugenius
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 начальный уровень, поэтому чет не пойму, что в нем. Я так понимаю связка объекта и самого датчика работает хорошо. Хочу понять почему сам датчик не шлет температуру, в момент изменения. Или же как-то нужно настроить постоянный опрос со стороны сервера и запись в объект при изменении?

Re: Модуль "MegaD"

Добавлено: Ср июн 14, 2017 2:57 pm
Chainik
Я тоже к программированию не имею никакого отношения. В представленном вами методе не увидел обращения к Меге по поводу опроса состояния порта. Код должен быть примерно такой, который я приводил выше.
А что касается вопроса почему сам датчик не шлет информацию при изменении, то вообще все устройства, работающие по протоколу 1-wire, не умеют по своей инициативе сообщать в сеть об этом.
Касательно вопроса о периодическом опросе порта, то можно поступить так же, как указано в конце моего длинного поста на стр.52. Там создается скрипт, который будет перезапускать сам себя через заданное время.

Re: Модуль "MegaD"

Добавлено: Пн июн 19, 2017 8:36 pm
ILGAS
Помогите пожалуйста. метод выполняется 2 раза.
Создал метод, в нем написано

Изображение
добавил метод в модуль megad, убрал действие по умолчанию из девайса и поставил галку "Skip default action"
Изображение
При нажатие на физическую кнопку модуль вызывается 2 раза.
Изображение
помогите найти причину.

Re: Модуль "MegaD"

Добавлено: Пн июн 19, 2017 9:51 pm
Jager
ILGAS писал(а):помогите найти причину.
Я вижу два варианта:
1. В настройках порта MegaD выбран режим P&R, соответственно метод вызывается при замыкании и при размыкании контакта.
2. Вы прописали say и в метод класса и в метод объекта ПР1_дверь.

Re: Модуль "MegaD"

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