Страница 1 из 2
данные - объект датчик - объект комната
Добавлено: Пн авг 25, 2014 2:43 am
Bagir
Класс
tempSensors. Почему в коде метода
tempChanged указано
$params['t'], в то время как свойство его температуры
temp?
Я связал 1-Wire датчик с объектом класса
tempSensors. История пишется, графики рисуются. Но у этого объекта есть еще свойство
LinkedRoom. Я так понимаю, это сделано для того, чтобы сливать нужные данные в объекты комнат. Я создал объект комната класса
Rooms. У него есть свойство
Temperature. На сколько я понял, при изменении температуры объекта датчика, она должна передаваться в объект комната. Но это не происходит. Код в методе
tempChanged объекта датчика заканчивается на
И это правильно, т.к. параметр
't' действительно не задан. А кем он вообще должен быть задан? Если речь идет о привязке к 1-wire датчику, так там свойство
temp. И исполняется ли вообще метод
tempChanged при изменении температуры при привязке к датчику 1-wire? Или же
tempChanged со своим параметром
't' задуман для других замыслов?
Пока что я не понимаю этой конструкции с температурой. Расскажите пожалуйста!
И еще вопрос: где правильнее хранить историю температуры. В объекте датчик или в объекте комната?
Если при проверке в 5 минут я укажу хранение данных 365 дней, сильно база распухнет?
Re: данные - объект датчик - объект комната
Добавлено: Пн авг 25, 2014 8:02 am
Ivan
Уже обсуждалось
't' нужно для тех у кого температура передаётся через URL от ардуины. У кого через 1-Wire нужно переписывать скрипт. Смотри в моём Connect
Re: данные - объект датчик - объект комната
Добавлено: Пн авг 25, 2014 2:12 pm
Bagir
Незная многих моментов, я не могу сам разобраться

Сейчас у меня есть 1-Wire датчик. В его настройках я указал связанный объект
ts_office и его свойство
temp и период обновления. Температура пишется в свойство датчика, но его метод
tempChanged не выполняется. И соответственно не устанавливается свойство
ts_office.alive и
ts_office.aliveTimeOut. И данные не уходят в объект
LinkedRoom. То есть объект датчика как бы и не живой, но температура обновляется. Наверное при работе 1-wire не использует метод
tempChanged, и данные напрямую просто записываются в свойство объекта. Поправите если говорю ерунду.
Конечно можно самому запустить метод
http://127.0.0.1/objects/?object=ts_off ... anged&t=20
и тогда данные будут записаны и переданы объекту
LinkedRoom. Как я понял, сделано это для получения температуры от других датчиков по http://, но тогда эта температура попытается записаться в датчик 1-wire, и конечно я получаю ошибку
Notice: Read only value set#1
Конечно я могу наколхозить и сам, без точного понимания ситуации, но все же, расскажите пожалуйста как это будет правильно. А если это обсуждалось, то можно ссыль. Я толком не нашел поиском.
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 2:02 pm
Bagir
Общие размышления о датчиках и реле. Пишу как я представляю это сейчас, и чтобы знающие люди меня поправили. Объекту датчик можно передать данные двумя способами. Связанное свойство например с 1-Wire, Z-Wave и т.п. Или же через
http://127.0.0.1/objects/?object=ts_off ... anged&t=25
С объектом реле все тоже самое. Если его свойство status связано, то когда мы его меняем, система отправит запрос и связанной реле. А в случае с http, когда связанной железки нету, мы настраиваем методы turnOff и turnOn, добавляя туда какое то действие.
Уточните картину пожалуйста. Полное понимание этого, возможно, даст мне ответ на предыдущий вопрос. Я так еще и не знаю, как быть с объектом термодатчика, связанным с 1-Wire
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 2:21 pm
sergejey
Bagir писал(а):Общие размышления о датчиках и реле. Пишу как я представляю это сейчас, и чтобы знающие люди меня поправили. Объекту датчик можно передать данные двумя способами. Связанное свойство например с 1-Wire, Z-Wave и т.п. Или же через
http://127.0.0.1/objects/?object=ts_off ... anged&t=25
С объектом реле все тоже самое. Если его свойство status связано, то когда мы его меняем, система отправит запрос и связанной реле. А в случае с http, когда связанной железки нету, мы настраиваем методы turnOff и turnOn, добавляя туда какое то действие.
Уточните картину пожалуйста. Полное понимание этого, возможно, даст мне ответ на предыдущий вопрос. Я так еще и не знаю, как быть с объектом термодатчика, связанным с 1-Wire
Если я правильно понял вопрос, то да -- при работе через связанное свойство достаточно менять status. По сути turnOn/turnOff по-умолчанию ничего и не делает, кроме того что меняет статус.
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 2:27 pm
Bagir
Да, мне просто сейчас надо более менее понять суть, чтобы заведомо не уйти по кривой тропинке в лес и дебри ))
У меня сейчас объект датчика температуры связан с датчиков 1-Wire. Температура обновляется, но в LinkedRoom не передается. Я понимаю, почему это не происходит, т.к. при обновлении температуры не запускается метод tempChanged, в котором и происходит передача данных. Как быть?
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 3:00 pm
Ivan
Уже писал. Повторюсь.
Тот скрипт что используется
по умолчанию не подходит для 1Wire
Вам нужно его переписать и в свойстве temp поставить запускать tempChanged
Заменить код в tempChanged
Код: Выделить всё
$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"));
}
Тот код что по умолчанию. Используется при передачи температуры из вне путём запуска tempChanged с параметром "t"
Чаще всего используется при обновлении температуры с Ардуино
p.s. Я уже писал Сергею об этом. Желательно как то стандартизировать подходы обновления температуры с разных мест. Но т.к движок позволяет гибко это делать у каждого свои подходы
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 3:02 pm
sergejey
Bagir писал(а):Да, мне просто сейчас надо более менее понять суть, чтобы заведомо не уйти по кривой тропинке в лес и дебри ))
У меня сейчас объект датчика температуры связан с датчиков 1-Wire. Температура обновляется, но в LinkedRoom не передается. Я понимаю, почему это не происходит, т.к. при обновлении температуры не запускается метод tempChanged, в котором и происходит передача данных. Как быть?
Пожалуй, самое простое это будет в настройках свойства температуры (для класса, а не для отдельного объекта) указать запуск метода tempChanged при изменении.
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 3:04 pm
Ivan
-
Re: данные - объект датчик - объект комната
Добавлено: Ср авг 27, 2014 3:05 pm
Bagir
Я помню Ваш ответ! Но полностью не понимая ситуации, лезть с монтажкой в часовой механизм просто побоялся. У меня была такая мысль, переписать tempChanged и при изменении свойства запускать этот метод. Пока нету хоть какой то базы знаний, принимать такие решения еще рано. Спасибо большое за помощь!