данные - объект датчик - объект комната

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

данные - объект датчик - объект комната

Сообщение Bagir » Пн авг 25, 2014 2:43 am

Класс tempSensors. Почему в коде метода tempChanged указано $params['t'], в то время как свойство его температуры temp?
Я связал 1-Wire датчик с объектом класса tempSensors. История пишется, графики рисуются. Но у этого объекта есть еще свойство LinkedRoom. Я так понимаю, это сделано для того, чтобы сливать нужные данные в объекты комнат. Я создал объект комната класса Rooms. У него есть свойство Temperature. На сколько я понял, при изменении температуры объекта датчика, она должна передаваться в объект комната. Но это не происходит. Код в методе tempChanged объекта датчика заканчивается на

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

if (!isset($params['t'])) {
 return;
}
И это правильно, т.к. параметр 't' действительно не задан. А кем он вообще должен быть задан? Если речь идет о привязке к 1-wire датчику, так там свойство temp. И исполняется ли вообще метод tempChanged при изменении температуры при привязке к датчику 1-wire? Или же tempChanged со своим параметром 't' задуман для других замыслов?
Пока что я не понимаю этой конструкции с температурой. Расскажите пожалуйста!
И еще вопрос: где правильнее хранить историю температуры. В объекте датчик или в объекте комната?
Если при проверке в 5 минут я укажу хранение данных 365 дней, сильно база распухнет?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: данные - объект датчик - объект комната

Сообщение Ivan » Пн авг 25, 2014 8:02 am

Уже обсуждалось

't' нужно для тех у кого температура передаётся через URL от ардуины. У кого через 1-Wire нужно переписывать скрипт. Смотри в моём Connect
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: данные - объект датчик - объект комната

Сообщение Bagir » Пн авг 25, 2014 2:12 pm

Незная многих моментов, я не могу сам разобраться :(
Сейчас у меня есть 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
Конечно я могу наколхозить и сам, без точного понимания ситуации, но все же, расскажите пожалуйста как это будет правильно. А если это обсуждалось, то можно ссыль. Я толком не нашел поиском.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: данные - объект датчик - объект комната

Сообщение Bagir » Ср авг 27, 2014 2:02 pm

Общие размышления о датчиках и реле. Пишу как я представляю это сейчас, и чтобы знающие люди меня поправили. Объекту датчик можно передать данные двумя способами. Связанное свойство например с 1-Wire, Z-Wave и т.п. Или же через http://127.0.0.1/objects/?object=ts_off ... anged&t=25
С объектом реле все тоже самое. Если его свойство status связано, то когда мы его меняем, система отправит запрос и связанной реле. А в случае с http, когда связанной железки нету, мы настраиваем методы turnOff и turnOn, добавляя туда какое то действие.
Уточните картину пожалуйста. Полное понимание этого, возможно, даст мне ответ на предыдущий вопрос. Я так еще и не знаю, как быть с объектом термодатчика, связанным с 1-Wire
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: данные - объект датчик - объект комната

Сообщение sergejey » Ср авг 27, 2014 2:21 pm

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 по-умолчанию ничего и не делает, кроме того что меняет статус.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: данные - объект датчик - объект комната

Сообщение Bagir » Ср авг 27, 2014 2:27 pm

Да, мне просто сейчас надо более менее понять суть, чтобы заведомо не уйти по кривой тропинке в лес и дебри ))
У меня сейчас объект датчика температуры связан с датчиков 1-Wire. Температура обновляется, но в LinkedRoom не передается. Я понимаю, почему это не происходит, т.к. при обновлении температуры не запускается метод tempChanged, в котором и происходит передача данных. Как быть?
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: данные - объект датчик - объект комната

Сообщение Ivan » Ср авг 27, 2014 3:00 pm

Уже писал. Повторюсь.

Тот скрипт что используется по умолчанию не подходит для 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. Я уже писал Сергею об этом. Желательно как то стандартизировать подходы обновления температуры с разных мест. Но т.к движок позволяет гибко это делать у каждого свои подходы
За это сообщение автора Ivan поблагодарил:
Bagir (Ср авг 27, 2014 3:05 pm)
Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: данные - объект датчик - объект комната

Сообщение sergejey » Ср авг 27, 2014 3:02 pm

Bagir писал(а):Да, мне просто сейчас надо более менее понять суть, чтобы заведомо не уйти по кривой тропинке в лес и дебри ))
У меня сейчас объект датчика температуры связан с датчиков 1-Wire. Температура обновляется, но в LinkedRoom не передается. Я понимаю, почему это не происходит, т.к. при обновлении температуры не запускается метод tempChanged, в котором и происходит передача данных. Как быть?
Пожалуй, самое простое это будет в настройках свойства температуры (для класса, а не для отдельного объекта) указать запуск метода tempChanged при изменении.
За это сообщение автора sergejey поблагодарил:
Bagir (Ср авг 27, 2014 3:18 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: данные - объект датчик - объект комната

Сообщение Ivan » Ср авг 27, 2014 3:04 pm

-
Последний раз редактировалось Ivan Ср авг 27, 2014 3:16 pm, всего редактировалось 1 раз.
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: данные - объект датчик - объект комната

Сообщение Bagir » Ср авг 27, 2014 3:05 pm

Я помню Ваш ответ! Но полностью не понимая ситуации, лезть с монтажкой в часовой механизм просто побоялся. У меня была такая мысль, переписать tempChanged и при изменении свойства запускать этот метод. Пока нету хоть какой то базы знаний, принимать такие решения еще рано. Спасибо большое за помощь!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить