Изучал примеры в CONNECT и на форуме. Вы как всегда Вы правы. Не нужно делать отдельный класс. Думаю что с Z-Wave будет так же как и с 1-Wire. Но я пока что даже не представляю, как это все будет выглядеть с ардуино. Как доберусь, увижу. Сейчас оставил себе оригинальный tempChanged с оригинальным кодом
Код: Выделить всё
//$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=30*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
if (!isset($params['t'])) {
return;
}
$old_temp=$this->getProperty('temp');
$t=round($params['t'],1);
if ($t>110) return;
$this->setProperty('temp',$t);
if ($params['uptime']) {
$this->setProperty('uptime',$params['uptime']);
}
if ($t>$old_temp) {
$d=1;
} elseif ($t<$old_temp) {
$d=-1;
} else {
$d=0;
}
$this->setProperty('direction',$d);
$linked_room=$this->getProperty("LinkedRoom");
if ($linked_room) {
setGlobal($linked_room.'.Temperature',$t);
}
Создал новый метод valueChanged, куда поместил Ваш код. И связал его вызов с изменением свойства temp
Код: Выделить всё
$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=30*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout);
$linked_room=$this->getProperty("LinkedRoom");
if ($linked_room) {
setGlobal($linked_room.'.Temperature',$this->getProperty("temp"));
}
Получается, что в случае с 1-Wire и как я предполагаю, с Z-Wave тоже, метод tempChanged не будет выполняться. А в случае с ардуино, нужно будет переписать valueChanged на ничего, для конкретного объекта. Вообще то я думаю, что можно сделать и по красивей, но захотелось оставить шаблоны этих двух вариантов.
Вообщем решение на Ваш суд ))