Не требует установки программ или изменения файлов
Модераторы: immortal, newz20
-
PAV
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
-
Благодарил (а):
68 раз
-
Поблагодарили:
94 раза
Сообщение
PAV » Чт июл 03, 2014 10:53 am
Это метод класса sensorTemp общий для всех сенсоров.
Вызывается как правило http запросом вида GET /objects/?object=sensorTemp11&op=m&m=statusChanged&t=25.3
Код: Выделить всё
//$params['t']
$this->setProperty("updated",time());
$this->setProperty("updatedTime",date("d/m/y H:i"));
$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=2;
} elseif ($t<$old_temp) {
$d=1;
} else {
$d=0;
}
$this->setProperty('direction',$d);
$tmax=(int)$this->getProperty("tempMax");
$tmin=(int)$this->getProperty("tempMin");
if ($t > $tmax || $t < $tmin) {
$this->setProperty('alarm',1);
say("Внимание. Критическая температура датчика". $ot, 2);
}else{
$this->setProperty('alarm',0);
}
$linked_room=$this->getProperty("LinkedRoom");
if ($linked_room) {
setGlobal($linked_room.'.Temperature',$t);
}
Последний раз редактировалось
PAV Чт июл 03, 2014 3:58 pm, всего редактировалось 1 раз.
-
Ivan
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
-
Благодарил (а):
49 раз
-
Поблагодарили:
327 раз
Сообщение
Ivan » Чт июл 03, 2014 3:46 pm
Укажите в описании через что у вас идёт запуск метода statusChanged
Я указал в таблице 1-Wire свойство объекта, в скрипте на изменение ничего не указывал. Чтобы выполнялся statusChanged, в свойстве temp класса указал запускать при изменении statusChanged. В итоге скрипт работает частично. То есть выполняется до строчки $params['t'] - понятное дело что это свойство никто не указывал при выполнении скрипта.
В итоге скрипт пришлось переписать. Смотрите у меня в connect
Опишите пожалуйста как и с чем вы использует этот скрипт
-
PAV
- Сообщения: 949
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
-
Благодарил (а):
68 раз
-
Поблагодарили:
94 раза
Сообщение
PAV » Чт июл 03, 2014 3:59 pm
Уточнил
-
Ivan
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
-
Благодарил (а):
49 раз
-
Поблагодарили:
327 раз
Сообщение
Ivan » Чт июл 03, 2014 4:13 pm
Отлично. Сергей тоже это использует. И по умолчанию в системе такой же скрипт. Что вводит в заблуждение тех кто использует его из 1-Wire
Хорошо бы описать и для других вызовов
-
shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
-
Благодарил (а):
67 раз
-
Поблагодарили:
63 раза
Сообщение
shemnik69 » Ср июл 09, 2014 11:52 am
Вопрос по скрипту..
В системе тот же скрипт что и у ВАс Ivan. опрос датчиков идет нормально и как бы претензий нет никак мне не удается увидеть связь параметров
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
$alive_timeout=30*60;
}
Что это отражает? В базе данных? это величина на что влияет?
И еще, по смыслу, каждый датчик логично, применимо например к квартире, "привязывают" к комнатам (зал, кухня тд) а если это объекты за пределами дома (баня и т.п) статус "уровня жизни" у меня всегда зеленый.... а как его увидеть конкретно на каждый датчик ни разберусь.
-
Ivan
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
-
Благодарил (а):
49 раз
-
Поблагодарили:
327 раз
Сообщение
Ivan » Ср июл 09, 2014 1:00 pm
Данная част скрипта проверяет есть ли aliveTimeOut в свойствах объекта, если есть берёт из него если нет берёт по умолчанию 30*60 = 30 мин
То есть через какое время считать что датчик отвалился - обратите внимание, что данные с датчика могут приходить не не меняться в базе, потому что одинаковые, тогда время alive нужно увеличить на время гарантированное максимальное в за которое могут не меняться данные
Я сделал отдельно комнаты, к ним привязываю датчики. А в комнатах уже есть местоположение. От него можно и отталкиваться для вычисления средней температуры объекта.
Кстати вопрос к Сергею: Как из скрипта выбрать объекты из одного класса и определённого местоположения? (Без запросов SQL)
У меня пока 1 объект "Дом". Градусник который на улице я не привязывал к комнатам. Но скоро нужно будет делать несколько объектов
-
sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
-
Благодарил (а):
75 раз
-
Поблагодарили:
1559 раз
-
Контактная информация:
Сообщение
sergejey » Ср июл 09, 2014 2:29 pm
Ivan писал(а):Кстати вопрос к Сергею: Как из скрипта выбрать объекты из одного класса и определённого местоположения? (Без запросов SQL)
Такой функции нет. Можно только по классу с помощью getObjectsByClass("имя_класса"). Она возвращает массив с ID и TITLE объектов.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
Ivan
- Сообщения: 1473
- Зарегистрирован: Сб окт 12, 2013 11:03 pm
-
Благодарил (а):
49 раз
-
Поблагодарили:
327 раз
Сообщение
Ivan » Ср июл 09, 2014 4:55 pm
Тогда придётся добавлять в класс свойство. Объект - и уже ориентироваться по нему. Что я благополучно делаю на проверку статуса checkAlive в скрипте состояния системы.
Pav тоже применяет AlertToSay -
http://smartliving.ru/forum/viewtopic.php?f=13&t=1669 в тех же целях
Опять же вопрос Сергею: Для чего тогда "Местоположение" в объектах?
-
sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
-
Благодарил (а):
75 раз
-
Поблагодарили:
1559 раз
-
Контактная информация:
Сообщение
sergejey » Ср июл 09, 2014 5:01 pm
Ivan писал(а):Опять же вопрос Сергею: Для чего тогда "Местоположение" в объектах?
Для удобства работы в админке. Я часто переключаюсь в режим списка при работе с объектами и тогда удобно отфильтровать объекты по расположению.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги